【发布时间】:2011-09-19 19:55:48
【问题描述】:
我正在使用 PHP XML 和 XSL 来生成文档。如果您熟悉 PHP 实现,您可能知道 XSL 函数 tokenize(string,pattern) 不可用。我正在尝试在 PHP 中实现该函数,以便可以像这样在 XSL 中调用它
<xsl:value-of select="php:function('tokenize','aaa bbb ccc',' ')[last()]"/>
应该产生'ccc'
问题是我找不到将由简单字符串组成的节点集合返回到 XSL 的方法。当我尝试发送 DOMNodeList 时,我收到“无法将 PHP 对象转换为 XPath 字符串”错误。 PHP 手册中没有记录在 PHP 中编写 XSL 扩展函数的技术。那里的一些大师可以对此有所了解吗?
这是我目前的工作。我可以在 XSL 中执行以下操作
<xsl:value-of select="php:function('tokenizeIntoXML',$stop_at_class,' ')/node()[last()]"/>
使用这个 PHP 函数
function tokenizeIntoXML($string, $delimiter)
{
$ret = null;
$toks = explode($delimiter, $string);
if(!empty($toks))
{
$xml = new DomDocument();
$xml -> loadXML("<result/>");
foreach($toks as $t)
{
$xml -> documentElement -> appendChild(new DOMText($t));
}
return $xml -> documentElement;
}
return $ret;
}
【问题讨论】: