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

时间:2013-06-11 12:35:04

标签: xml xslt

我有xml部分:

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

我需要通过xslt转换:

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

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用“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>