2016-12-05 144 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元素是什麼,並把它拷貝所有後代的是