How do I rename XML tags using XSLT

27,962

Use the identity transform with overrides for the elements you want to rename:

<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="CD/NAME">
        <CD-NAME><xsl:apply-templates select="@*|node()" /></CD-NAME>
    </xsl:template>
    <xsl:template match="CATALOG/NAME">
        <CATALOG-NAME><xsl:apply-templates select="@*|node()" /></CATALOG-NAME>
    </xsl:template>
</xsl:stylesheet>
Share:
27,962
Srinivas
Author by

Srinivas

Updated on August 06, 2022

Comments

  • Srinivas
    Srinivas almost 2 years

    This is my XML-

    <CATALOG>
        <NAME>C1</NAME>
        <CD>
            <NAME>Empire Burlesque</NAME>
            <ARTIST>Bob Dylan</ARTIST>
            <COUNTRY>USA</COUNTRY>
            <COMPANY>Columbia</COMPANY>
            <PRICE>10.90</PRICE>
            <YEAR>1985</YEAR>
        </CD>
        <CD>
            <NAME>Hide your heart</NAME>
            <ARTIST>Bonnie Tyler</ARTIST>
            <COUNTRY>UK</COUNTRY>
            <COMPANY>CBS Records</COMPANY>
            <PRICE>9.90</PRICE>
            <YEAR>1988</YEAR>
        </CD>
    </CATALOG>
    

    I want to replace the NAME tag in catalog to CATALOG-NAME and the the NAME tag in CD's to CD-NAME which should make my xml look like this-

    <CATALOG>
        <CATALOG-NAME>C1</CATALOG-NAME>
        <CD>
            <CD-NAME>Empire Burlesque</CD-NAME>
            <ARTIST>Bob Dylan</ARTIST>
            <COUNTRY>USA</COUNTRY>
            <COMPANY>Columbia</COMPANY>
            <PRICE>10.90</PRICE>
            <YEAR>1985</YEAR>
        </CD>
        <CD>
            <CD-NAME>Hide your heart</CD-NAME>
            <ARTIST>Bonnie Tyler</ARTIST>
            <COUNTRY>UK</COUNTRY>
            <COMPANY>CBS Records</COMPANY>
            <PRICE>9.90</PRICE>
            <YEAR>1988</YEAR>
        </CD>
    </CATALOG>