0

我想在使用 xsl 复制时删除所有特定标签 (qq) 的一个特定属性 (d)。是否可以使用 xsl:copy-of(不是 xsl:copy)来做到这一点?

XML 源:

<main>
    <x b="c">
      <y b="e">
        <qq d="f"/>
      </y>
      <z>
        <qq d="f"/>
        <y b="e">
          <qq d="f"/>
        </y>
      </z>
      <qq d="g"/>
    </x>
</main>

想要的输出:

<x b="c">
  <y b="e">
    <qq />
  </y>
  <z>
    <qq />
    <y b="e">
      <qq />
    </y>
  </z>
  <qq />
</x>

我试过了

<xsl:copy-of select="x[name(.) !='qq' and name(@) != 'd'"/>

但它不起作用。

谢谢

4

1 回答 1

2

copy-of在这里对您没有帮助,但身份模板将:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

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

  <xsl:template match="qq/@d" />

  <xsl:template match="/*">
    <xsl:apply-templates select="*" />
  </xsl:template>
</xsl:stylesheet>

在您的示例输入上运行时的结果:

<x b="c">
  <y b="e">
    <qq />
  </y>
  <z>
    <qq />
    <y b="e">
      <qq />
    </y>
  </z>
  <qq />
</x>
于 2013-10-09T14:08:47.540 回答