[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Return ancestor siblings based on Id


Subject: Re: [xsl] Return ancestor siblings based on Id
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Fri, 18 Feb 2005 07:34:00 -0800 (PST)

I think union (|) operator is the answer..

//tree_node[@id=9]/ancestor::tree_node |
//tree_node[@id=9]/preceding-sibling::* |
//tree_node[@id=9] |
//tree_node[@id=9]/following-sibling::*

Probably, this should also work (seems more efficient
also) -
//tree_node[@id=9]/(ancestor::tree_node |
preceding-sibling::* | self::* | following-sibling::*)

Regards,
Mukul

--- Adam J Knight <adam@xxxxxxxxxxxxxxxxx> wrote:

> Hi guys,
> 
> Another chapter in this tragedy.
> 
> Question: 
> 
> The expression
> '//tree_node[@id=9]/ancestor::tree_node' returns a
> nodeset
> containing node with id(7). I have verified this
> with xpath visualizer.
> 
> How do I return the ALL siblings of this node also.
> 
> The result being
> Node(id=7)
> Node(id=8) : sibling of Node(id=7)
> Node(id=9) : sibling of Node(id=7)
> Node(id=14) : sibling of Node(id=7)
> 
> HELP APPRECIATED!!!!
> 
> ALL TO0 FAMILIAR XML STRUCTURE:
> <tree>
>   <tree_node id="7" value="Test Level One A">
>     <tree_node id="8" value="Test Level Two A"/>
>     <tree_node id="9" value="Test Level Two B">
>       <tree_node id="11" value="Test Level Three
> B"/>
>       <tree_node id="10" value="Test Level Three A">
>         <tree_node id="12" value="Test Level Four
> A"/>
>         <tree_node id="13" value="Test Level Four
> B"/>
>       </tree_node>
>     </tree_node>
>     <tree_node id="14" value="Test Level Two C"/>
>   </tree_node>
> </tree>




		
__________________________________ 
Do you Yahoo!? 
Yahoo! Mail - Helps protect you from nasty viruses. 
http://promotions.yahoo.com/new_mail


Current Thread
Keywords