XSLT1.0维护用于生成Id的子节点的计数

时间:2013-05-17 16:05:13

标签: xml xslt xslt-1.0

我想算不上。特定重复父节点的子节点。 我需要这个计数来保持转换后特定元素的id。

以下是我拥有的request.xml的格式

<Party><Notes><Notes><Party>
<Party><Notes><Notes></Party>

转换后的xml应为:

<Attachment id=1></Attachment>
<Attachment id=2></Attachment>
<Attachment id=3></Attachment>
<Attachment id=4></Attachment>

我尝试使用:

<xsl:value-of select="concat('Attachment',count(preceding-sibling::Notes))" />

但它没有给出正确的值。 任何指导都可以帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

您可以使用count(preceding::Notes)+1,但我更喜欢使用xsl:number

示例...

XML (已修复为格式良好)

<request>
    <Party>
        <Notes/>
    </Party>
    <Party>
        <Notes/>
    </Party>
</request>

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="Notes">
        <Attachment>
            <xsl:attribute name="id">
                <xsl:number level="any"/>
            </xsl:attribute>
        </Attachment>
    </xsl:template>

</xsl:stylesheet>

<强>输出

<Attachment id="1"/>
<Attachment id="2"/>