如何使用xsl更改名称子节点

时间:2010-09-19 13:55:43

标签: xml

如果使用xsl将子节点的名称改为父节点并应用于所有节点,如何使用xsl

示例

< items >
< items >3</items >
</items >

< items >
< parentname-"inner"childname >3</parentname-"inner"childname >
</items >

非常感谢

1 个答案:

答案 0 :(得分:3)

如果我正确理解了您的问题,并且您希望从示例XML生成以下XML:

<?xml version="1.0" encoding="UTF-16"?>
<items>
<items-items>3</items-items>
</items>

然后可以使用以下XSLT

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" />

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

<!--Match elements who's name is equal to it's parent -->
<xsl:template match="*[name()=name(..)]">
    <!--create an element using the name of the parent element, followed by a "-", followed by the matched element name -->
    <xsl:element name="{name(..)}-{name()}">
        <xsl:apply-templates select="@*|node()"/>
    </xsl:element>
</xsl:template>

</xsl:stylesheet>