XSLT中的行号

时间:2012-12-06 06:38:01

标签: xml xslt

有一个XML文件包含重复的ID。

我想根据重复的ID添加一些行号。

示例XML文件如下:

<ROOT>
<record1>
        <ID>123</ID>
        <Name>abc</Name>
</record1>
<record2>
        <ID>123</ID>
        <Name>def</Name>
</record2>
<record3>
        <ID>456</ID>
        <Name>ghi</Name>
</record3>
</ROOT>

我需要以下格式::

<ROOT>
<record1>
        <ID>123_1</ID>
        <Name>abc</Name>
</record1>
<record2>
        <ID>123_2</ID>
        <Name>def</Name>
</record2>
<record3>
        <ID>456</ID>
        <Name>ghi</Name>
</record3>
</ROOT>

任何人都可以以正确的方式,如何为此编写XSL?

由于

1 个答案:

答案 0 :(得分:0)

如果将此模板添加到XSLT标识转换中,则应该全部设置:

<xsl:template match="ID">
    <xsl:copy>
        <xsl:value-of select"." />
        <xsl:if test="//ID[. = current()]">
              <xsl:value-of select="concat('_', count(preceding::ID[. = current()]) + 1)" />
        </xsl:when>
    </xsl:copy>
</xsl:template>