Xslt 将上下文项的属性传递给fn:id()

Xslt 将上下文项的属性传递给fn:id(),xslt,Xslt,我想澄清以下行为。 当使用fn:id并传递作为上下文项子项的@attribute时,我得到了空序列: <xsl:template match="perfRes" mode="perfRes"> <xsl:variable name="listItem" select="$lists//id(@attribute)"/> <xsl:template/> 当传递相同的属性(但作为变量)时,结果是正确的: <xs

我想澄清以下行为。 当使用fn:id并传递作为上下文项子项的@attribute时,我得到了空序列:

   <xsl:template match="perfRes" mode="perfRes">    
            <xsl:variable name="listItem" select="$lists//id(@attribute)"/>
    <xsl:template/>
当传递相同的属性(但作为变量)时,结果是正确的:

<xsl:template match="perfRes" mode="perfRes">   
    <xsl:variable name="attribute" select="@attribute"/>    
    <xsl:variable name="listItem" select="$lists//id($attribute)"/>
<xsl:template/>
所以我假设在第一种情况下,这个@attribute不是指上下文项,而是指其他的东西,指什么

另外,$lists的值是一个文档节点。

我想您希望$lists/idcurrent/@attribute选择匹配perfRes元素的@attribute并将其传递给id函数。您当前的尝试$lists//id@attribute相当于$lists/substant或self::node/id@attribute因此,它在$lists的任何子节点的@attribute上调用id函数