2010-11-30 24 views
5

Dans XSL 1.0, le descendant-ou-soi sélectionne TOUS les descendants et le nœud actuel. Que faire si vous voulez sélectionner uniquement les enfants immédiats et le noeud actuel (c'est-à-dire l'enfant ou le soi)?Comment sélectionnez-vous l'enfant (ou l'enfant)

Est-ce possible avec XPATH?

+0

Bonne question, +1. Voir ma réponse pour la seule réponse correcte jusqu'à présent. Notez que la réponse actuellement sélectionnée est incorrecte. :) –

Répondre

9

Dans XPath 1.0 ou une utilisation ultérieure:

SomeExpression | SomeExpresion/node() 

Dans XPath 2.0 ou ultérieure utiliser:

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

Une mauvaise réponse serait:

SomeExpression | SomeExpresion/* 

car cela sélectionne uniquement les enfants de SomeExpression qui sont des éléments, tandis que SomeExpression peut également avoir d'autres enfants - en tant que noeuds de texte, noeuds de commentaire, noeuds d'instruction de traitement.

aussi incorrect est:

./SomeExpression | ./*/SomeExpression 

Cela ne sélectionne pas les enfants immédiats de ./SomeExpression et il ne sélectionne pas les enfants de immidiate ./*/SomeExpression.

+0

+1 Bonne réponse. –