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

问题描述:

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

有人可以帮助我这个。

感谢

如果没有与任何@class其他模板匹配的元素,这将工作:

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

这可以简单地通过重写恒等变换,并添加模板来实现忽略不正确的值

所以属性,给予以下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> 
+0

打我给它。 +1 – 2012-01-05 22:17:54