我PHP应用程序需要出口到一系列不同的XML格式:我应该使用XSLT或native PHP?

StackOverflow https://stackoverflow.com/questions/818679

  •  03-07-2019
  •  | 
  •  

我PHP应用程序将需要能够出口(和进口)的范围内不同的数据格式,主要是基于XML的。

我有的选择

  • 在PHP,使用DOM出口到一些基于XML格式,是一个超集的所有数据所需要的其他人,并创建一个独立的XSLT的样式表中的每个输出格式,我要支持,运行DOM输出通过PHP的XSL扩展。

  • 不使用PHP的XSL扩展,但实现每个输出格式作为一类,在本地的PHP这意味着直接来自内部的对象/结构给定使用DOM XML格式,每个这样的类实现相同的接口,使他们可以互换的。

该应用程序将使用由大学和一个工具,管理人记录的各种方式和进口/出口从各种来源,如人力资源系统,等等。我会实现设定的输入和输出格式自己,但是在今后有的是机会,有人使用这将要修改,以支持他们自己的格式。

一个原因,我在考虑不使用XSLT是,如果任何其他人是要保持程序,在未来比其他的我来说,这似乎很少有人甚至不知道XSLT-有很多人似乎都知道PHP.

另一个是,第二似乎是一个更有效率和'programmery的解决方案,并更加灵活在这个意义上,我们能够输出和进口自非XML格式,如CSV或列于案文只是作为容易地负荷过重的必要的零件的类,不,就往往是必要的。

第三个,但是非常小型和微不足道的原因是,PHP需要重新编译为使XSL而DOM是默认,因此它将是一个微小的更便于携带。但是这是不太多的一个问题,因为这很容易重新配置PHP.

什么你认为我的推理?

有帮助吗?

解决方案

我个人认为那是你的决定应该基于强烈的事实你如何判断XSLT知识在你的目标受众。如果很明显,XSLT是某种"未知领域"的人之间具有工作的系统(包括自己的),可以排除XSLT-解决方案。需要努力学习XSLT会否定的优点(非常优雅-尤其是当transforming XML XML,没有必要的混乱与PHP码,没有PHP所需的知识),你会得到XSLT-解决方案。

也许是一个双向的解决方案可能是正确的事情。你可以建立一个适配器系统的进口和出口,使用XSLT XML数据格式和提供使用能力PHP代码,所有数据格式不是基于XML的。这个方法每一个开发商可以选择的方式,他们更舒服。

interface My_DataConverter_Interface
{
    /**
          * @param string                $file
          * @return My_DataObject
          */
    function import($file);

    /**
          * @param My_DataObject $data
          * @param string                $file
          */
    function export(My_DataObject $data, $file);
}

abstract class My_DataConverter_Xslt implements My_DataConverter_Interface
{ /* ... */ }

class My_DataConverter_XmlFormat1 extends My_DataConverter_Xslt
{ /* ... */ }

class My_DataConverter_XmlFormat2 extends My_DataConverter_Xslt
{ /* ... */ }

class My_DataConverter_Csv implements My_DataConverter_Interface
{ /* ... */ }

其他提示

我认为你的理由是健全的和这是我将去。

基本上你在谈论什么是桥/器/幕墙的类。它们是(恕我直言)更加灵活和更易于理解比XSL模板。

第三个原因是不是真的一个,因为XSL支持涉及没有超过取消注释PHP扩展。

我也很高兴见到你想要做到这一通过DOM扩展(或相等的图书馆),而不是编写XML作为文本,其中介绍了所有的逃避问题以及诸如此类的东西你会避免你的方式。

我个人也认为,XSL模板更加脆弱而变更(由于他们有更神秘的绝大多数的程序员)所以,如果你的超集格式没有变化(这,让我们面对它,它会)你就可能需要改变所有的模板。当然你可能有这样做的代码也但代码很可能会更容易维护。

有趣的问题。

这两个解决方案将工作,我猜你知道这不过。

我可能会去的编码解决方案我自己。但也许这就是做XSLT给我一个头痛的问题。

有一个上到XSLT这就是你可以要求他们生产的人给你的未改变XML..

如果你总是会制造他们,那么它可能并不重要和编码解决方案将会更容易维持的大部分时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top