脚本宝典收集整理的这篇文章主要介绍了如何在带有registerPHPFunctions的XSLT中使用DOMDocumentFragment?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
如果您不熟悉xslt和registerPHPFunctions,请参阅this link for context and preparations.假设按字符串输入,
function XSL_transf($XMl,$xsl) { $xMLdoc = DOMDocument::loadXML($xml); $xsldoc = DOMDocument::loadXML($xsl); $PRoc = new XSLTProcessor(); $proc->registerPHPFunctions(); // here $proc->importStyleSheet($xsldoc); echo $proc->transformToXML($xmldoc); } $xml='<root/>'; //simplest $xsl = <<<'EOB' <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:PHP="http://PHP.net/xsl"> ... HERE COPY/PASTE YOUR XSLT template ... </xsl:stylesheet> EOB;
有用
条款< xsl:copy-of ... />收到DOMElement,DOMDocument和(为什么不呢?)DOMDocumentFragment.
所以,如果我们有一个返回DOMDocument的PHP函数,我们就可以使用它.
function foo1() { $dom = DOMDocument::loadXML('<t> foo <tt val="123"/> bar </t>'); return $dom; }
将foo1调用到模板中,
<xsl:template match="/"> PHP foo1()=<xsl:copy-of select="PHP:function('foo1')" /> </xsl:template>
结果(您可以使用XSL_transf($xml,$xsl)来查看):
<t> foo <tt val="123"/> bar </t>
它不起作用
function foo1() { $dom = new DOMDocument; $tmp = $dom->createDocumentFragment(); $tmp->apPEndXML('<t> foo <tt val="123"/> bar </t> test'); return $tmp; }
结果为空.没有错误消息,但没有结果.
以上是脚本宝典为你收集整理的如何在带有registerPHPFunctions的XSLT中使用DOMDocumentFragment?全部内容,希望文章能够帮你解决如何在带有registerPHPFunctions的XSLT中使用DOMDocumentFragment?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。