在不久的将来有什么机会看到像 saxon for php 这样的 XSLT 2.0 处理器?
6 回答
这并不完全正确。
如果您在 Windows 平台上运行 PHP,那么有一个相对容易配置的 AltovaXML XSLT 2.0 处理器扩展... http://sourceforge.net/projects/xslt2processor/
如果您在 Linux 上运行 PHP,则需要安装 PHP/Java Bridge。这涉及运行一个包含如 Apache/Tomcat 的 Java servlet,并且非常复杂。完成这项工作还需要一些相对复杂的混合 java/php 代码。如果您有兴趣,我可以发布更多详细信息。
在最近的将来?没有任何。
PHP5 完全依赖LibXSLT进行 XSLT 处理(Sablotron 已退出),并且没有计划在此库中支持 XSLT 2.0。
最后,对这个问题有一个肯定的回答。
就在今天,Michael Kay 博士宣布了Saxon/C。
有关更多信息,请参阅:https ://stackoverflow.com/a/20275114/36305
XSLT2.o
到目前为止,PHP还没有支持,使用 XSLT2.0 的唯一选择是使用基于 Java 的 SAXON,因此您将不得不使用 PHP XSLT2.0 处理器之类的东西,请参阅此链接:http: //sourceforge.net /项目/xslt2处理器/
XML_XSLT2Processor
是一个 PHP 类,它允许您使用 SAXON 或 AltovaXML 在 PHP 中执行 XSLT 2.0 转换。
PHP 使用 LibXML2 来实现所有 XML 类。它非常快速和稳定,但今天(2013 年)只支持 XPath1 和 XSLT1……也许社区只需要这个更快更简单的解决方案,而不需要 XSLT2 的强大功能(参见“option0”)。
option0:尝试使用更好的MVC分离!
...在 MVC 上下文中用作视图的许多模板不需要 XSLT2 的功能:请参阅 很好的解释为什么。了解一些优秀的 PHP 项目如何使用 XSLT1
选项1:尝试非主流实现
正如@collapsar 在这个类似问题上所展示的那样,有一个开源开发来扩展经典的LibXML2,它具有 XSLT2 和 XPath2 的一些功能。见 http://www.explain.com.au/libx/
PHP 社区还没有动力完成这一演变……为什么?也许只是害怕失去一些性能和稳定性。可能只是缺少完成任务的人力,主要是在一个PHP驱动。
选项 2:使用 PHP 函数/连接授权 XSLT1 或 XPath1
通过将 PHP 函数注册到 XPath1 或 XSLT1中,请参阅此处的常见问题示例。我在我的项目中使用这个解决方案。