XPath - Tests sur les noeuds

Nous avons vu que la spécification d'un chemin de localisation se faisait en trois étapes. L'application de prédicats est facultative mais deux autres étapes sont obligatoires. La syntaxe minimale est la suivante :
axe::test_noeud
En reprenant l'exemple précédent et le même noeud contexte E, l'expression
/I
désigne le noeud de type I, enfant du noeud contexte. Cette écriture est en fait un raccourci pour ce qui devrait s'écrire en toute rigueur :
/child::I
La partie à gauche du symbole :: correspond à l'axe; la partie droite précise un test sur le type de noeud (nodetest). Relativement à E, si l'on veut sélectionner tous les noeuds enfants (pas seulement les noeuds de type I), on écrira :
/child::*
La notation synthétique étant beaucoup plus employée que sa forme développée, on a souvent tendance à perdre de vue la partie nodetest. Par exemple, l'ecriture ci-dessous,
E1/E2/*//Ei/ ... /En
est en fait une contraction de :
child::E1/child::E2/child::*/descendant::Ei/ ... /child::En
Sur l'exemple ci-contre, l'expression
/I/N/P
est une contraction de :
/child::I/child::N/child::P
Reprenons la même structure d'arbre en changeant le type des noeuds descendant de I et en gardant E comme noeud contexte :
Les noeuds en orange représentent le nodeset sélectionné par les expressions ci-dessous :
  
/child::I/child::*
ou, sous forme contractée :
/I/*

les enfants du noeud I, lui-même enfant du noeud contexte E
  
/child::I/child::Y
ou, sous forme contractée :
/I/Y

les noeuds de type Y, enfants du noeud I, lui-même enfant du noeud contexte E
  
/child::I/descendant::*
ou, sous forme contractée :
/I//*

les descendants du noeud I, lui-même enfant du noeud contexte E
  
/child::I/descendant::Y
ou, sous forme contractée :
/I//Y

les noeuds de type Y, descendants du noeud I, lui-même enfant du noeud contexte E
Le nodetest permet également de restreindre le nodeset aux commentaires ::comment(), aux noeuds textes ::text(), etc.

Précédent... ] Sommaire... ] Suivant... ]