2012-09-24 16 views
9

子ノードの値が特定の値と一致するノードのみを選択したいと考えています。ここでXSLTの子ノードの値に基づいてノードを選択してください

私の原点復帰XMLです:

これは私の原点復帰XML

<Entry> 
<Name>AAA</Name> 
<line id="1">A</line> 
<line id="2">B</line> 
</Entry> 
<Entry> 
<Name>BBB</Name> 
<line id="1">C</line> 
<line id="2">D</line> 
</Entry> 
<Entry> 
<Name>AAA</Name> 
<line id="1">E</line> 
<line id="2">F</line> 
</Entry> 
<Entry> 
<Name>CCC</Name> 
<line id="1">G</line> 
<line id="2">H</line> 
</Entry> 

である私がどこ名= 'AAA' のすべてのエントリを抽出したいと思いますので、結果は次のようになります。

<Entry> 
<Name>AAA</Name> 
<line id="1">A</line> 
<line id="2">B</line> 
</Entry> 
<Entry> 
<Name>AAA</Name> 
<line id="1">E</line> 
<line id="2">F</line> 
</Entry> 

私はXSLT 1.0を使用することに限定されています。

ガイダンスをご提供ください。私は、一致しない他のノードのすべてのサブノードを削除する方法について固執しています。およそ

//Name[text()='AAA']/.. 

が、その後Entryことwhich'd、名前の親ノードに1レベル上に移動し、テキストコンテンツAAAすべてNameのノードを見つける方法

に関して、 ラーフル

答えて

13

以下は、名前が 'AAA'のサブノードを持つすべてのエントリノードを選択します。

//Entry[Name = "AAA"] 
1

2

この(List要素が整形式のXMLを取得するために追加された)のような何か試してみてください:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:template match="/"> 
    <List> 
     <xsl:apply-templates select="//Entry[Name='AAA']"/> 
    </List> 
    </xsl:template> 

    <xsl:template match="Entry"> 
    <xsl:copy-of select="."/> 
    </xsl:template> 

</xsl:stylesheet> 
関連する問題