Select node based on child node value in XSLT

Rahul picture Rahul · Sep 24, 2012 · Viewed 28.7k times · Source

I would like to select only those node where child node value matches a certain value.

Here is my orig XML:

This is my orig 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>

I would like to extract all entries where Name = 'AAA', so the result would be:

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

I am limited to using XSLT 1.0.

Please provide any guidance. I am stuck on how to drop all sub-nodes for others that do not match.

regards, Rahul

Answer

xshoppyx picture xshoppyx · Sep 24, 2012

The following will select all entry nodes with subnodes 'Name' that equal AAA.

//Entry[Name = "AAA"]