XSLT 是一个非常方便的转换 XML 的工具,PHP 里面是通过 XSLTProcessor 来实现;XSLT 中内置了许多有用的函数,同时,只需要调用 XSLTProcessor 实例的 registerPHPFunctions 方法,我们就可以在 XSLT 中直接使用 PHP 的函数,这大大增强了 XSLT 的处理能力。
但是,在 XSLT 中使用 PHP 函数时,很多人会遇到如下两种错误:
(1) Warning: XSLTProcessor::transformToXml(): xmlXPathCompiledEval: 1 objects left o
n the stack.
(2)PHP Warning: XSLTProcessor::transformToXml(): xmlXPathCompOpEval: function func
tion bound to undefined prefix php in ….
代码如下 |
复制代码 |
$xml =
bob
joe
EOB;
$xsl =
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Users
select="php:function('ucfirst',string(uid))"/>
|
EOB;
$xmldoc = DOMDocument::loadXML($xml);
$xsldoc = DOMDocument::loadXML($xsl);
$proc = new XSLTProcessor();
$proc->registerPHPFunctions();
$proc->importStyleSheet($xsldoc);
echo $proc->transformToXML($xmldoc);
?>
|
其实,出现这种错误,是因为我们没有定义 PHP namespace ,只需要在
代码如下 |
复制代码 |
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
中增加 xmlns:php="http://php.net/xsl" 就能解决此问题, 即
代码如下 |
复制代码 |
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:php="http://php.net/xsl">
|
http://www.bkjia.com/PHPjc/632243.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632243.htmlTechArticleXSLT 是一个非常方便的转换 XML 的工具,PHP 里面是通过 XSLTProcessor 来实现;XSLT 中内置了许多有用的函数,同时,只需要调用 XSLTProcessor 实例...
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn