删除指定的节点及其子节点



我有一个这样的XML。

<a>
  <b>
    <c>
      <e>
      </e>
    </c>
    <d>
    </d>
  </b>
  <b>
    <c>
      <e>
      <e>
    </c>
    <d>
    </d>
  </b>
</a>

我需要复制整个文档并删除所有<c>元素及其子元素。之后,我想将新文档存储到变量中。

以下是我想要在转换后拥有的 XML:

<a>
  <b>
    <d>
    </d>
  </b>
  <b>
    <d>
    </d>
  </b>
</a>

以及我目前拥有的:

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

我看到的两件事是错误的:

  • 您的输入缺少第二个<e>元素的结束标记
  • 您的 xslt 脚本缺少标头

因此,将您的输入更改为格式良好的内容,如下所示:

<a>
  <b>
    <c>
      <e>
      </e>
    </c>
    <d>
    </d>
  </b>
  <b>
    <c>
      <e>
      </e>
    </c>
    <d>
    </d>
  </b>
</a>
在样式表

周围添加标题和 xsl:样式表标签,如下所示:

<?xml version="1.0"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>
 <xsl:template match="c"/>
</xsl:stylesheet>

整个事情都有效,产生这样的输出:

<?xml version="1.0" encoding="UTF-8"?>
<a>
  <b>
    <d>
    </d>
  </b>
  <b>
    <d>
    </d>
  </b>
</a>

相关内容

  • 没有找到相关文章

最新更新