Derek Hunziker
Derek Hunziker

Reputation: 13141

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

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?

Upvotes: 10

Views: 5058

Answers (1)

Dimitre Novatchev
Dimitre Novatchev

Reputation: 243449

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.

Upvotes: 12

Related Questions