XSLT 2.0节点变量按属性选择

时间:2014-11-18 13:48:00

标签: xml xslt

XML文件:

<XML>
    <Item ID = "test1"></Item>
    <Item ID = "test2"></Item>
</XML>

结果:

<XML>
    <Item ID = "TEST01"></Item>
    <Item ID = "TEST02"></Item>
</XML>

在我的XSLT 2.0文件中,如果currentID等于OldID,我希望获取变量的NewID,以便使用预定义的NewID更改属性值。

<xsl:variable name="Items">
        <Item OldID="test1" NewID = "TEST01"></Item>
        <Item OldID="test2" NewID = "TEST02"></Item>
</xsl:variable>   

<xsl:template match="XML">
    <xsl:copy>
        <xsl:apply-templates />         
    </xsl:copy> 
</xsl:template>

<xsl:template match="Item">
    <xsl:copy-of select="@*[name()!='ID']" />
        <xsl:attribute name="ID">
            <xsl:value-of select="$Items/Item[@OldID = @ID]/@NewID"/>
        </xsl:attribute>
    </xsl:copy>
</xsl:template>

1 个答案:

答案 0 :(得分:1)

尝试:

<xsl:value-of select="$Items/Item[@OldID = current()/@ID]/@NewID"/>

-
附:建议阅读:http://www.w3.org/TR/xslt20/#key