2010-03-23 5 views
2

Je cherche une expression XPath, qui me donne tous les petits-enfants d'un élément.Petits-enfants d'un élément (XPath)

Est-ce correct: enfant/enfant/*?

+0

Bonne question (+1)! Voir la bonne réponse Astuce: ce n'est pas celui actuellement sélectionné ... :) –

+0

est le noeud de texte d'un enfant considéré petit-enfant? –

Répondre

3

Est-ce exact: enfant/enfant/*?

Non,

child

sélectionne tous les éléments enfants du noeud courant, dont le nom est child.

child/child

sélectionne tous les éléments nommés child qu'ARA enfants de tout élément nommé child qui est un enfant du noeud courant. Ainsi, l'expression ci-dessus sélectionne tous les petits-enfants du nœud actuel, qui sont nommés child et dont les parents sont également nommés child. Ceci est le plus proche de "petits-enfants d'un élément".

L'expression XPath vous demandez sur:

child/child/*

sélectionne tous les éléments (quel que soit le nom) qui sont les enfants d'éléments nommés child qui sont les enfants d'éléments nommés child qui sont des enfants du noeud courant . Ce sont quelques-uns des arrière-petits-enfants du nœud actuel (les enfants des petits-enfants).

Pour répondre complètement à la question, l'expression suivante sélectionne tous les petits-enfants du noeud courant:

*/node()

Ce sont tous les nœuds qui sont des enfants de tous les éléments qui sont des enfants du noeud courant.

Notez les points suivants:

  1. Seuls les éléments et le nœud de document peut avoir des enfants.

  2. Tout noeud (à l'exception du noeud de document), et pas seulement un noeud d'élément, peut être et est généralement un enfant d'un autre noeud. Par conséquent, il peut y avoir des petits-enfants qui ne sont pas des éléments - tels que des nœuds de texte, des nœuds de commentaire et des nœuds d'instruction de traitement. Les attributs et les nœuds d'espace de noms ne sont techniquement pas des enfants.

Questions connexes