EXSLT函数(在lxml中)不返回任何结果

时间:2013-09-30 05:20:54

标签: xslt lxml exslt

我正在尝试编写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我可以看到它确实收到有效的$idkey()返回单个节点;但是当我从另一个模板调用它时,它似乎没有产生结果。

环境:libxml2 / libxslt,不确定如何查看版本;我在lxml v3.2.3。

中使用它们

1 个答案:

答案 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>

显然,函数结果使用原始上下文进行评估。