允许具有某些值的属性但不允许所有其他值

时间:2012-01-05 21:55:29

标签: xslt

在我的xslt中,我想保留所有具有class =“myName”的类属性,但删除任何节点上的所有其他类属性。

有人可以帮我解决这个问题。

由于

2 个答案:

答案 0 :(得分:1)

这可以通过覆盖身份转换,添加模板来忽略没有正确值的属性来实现

因此,给出以下XSLT

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

  <xsl:template match="@class[. != 'myName']" />
</xsl:stylesheet>

应用于以下XML

<a class="remove">
    <b class="myName">Test</b>
</a>

以下是输出

<a>
    <b class="myName">Test</b>
</a>

答案 1 :(得分:1)

如果您没有任何其他模板与@class匹配的元素,则可以使用:

<xsl:template match="@class[.!='myName']"/>