Xml 将迭代编号添加到标记名

Xml 将迭代编号添加到标记名,xml,xslt,Xml,Xslt,我有xml部分: <tag> <tagIn>test</tagIn> <tagIn>test</tagIn> <tagIn>test</tagIn> </tag> 测试 测试 测试 我需要通过xslt转换获得: <tag> <tagIn1>test</tagIn1> <tagIn2>test</ta

我有xml部分:

<tag>
    <tagIn>test</tagIn>
    <tagIn>test</tagIn>
    <tagIn>test</tagIn>
</tag>

测试
测试
测试
我需要通过xslt转换获得:

  <tag>
    <tagIn1>test</tagIn1>
    <tagIn2>test</tagIn2>
    <tagIn3>test</tagIn3>
</tag>

测试
测试
测试
我该怎么做呢?

您可以尝试一种“身份转换”,并为“tagIn”指定一条特殊规则。
大概是这样的:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="tagIn">
        <xsl:element name="{concat('tagIn', count(preceding-sibling::tagIn)+1)}" >
            <xsl:apply-templates />
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

将生成以下输出:

<tag>
        <tagIn1>test</tagIn1>
        <tagIn2>test</tagIn2>
        <tagIn3>test</tagIn3>
</tag>

测试
测试
测试