PHP和XSLT:扩展处理器

时间:2012-09-12 20:39:34

标签: php xslt

我需要使用自己的标签和函数在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)”。谢谢!

1 个答案:

答案 0 :(得分:0)

PHP使用libxslt作为其默认处理器,libexslt作为其扩展处理器。以下是API文档:

此外,libxslt已经支持eval extension,可能会出于您的目的。

还有通过xsl:processing-instruction提供的内置宏,它们与PHP的速记分隔符相匹配:

registerPHPFunctions方法。

转换可以将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结果并使用回调返回结果。

<强>参考