2009-07-16 11 views
13

Chcę użyć XSL, aby usunąć niektóre elementy z drzewa.XSL: jak skopiować drzewo, ale usunąć niektóre węzły?

Załóżmy, że mam następujące drzewo XML:

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

Chcę usunąć nazwę użytkownika i hasło węzłów od niego. Jak postępować z XSL?

Odpowiedz

24

Chcesz przetransformować tożsamość . Typowy wzór projektu w XSLT to transformacja, która skopiuje wszystko. Następnie dodajesz szablony, aby usunąć lub przekształcić różnicę między źródłem a celem.

<?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

Fantastyczny i bardzo prosto zilustrowany! +1 – Cerebrus

+0

+1 Nie wiedziałem o tym wzorze. Bardzo jasne i eleganckie. – mkoeller

+3

jak nazwać ten szablon? – Abhilash

Powiązane problemy