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.
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. |
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. |
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). |