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.