xsl-list
[Top] [All Lists]

Re: Return ancestor siblings based on Id

2005-02-18 08:34:00
I think union (|) operator is the answer..

//tree_node[(_at_)id=9]/ancestor::tree_node |
//tree_node[(_at_)id=9]/preceding-sibling::* |
//tree_node[(_at_)id=9] |
//tree_node[(_at_)id=9]/following-sibling::*

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

Regards,
Mukul

--- Adam J Knight <adam(_at_)brightidea(_dot_)com(_dot_)au> wrote:

Hi guys,

Another chapter in this tragedy.

Question: 

The expression
'//tree_node[(_at_)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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>