2012-03-28 10 views
0

いくつかのトップレベルノードをスキップするXML文書をコピーする方法。たとえば、次のようにトップレベルノードをスキップするxsltでxmlをコピー

入力:

<root> 
<subroot> 
    <nodeX id="1"> 
    <!-- inner structure --> 
    </nodeX> 
    <nodeX id="2"> 
    <!-- inner structure --> 
    </nodeX> 
    <!-- other nodes --> 
    </subroot> 
<root> 

出力:

<nodeX id="1"> 
    <!-- inner structure --> 
    </nodeX> 
    <nodeX id="2"> 
    <!-- inner structure --> 
    </nodeX> 

答えて

3
<xsl:template match="@* | node()"> 
    <xsl:copy> 
    <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="root | subroot"> 
    <xsl:apply-templates/> 
</xsl:template> 

必要があります。より汎用的なものが必要な場合は、2番目のテンプレートを作成してください。

<xsl:template match="/* | /*/*"> 
    <xsl:apply-templates/> 
</xsl:template> 
+0

ルートのサブノードである別のノードをスキップすることはできますか?これらのノードは/ root/subrootX |/root/subrootYと一致しますが、コピーしたくありません。 – Max

+1

コピーしたくないパターンを2番目のテンプレートマッチパターンに追加するだけです。 ''を実行します。あるいは、あなたがルート要素の子をコピーしたくないのを知っているなら、私はすでに投稿した一般的な 'match ="/* |/*/* "'を使います。 –

関連する問題