繁体   English   中英

如何使用 XSLT 重命名 XML 标签

[英]How do I rename XML tags using XSLT

这是我的 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>

我想将目录中的 NAME 标记替换为 CATALOG-NAME,并将 CD 中的 NAME 标记替换为 CD-NAME,这应该使我的 xml 看起来像这样-

<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>

对要重命名的元素使用带有覆盖的标识转换:

<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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM