2009-07-16 51 views
13

我想使用XSL從樹中刪除一些元素。XSL:如何複製樹,但刪除一些節點?

假設我有以下XML樹:

<?xml version="1.0" ?> 
<mydoc> 
    <file> 
     <colors> 
      <blue /> 
      <red /> 
      <green /> 
     </colors> 
     <secret> 
      <username /> 
      <password /> 
     </secret> 
    </file> 
</mydoc> 

我想從中刪除用戶名和密碼的節點。我將如何繼續使用XSL?

回答

24

您想要一個標識變換。 XSLT中的常見設計模式是將複製所有內容的轉換。然後添加模板以刪除或轉換源和目標之間的不同。

<?xml version="1.0" encoding="UTF-8"?> 
<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="username|password"/> <!-- this empty template will remove them --> 
</xsl:stylesheet> 
+0

太棒了,很簡單的插圖! +1 – Cerebrus 2009-07-16 13:36:15