XSLT 2.0 PHP支持。何时推出?

7
在不久的将来,是否有可能看到像Saxon这样的XSLT 2.0处理器适用于PHP?

如果需要的话,您可以将XSLT处理外包给外部XSLT 2.0处理器... - Tomalak
在我看来,“永远不要使用XSLT 1.0处理器的性能”... 对于中间件和数据交换,比如Gnome项目,用户需要性能,并且需要执行单个任务(例如旧DTD验证和简单的XSLT过滤器)。对于数据库应用程序(例如考虑PostgreSQL缺乏xQuery),PHP和公共软件社区需要发展并且必须证明开源投资的合理性,以对抗这里所显示的现有选项。 - Peter Krauss
好消息:请查看:https://dev59.com/xUzSa4cB1Zd3GeqPkCcd#20275114 - Reza S
6个回答

6
这并非完全正确。
如果您在Windows平台上运行PHP,则可以相对容易地配置AltovaXML XSLT 2.0处理器的扩展...http://sourceforge.net/projects/xslt2processor/ 如果您在Linux上运行PHP,则需要安装PHP / Java桥。这涉及运行类似于Apache / Tomcat的Java servlet,而且相当复杂。还需要一些相对复杂的混合java / php代码才能使其正常工作。如果您有兴趣,我可以发布更多详细信息。

@JR:对于未来,请使用注释来回答这种问题(我知道您现在还无法发表评论)。像这样的回答一旦投票就会脱离上下文,并且答案列表会重新排序。 - Tomalak

3

在最近的未来?没有。

PHP5完全依赖于LibXSLT进行XSLT处理(Sablotron已经过时),并且没有计划在此库中支持XSLT 2.0。


3

太棒了,谢谢!但是我希望在两周前就有这个消息,因为我当时正在搜寻类似的内容。不过无论如何,是时候进行重构并升级到xstl 2.0了 :) - Reza S
@RezaSanaie,是的,XSLT 1.0已经有14年的历史了——在互联网时代算是非常古老的了。 - Dimitre Novatchev

1

有一个开源的XSL 2.0转换器在PHP中,可以在github上找到。

此外,支持C/C++和PHP的XSLT 2.0/3.0的Saxon/C版本1.0.0 已发布


1

目前PHP还不支持XSLT2.0,使用SAXON是使用XSLT2.0的唯一选择,因为它是基于Java的,所以您需要像PHP XSLT2.0处理器这样的东西,请参见此链接:http://sourceforge.net/projects/xslt2processor/

XML_XSLT2Processor是一个PHP类,允许您通过使用SAXON或AltovaXML在PHP中执行XSLT 2.0转换。


saxon/c不是基于Java的,它是用C++编写的... http://www.saxonica.com/saxon-c/index.xml 这里是saxon/c的PHP API http://www.saxonica.com/saxon-c/doc/html/index.html#php-api - Jiří Doubravský

0

PHP使用LibXML2来实现所有的XML类。它非常快速和稳定,但是今天(2013年)只支持XPath1和XSLT1... 也许社区只需要这种更快、更简单的解决方案,而不需要XSLT2的强大功能(参见“option0”)。

option0:尝试使用更好的MVC分离!

...许多模板作为MVC上下文中的View不需要XSLT2的强大功能:请参见good explanation why。看看一些优秀的PHP项目如何使用XSLT1。

option1:尝试非主流实现

正如@collapsar在类似问题中所展示的那样,有一个开源项目开发了一些XSLT2和XPath2的强大功能来扩展经典的LibXML2。请参见http://www.explain.com.au/libx/

PHP社区尚未积极推动这种进化...为什么?也许只是害怕失去一些性能和稳定性。或许只是缺乏完成任务的人力资源, 主要是在PHP驱动程序中。

选项2:使用PHP函数/连接增强XSLT1或XPath1

请参见此处的常规解决方法,通过将PHP函数注册到XPath1或XSLT1中的示例。我在我的项目中使用了这个解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接