2009-07-16 5 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

+0

+1私はこのパターンについて知らなかった。非常にクリアでエレガント。 – mkoeller

+3

このテンプレートを呼び出す方法は? – Abhilash

関連する問題