我正在尝试编写EXSLT函数,但由于某种原因它似乎没有返回结果。该函数应该在另一个文档中查找节点:
<func:function name="toc:element">
<xsl:param name="id" />
<xsl:for-each select="$toc">
<func:result select="key('id', $id)" />
</xsl:for-each>
</func:function>
使用xsl:message
我可以看到它确实收到有效的$id
,key()
返回单个节点;但是当我从另一个模板调用它时,它似乎没有产生结果。
环境:libxml2
/ libxslt
,不确定如何查看版本;我在lxml
v3.2.3。
答案 0 :(得分:0)
找到一个解决方案:如果我添加一个中间变量,一切正常。
<func:function name="toc:element">
<xsl:param name="id" />
<xsl:for-each select="$toc">
<xsl:variable name="result" select="key('id', $id)" />
<func:result select="$result" />
</xsl:for-each>
</func:function>
显然,函数结果使用原始上下文进行评估。