Syntaxe XPath
Définition : Pas de localisation
Une expression XPath est composée de plusieurs pas de localisation successifs séparés par des /.
Un pas de localisation est caractérisé par :
un axe,
un test de nœud,
un prédicat (éventuellement aucun ou plusieurs).
Syntaxe : Expression XPath
pas-de-localisation-1/.../pas-de-localisation-N
Syntaxe : Pas de localisation
axe::test-de-nœud[prédicat]
Syntaxe : Axes et tests de nœuds
/: sélectionne la racine (expression absolue).: sélectionne le nœud courant (expression relative)child::xouxou./x: sélectionne les éléments fils "x"child::x/child::you./x/youx/y: sélectionne les éléments y fils de l'élément fils x (petits fils)attribute::aou./@aou@a: sélectionne l'attribut "a" du nœud courantchild::*ou./*ou*: sélectionne tous les éléments filsattribute::*ou./*@ou*@: sélectionne tous les attributschild::text()ou./text()outext(): sélectionne les nœuds de type texteparent::xou../x: sélectionne le père "x" (ancestor::xsélectionne les ancêtres "x")descendant::xou.//x: sélectionne tous les descendants "x" (enfants, petits enfants, etc.)preceding::x,following::x: sélectionne les nœuds précédents ou suivants dans le document (ordre), à l'exclusion des ancêtres (et des attributs)preceding-sibling::x,following-sibling::x: similaire àprecedingetfollowing, mais pour les nœuds de même niveau uniquement ("fratrie")
Attention : * , @*, text()
* sélectionne les nœuds de type élément, mais pas les attributs (sélectionnés par @*), ni les nœuds de type texte sélectionnés par text().
Complément : Axes
Pour bien visualiser le fonctionnement des axes, voir XML : Cours et exercices[1], p.124 (Figures 5-1 et 5-2).
Carré rouge : Le point de départ
Carré gris numéroté : Nœud sélectionné (avec son ordre de sélection)
Carré gris non numéroté ; Nœud non sélectionné
Exemple : Prédicats
x[1],x[2], etc. : sélectionne le premier x, le second x, etc.x[last()]: sélectionne le dernier xx[@a='valeur']: sélectionne les x tels que leur attribut a est égal à "valeur"x[y=1]: sélectionne les x tels qu'ils ont un élément fils y égal à 1x[@a='v1' and @b='v2']: sélectionne tous les x tels que leurs attributs a et b sont respectivement égaux à v1 et v2x[y or z]: sélectionne tous les x tels qu'ils possède un élément fils y ou z
Exemple : Union
Il est possible d'unifier deux expressions XPath en utilisant | :
x | y: sélectionne les éléments x et les éléments yx[y] | x[z]: sélectionne les éléments x tels qu'ils contiennent un y ou un z (équivalent ici àx[y or z])
Complément : current()
La fonction current() permet de renvoyer le nœud courant dans le contexte d'une exécution XSLT.
Cela permet de différencier :
elem1[@att1=@att2]: Les elem1 qui ont deux attributs att1 et att2 égauxet
elem1[@att1=current()/@att2]: Les elem1 qui ont un attribut att1 égal à l'attribut att2 du nœud courant







