2

我想数数。特定重复父节点的子节点。我需要这个计数来维护转换后特定元素的 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))" />

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

4

1 回答 1

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"/>
于 2013-05-17T16:18:10.323 回答