【问题标题】:XML tag removal with similar names删除具有相似名称的 XML 标记
【发布时间】:2015-07-16 02:54:37
【问题描述】:
 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>

【问题讨论】:

标签: xml xslt xsd xml-parsing


【解决方案1】:

这是一种可能的 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>

简要说明:

  • &lt;xsl:template match="@* | node()"&gt;...:身份模板。此模板将应用它的所有节点和属性复制到输出 XML。

  • &lt;xsl:template match="tag2[tag2]"&gt;... :此模板覆盖 &lt;tag2&gt; 元素的标识模板,该元素具有另一个子 &lt;tag2&gt;。此模板仅将标识模板应用于父 &lt;tag2&gt; 的子节点,因此父 &lt;tag2&gt; 不会被复制到输出 XML。

【讨论】:

    猜你喜欢
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    相关资源
    最近更新 更多