PHP XSLTProcessor并将数据传递到PHP函数

PHP XSLTProcessor并将数据传递到PHP函数,php,xml,xslt,Php,Xml,Xslt,我需要从XSLTProcessor中注册的PHP函数中访问一些XSL数据。我找到了如何将当前节点传递到函数中 XSL: 好的,这部分很好用。问题在第二部分:我需要将调用点上可见的所有XSL变量传递到PHP函数中。或者,我需要以某种方式从PHP函数中按名称获取XSL变量值。这就是问题所在——我找不到如何做到这一点。可能是一些特殊的XPath请求?还是一些特殊的功能?还是什么特别的把戏?或者其他什么?您在这里特别受作用域的限制,因此您的PHP函数无法看到“外部”。您需要将所需的变量作为参数传递。no

我需要从XSLTProcessor中注册的PHP函数中访问一些XSL数据。我找到了如何将当前节点传递到函数中

XSL:


好的,这部分很好用。问题在第二部分:我需要将调用点上可见的所有XSL变量传递到PHP函数中。或者,我需要以某种方式从PHP函数中按名称获取XSL变量值。这就是问题所在——我找不到如何做到这一点。可能是一些特殊的XPath请求?还是一些特殊的功能?还是什么特别的把戏?或者其他什么?

您在这里特别受作用域的限制,因此您的PHP函数无法看到“外部”。您需要将所需的变量作为参数传递。
node()
将传递一个包含当前节点的子节点(元素、文本节点等,但不是属性)的集,您希望对当前节点本身使用
。好吧,好吧,但是可能有一些技巧可以将所有XSL变量作为节点列表传递(由于一些复杂的XPath请求)或其他什么?
<xsl:value-of select="php:function('foo', node())" />
function foo($node)
{
    # Here we go, we got DOMNode array and as a consequence - DOMDocument
    var_dump($node);
}