使用xslt转换删除XmlNodes

时间:2009-11-28 16:39:11

标签: xml xslt

我需要从xml文档中删除一些xml节点。来源是

<root>
    <customElement>
        <child1></child1>
        <child2></child2>
    </customElement>
    <child3></child3>
    <child4></child4>
</root>

结果应该是

<root>
    <child1></child1>
    <child2></child2>
    <child3></child3>
    <child4></child4>
</root>

正如您所看到的,只删除了'customElement'元素,但子元素仍然是结果文档的一部分。 我怎么能用xslt转换来做到这一点。

1 个答案:

答案 0 :(得分:2)

这是一个简单的解决方案:

<?xml version="1.0" encoding="UTF-8"?>
<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" omit-xml-declaration="no"/>

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

<!-- here we specify behavior for the node to be removed -->
<xsl:template match="customElement">
   <xsl:apply-templates select="@*|node()"/>
</xsl:template>

</xsl:stylesheet>