XML :
<tag1>
<tag2>
<tag2>
</tag2>
<tag2>
</tag2>
<tag2>
</tag2>
</tag2>
</tag1>
我有以上类型的xml。 tag2的父节点,tag2内有多个tag2子节点。我想从xml中删除父tag2节点。我怎么能这样做?
我现在想要下面
<tag1>
<tag2>---remove
<tag2>
</tag2>
<tag2>
</tag2>
<tag2>
</tag2>
</tag2>--remove
</tag1>
答案 0 :(得分:2)
这是一个可能的XSL:
<?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" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="tag2[tag2]">
<xsl:apply-templates select="node()"/>
</xsl:template>
</xsl:stylesheet>
简要说明:
<xsl:template match="@* | node()">...
:身份模板。此模板将应用它的所有节点和属性复制到输出XML。
<xsl:template match="tag2[tag2]">...
:此模板会覆盖具有另一个<tag2>
子项的<tag2>
元素的身份模板。此模板仅将标识模板应用于父<tag2>
的子节点,以便不会将父<tag2>
复制到输出XML。