我想知道是否以及如何使用 XSLT 处理器注册一个 PHP 用户空间函数,该处理器不仅能够获取节点数组,而且能够返回它?
现在 PHP 抱怨使用通用设置将数组转换为字符串:
function all_but_first(array $nodes) {
array_shift($nodes);
shuffle($nodes);
return $nodes;
};
$proc = new XSLTProcessor();
$proc->registerPHPFunctions();
$proc->importStylesheet($xslDoc);
$buffer = $proc->transformToXML($xmlDoc);
例如,要转换的 XMLDocument ( $xmlDoc
) 可以是:
<p>
<name>Name-1</name>
<name>Name-2</name>
<name>Name-3</name>
<name>Name-4</name>
</p>
在样式表中它是这样调用的:
<xsl:template name="listing">
<xsl:apply-templates select="php:function('all_but_first', /p/name)">
</xsl:apply-templates>
</xsl:template>
通知如下:
注意:数组到字符串的转换
我不明白为什么如果函数将数组作为输入也不能返回数组?
正如我所见,我也在尝试其他“函数”名称,php:functionString
但到目前为止所有尝试过的(php:functionArray
和php:functionSet
)php:functionList
都不起作用。
在 PHP 手册中,我可以返回另一个DOMDocument
包含元素,但是这些元素不再来自原始文档。这对我来说没有多大意义。