我需要使用自己的标签和函数在PHP中扩展XSLT处理器。我发现了一些API,但这些API仍然不是我需要的。
1)http://php.net/manual/ru/book.xsl.php - 非常简单的API,但我只能扩展函数(registerPHPFunctions),而不是标签。
2)http://www.php.net/manual/en/ref.xslt.php - 很简单,我可以扩展我需要的任何东西(xslt_set_sax_handlers),但是,我们继续 - 另一个问题。简介(http://www.php.net/manual/en/intro.xslt.php)说:“此扩展已移至»PECL存储库,自PHP 5.0.0起不再与PHP捆绑在一起。” 。好的,我正在浏览pecl.php.net - >搜索包 - > XSLT - >未找到结果 - > O_O
因此,看起来好的API已被弃用,而糟糕的API无法满足我的需求。你能推荐什么人?我需要一个PHP XSLT处理器,我可以扩展或覆盖可以扩展或覆盖的所有内容,如上面的“2)”。谢谢!
答案 0 :(得分:0)
PHP使用libxslt
作为其默认处理器,libexslt
作为其扩展处理器。以下是API文档:
此外,libxslt
已经支持eval extension,可能会出于您的目的。
还有通过xsl:processing-instruction
提供的内置宏,它们与PHP的速记分隔符相匹配:
转换可以将XPath表达式作为参数传递给自定义命名空间中的函数:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:js="urn:livescript"
extension-element-prefixes="js"
>
<xsl:variable name="source" select="//"/>
<xsl:template match="json">
<xsl:value-of select="livescript:JSON($source)"/>
</xsl:template>
</xsl:stylesheet>
该函数链接到外部转换,该转换计算XPath结果并使用回调返回结果。
<强>参考强>