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

Subject: Re: [xsl] XPath to get node with sons with specific text
From: Andy Kohn <andydev@xxxxxxxxx>
Date: Tue, 11 Aug 2009 11:40:36 +1000
Thanks for the help guys, works great! even works with attributes ;)


On Mon, Aug 10, 2009 at 9:00 PM, Michael Kay<mike@xxxxxxxxxxxx> wrote:
>> 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