2016-12-05 104 views
0

我试图找到一种方法来除去几个指定的属性之外的XML文档中的所有属性。我能够从指定元素中删除一个属性,但我无法从文档中的所有元素中删除所有属性(减去我想保留的属性)。XSLT - 删除除指定的属性之外的所有属性

例如: 如果我想保持唯一的ID和class属性,

此输入:

<body> 
<div id="div1" class="hello" length="1">inner text</div> 
<span id="div2" class="bye" length="2">inner text</span> 
<ol id="div3" class="goodbye" length="3">inner text</ol> 
</body> 

应该是这样的输出:

<body> 
<div id="div1" class="hello">inner text</div> 
<span id="div2" class="bye">inner text</span> 
<ol id="div3" class="goodbye">inner text</ol> 
<body> 

XSLT:

<?xml version="1.0" encoding="UTF-8"?> 


<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:java="org.dita.dost.util.GenUtils" exclude-result-prefixes="java"> 

<xsl:template match="*"> 
      <xsl:copy> 
     <xsl:copy-of select="@id | @class| node()"/> 
     </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 

回答

0

如果你只使用一个模板,它应该是:

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

你现在只适用于body元素是什么,并把它拷贝所有后代的是