xslt-删除一个特定的孩子

时间:2017-10-23 14:26:22

标签: xslt

我有以下xml



<equationgroup>
  <equation>
    <MathFork>
      <Math>2*3</Math>
      <note>some note</note>
      <branch><Math>8^2</Math></branch>
    </MathFork>
  </equation>
</equationgroup>
&#13;
&#13;
&#13;

我想从MathFork中删除Math子元素,但是使用xslt将其保留为分支。

所以结果应该是:

&#13;
&#13;
<equationgroup>
      <equation>
        <MathFork>
          <note>some note</note>
          <branch><Math>8^2</Math></branch>
        </MathFork>
      </equation>
    </equationgroup>
&#13;
&#13;
&#13;

我该怎么做?

1 个答案:

答案 0 :(得分:0)

...简单

这样可以保留所有元素:

<xsl:template match="*">
      <xsl:copy>
        <xsl:copy-of select="@*"/>
        <xsl:apply-templates/>
      </xsl:copy>
  </xsl:template>

如果你想删除&#34;数学&#34;元素,只有是&#34; MathFork&#34;的孩子。你可以用这个:

<xsl:template match="Math[parent::MathFork]"/>

使用local-name()我会尝试:

    <xsl:template match="*[local-name() = 'Math' and parent::*[local-name() = 'MathFork']]"/>