ホームページ >バックエンド開発 >PHPチュートリアル >XSLTProcessor_PHPチュートリアルのregisterPHPFunctions以降でphp関数が呼び出せない問題の解決方法

XSLTProcessor_PHPチュートリアルのregisterPHPFunctions以降でphp関数が呼び出せない問題の解決方法

WBOY
WBOYオリジナル
2016-07-13 10:55:32959ブラウズ

XSLT は、XML を変換するための非常に便利なツールです。XSLTProcessor を通じて PHP に実装されており、XSLTProcessor インスタンスの registerPHPFunctions メソッドを呼び出すだけで済みます。 XSLT 関数で PHP を使用すると、XSLT の処理能力が大幅に向上します。

ただし、XSLT で PHP 関数を使用すると、多くの人が次の 2 つのエラーに遭遇します:

(1) 警告: XSLTProcessor::transformToXml(): xmlXPathCompiledEval: 1 個のオブジェクトが残っています o

スタック
(2) PHP 警告: XSLTProcessor::transformToXml(): xmlXPathCompOpEval: function func
….
の未定義のプレフィックス php にバインドされています

コードは次のとおりですコードをコピー EOB; $xmldoc = DOMDocument::loadXML($xml); $xsldoc = DOMDocument::loadXML($xsl);
$proc = 新しい XSLTProcessor(); $proc->registerPHPFunctions(); $proc->importStyleSheet($xsldoc); echo $proc->transformToXML($xmldoc); ?>




実際には、PHP 名前空間を定義していないためにこのエラーが発生します。
に追加するだけで済みます。


コードは次のとおりです

コードをコピー



xmlns:xsl="http://www.w3.org/1999/XSL/Transform">



この問題は、
に xmlns:php="http://php.net/xsl" を追加することで解決できます。つまり



コードは次のとおりです

コードをコピー


xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
$xml = << <すべてのユーザー>
ボブ
ジョー EOB; $xsl = << xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <本文>

ユーザー


                                                                              select="php:function('ucfirst',string(uid))"/>
xmlns:php="http://php.net/xsl">

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632243.html技術記事 XSLT は、XML を変換するための非常に便利なツールです。XSLTProcessor を通じて PHP に実装されており、XSLT には多くの便利な機能が組み込まれています。同時に、必要なのは XSLTProcessor インスタンスを呼び出すだけです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。