0

我正在尝试编写一个 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,不知道如何查看版本;我从lxmlv3.2.3 开始使用它们。

4

1 回答 1

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>

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

于 2013-09-30T05:46:29.867 回答