Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you select child-or-self (children + self)

Tags:

xml

xslt

xpath

In XSL 1.0, descendant-or-self will select ALL descendants and the current node. What if you want to select only the immediate children and the current node (i.e. child-or-self)?

Is that possible with XPATH?

like image 681
Derek Hunziker Avatar asked Nov 30 '10 07:11

Derek Hunziker


1 Answers

In XPath 1.0 or later use:

SomeExpression | SomeExpresion/node()

In XPath 2.0 or later use:

SomeExpression/(self::node()|node())

An incorrect answer would be:

SomeExpression | SomeExpression/*

because this selects only those children of SomeExpression that are elements, while SomeExpression may have other children too -- as text-nodes, comment nodes, processing-instruction nodes.

Also incorrect is:

./SomeExpression | ./*/SomeExpression

This doesn't select the immediate children of ./SomeExpression and it doesn't select the immidiate children of ./*/SomeExpression.

like image 176
Dimitre Novatchev Avatar answered Nov 02 '22 23:11

Dimitre Novatchev