如何使用XSLT 1.0重命名重复的xml元素?

时间:2016-07-14 19:42:44

标签: xslt xslt-1.0

过去几天我一直在尝试但没有运气。我的xml中有2个重复元素(ELM.11)。我想将另一个重命名为(ELM.12)。请看下面的输入。提前谢谢。

INPUT
<ROOT>
    <ELM>
        <ELM.10>ABC</ELM.10>
        <ELM.11>001252016175000006</ELM.11>
        <ELM.11>3796124</ELM.11>
        <ELM.13>
            <TS.1>20160623134857-0400</TS.1>
        </ELM.13>
        <ELM.14>GLB</ELM.14>
        <ELM.15>F</ELM.15>
    <ELM>
</ROOT>

EXPECT OUTPUT
<ROOT>
    <ELM>
        <ELM.10>ABC</ELM.10>
        <ELM.11>001252016175000006</ELM.11>

        <ELM.12>3796124</ELM.12>

        <ELM.13>
            <TS.1>20160623134857-0400</TS.1>
        </ELM.13>
        <ELM.14>GLB</ELM.14>
        <ELM.15>F</ELM.15>
    <ELM>
</ROOT>

1 个答案:

答案 0 :(得分:0)

这个问题有点含糊不清。如果我按字面意思阅读,答案很简单:

XSLT 1.0

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

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

<xsl:template match="ELM.11[2]">
    <ELM.12>
        <xsl:apply-templates select="@*|node()"/>
    </ELM.12>
</xsl:template>

</xsl:stylesheet>