3

独自のタグと関数を使用して、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リポジトリに移動され、PHP5.0.0以降はPHPにバンドルされていません。」 。さて、私はpecl.php.netに移動しています->パッケージの検索->XSLT->結果が見つかりません->o_O

したがって、良いAPIは非推奨になり、悪いAPIは私のニーズを満たしていないようです。あなたはみんなに何を勧めることができますか?上記の「2)」のように拡張またはオーバーライドできるすべてのものを拡張またはオーバーライドできるPHPXSLTプロセッサーが必要です。ありがとう!

4

1 に答える 1

0

PHP はlibxslt、デフォルト プロセッサおよびlibexslt拡張プロセッサとして を使用します。API ドキュメントは次のとおりです。

さらに、libxsltすでに目的に役立つ可能性のあるeval 拡張機能をサポートしています。

xsl:processing-instructionPHP の省略形の区切り文字と一致する組み込みマクロも利用できます。

そして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 の結果を計算し、コールバックを使用して結果を返す外部変換にリンクします。

参考文献

于 2014-04-17T15:30:21.943 に答える