Assistant d'expression XPath - Options de référence de syntaxe

Vous pouvez utiliser les options de référence de syntaxe pour spécifier des opérateurs et un chemin d'emplacement pour votre expression XPath. Les opérateurs sont utilisés pour manipuler des valeurs numériques, combiner des chemins et comparer des valeurs de chaîne ou des valeurs numériques. Un chemin d'emplacement décrit l'endroit où se trouve un noeud ou un groupe de noeuds dans un document XML.

Il existe deux types de chemin d'emplacement : absolu et relatif. Les chemins absolus commencent au niveau d'un point de référence fixe, le noeud racine. Les chemins relatifs commencent au niveau d'un point variable, un noeud de contexte.

Un chemin d'emplacement renvoie un ensemble de noeuds correspondant à une collection de noeuds (toute partie d'un document XML, telle qu'un élément, un attribut, un espace de noms ou un commentaire). Les chemins d'emplacement sont constitués d'étapes de positionnement. Chaque étape a deux parties :

Une étape de positionnement est similaire à la suivante :

axis: test-noeud

Il est possible de combiner les étapes de positionnement en les séparant par des barres obliques. Chaque étape, dans le chemin d'emplacement résultant, définit le noeud de contexte pour l'étape suivante dans le chemin.

Pour accéder aux options de référence de syntaxe, cliquez sur l'onglet Référence dans l'assistant d'expression XPath.

Spécificateurs d'axe

Chaque étape de positionnement XPath spécifie un déplacement le long d'un axe à partir d'un noeud de contexte. Par exemple, si vous sélectionnez child comme axe, votre expression XPath effectue une recherche sur tous les enfants du noeud de contexte.

Axe Endroits dans lesquels les noeuds sont recherchés
ancestor:: Le noeud racine et tous les noeuds d'élément qui contiennent le noeud de contexte. 
ancestor-or-self :: Tous les ancêtres du noeud de contexte, ainsi que le noeud lui-même.
attribute:: Tous les attributs du noeud de contexte.
child:: Tous les enfants du noeud de contexte. Les noeuds d'attribut et d'espace de noms ne sont les enfants d'aucun noeud, bien qu'ils aient des noeuds parents.

Il s'agit de la valeur par défaut.

descendant:: Tous les noeuds contenus au sein d'un noeud de contexte, c'est-à-dire les enfants ou les enfants d'enfants, et ainsi de suite. Seuls le noeud racine et les noeuds d'élément ont des descendants. De même que l'axe child::, l'axe descendant:: ne contient jamais de noeud d'attribut ou d'espace de noms.
descendant-or-self:: Tout descendant du noeud de contexte ou le noeud de contexte lui-même.
following:: Tous les noeuds qui commencent après la fin du noeud de contexte, excepté pour les noeuds d'espace de noms et les noeuds d'attribut.
following-sibling::  Tous les noeuds qui suivent la fin du noeud de contexte et qui ont le même noeud parent. Les noeuds d'attribut et d'espace de noms n'ont pas de frères.
namespace::  Tous les espaces de noms à la portée du noeud de contexte.
parent::  Le noeud d'élément ou le noeud racine qui contient immédiatement le noeud de contexte. Seul le noeud racine n'a pas de noeud parent.
preceding::  Tous les noeuds qui se terminent avant le début du noeud de contexte, excepté pour les noeuds d'espace de noms et les noeuds d'attribut.
preceding-sibling:: Tous les noeuds qui précèdent le début du noeud de contexte et qui ont le même noeud parent. Les noeuds d'attribut et d'espace de noms n'ont pas de frères.
self::  Le noeud de contexte lui-même.

Tests de noeud

Chaque étape de positionnement a au moins un axe et un test de noeud. Le test de noeud affine encore plus la sélection de noeud(s) opérée par l'étape de positionnement. Par exemple, si vous spécifiez child:: comment( ) comme étape de positionnement, votre expression XPath renvoie tous les noeuds de commentaire enfants du noeud de contexte.

Noeud Retour du test
* Tous les éléments, quel que soit leur nom. Par exemple, child::* sélectionne tous les éléments enfants du noeud de contexte et attribute::* sélectionne tous les attributs du noeud de contexte.
comment ( ) Tous les noeuds de commentaire.
node( ) Tous les noeuds, quel que soit leur type.
processing-instruction ('cible' ) En l'absence d'argument, ce test renvoie toutes les instructions de traitement. Avec un argument de chaîne cible, il sélectionne toutes les instructions de traitement qui ont la cible spécifiée.
text( ) Tous les noeuds de texte. Par exemple, child::text() sélectionne tous les noeuds de texte enfants du noeud de contexte.

Opérateurs

On distingue trois catégories d'opérateurs :
  • Ensemble de noeuds : opérateurs servant à combiner ou définir des chemins
  • Booléen : opérateurs servant à comparer des expressions de chaîne ou numériques
  • Nombre : opérateurs servant à manipuler des valeurs numériques

Ensemble de noeuds

Opérateur Fonction
| Opérateur d'union. Il prend deux ensembles de noeuds et les combine en un seul ensemble, en supprimant les noeuds en double.
/ Sélectionne tous les noeuds enfants.
// Sélectionne les noeuds descendants.

Booléen

Les opérateurs booléens peuvent servir à comparer des expressions numériques ou de chaîne ou des valeurs booléennes.

Opérateur Retour
<= true si la valeur de la première expression numérique est inférieure ou égale à la valeur de la seconde, sinon false.
< true si la valeur de la première expression numérique est inférieure à la valeur de la seconde, sinon false.
>= true si la valeur de la première expression numérique est supérieure ou égale à la valeur de la seconde, sinon false.
> true si la valeur de la première expression numérique est supérieure à la valeur de la seconde, sinon false.
= true si les deux expressions (de chaîne ou numériques) ont la même valeur, sinon false.
!= true si les deux expressions (de chaîne ou numériques) n'ont pas la même valeur, sinon false.
and true si les deux valeurs booléennes sont elles-mêmes true, sinon false.
or false uniquement si les deux valeurs sont false, sinon true.

Nombre

Ces opérateurs peuvent servir à manipuler des valeurs numériques.

Opérateur Retour
+ La somme arithmétique des deux expressions numériques.
- La différence arithmétique des deux expressions numériques (la première moins la seconde).
* Le produit arithmétique des deux expressions numériques.
div La division arithmétique des deux expressions numériques (la première divisée par la seconde).
mod \ La première expression numérique modulo la seconde expression (renvoie le reste).

Commentaires en retour