XML 删除具有相似名称的标签
XML tag removal with similar names
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>
这是一种可能的 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.
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>
这是一种可能的 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.