RE: [xsl] XPath to get node with sons with specific text

Subject: RE: [xsl] XPath to get node with sons with specific text
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Mon, 10 Aug 2009 12:00:31 +0100
> Contact[contains(Name,'test1')]
> 
> Depending on where ever your context node is.


Or perhaps 

   /List/Contact[starts-with(Name,'test1')]

if starting from the root.

Note that an XPath expression returns a set of nodes - this expression will
return two Contact nodes. It does not return the children of the Contact
nodes directly. But the children are still there - you can navigate from the
selected nodes to their children, their ancestors, or anywhere else. So for
example if in XSLT you do

<xsl:copy-of select="/List/Contact[contains(Name,'test1')]"/>

you will get copies of the subtrees rooted at these Contact nodes.

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay 

> 
> 
>  
> -------Original Message------- 
>  
> From: Andy Kohn
> Date: 8/10/2009 9:34:48 AM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] XPath to get node with sons with specific text 
>  
> Using XPath, is it possible for me to select a whole branch 
> by Searching for the first child to contain some specific text. 
>  
> For example for the following XML: 
>  
> <List>
> <Contact>
> <Name>test1test</Test>
> <Data>sample data</Data>
> <Data>sample</Data>
> <Data>sample 123</Data>
> </Contact>
> <Contact>
> <Name>test133</Test>
> <Data>sample data</Data>
> </Contact>
> <Contact>
> <Name>test2test</Test>
> <Data>sample data</Data>
> <Data>sample</Data>
> <Data>sample 123</Data>
> </Contact>
> </List> 
>  
> If I search for "test1" I want from the Xpath to return the 
> first <Contact> and the second <Contact>, including all child 
> nodes (<Name> And <Data>): 
>  
> <Contact>
> <Name>test1test</Test>
> <Data>sample data</Data>
> <Data>sample</Data>
> <Data>sample 123</Data>
> </Contact>
> <Contact>
> <Name>test133</Test>
> <Data>sample data</Data>
> </Contact> 
>  
> Something like: 
> //Name[contains(.,'Ab')]
> But this returns only the Name node, and not all the childs. 
>  
> Thanks, 
>  
> Andy. 

Current Thread