Syntaxe XPath

DéfinitionPas 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).

SyntaxeExpression XPath

1
pas-de-localisation-1/.../pas-de-localisation-N

SyntaxePas de localisation

1
axe::test-de-nœud[prédicat]

SyntaxeAxes et tests de nœuds

  • / : sélectionne la racine (expression absolue)

  • . : sélectionne le nœud courant (expression relative)

  • child::x ou x ou ./x : sélectionne les éléments fils "x"

  • child::x/child::y ou ./x/y ou x/y : sélectionne les éléments y fils de l'élément fils x (petits fils)

  • attribute::a ou ./@a ou @a : sélectionne l'attribut "a" du nœud courant

  • child::* ou ./* ou * : sélectionne tous les éléments fils

  • attribute::* ou ./*@ ou *@: sélectionne tous les attributs

  • child::text() ou ./text() ou text() : sélectionne les nœuds de type texte

  • parent::x ou ../x : sélectionne le père "x" (ancestor::x sélectionne les ancêtres "x")

  • descendant::x ou .//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 à preceding et following, 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émentAxes

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é

ExemplePrédicats

  • x[1], x[2], etc. : sélectionne le premier x, le second x, etc.

  • x[last()] : sélectionne le dernier x

  • x[@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 à 1

  • x[@a='v1' and @b='v2'] : sélectionne tous les x tels que leurs attributs a et b sont respectivement égaux à v1 et v2

  • x[y or z] : sélectionne tous les x tels qu'ils possède un élément fils y ou z

ExempleUnion

Il est possible d'unifier deux expressions XPath en utilisant | :

  • x | y : sélectionne les éléments x et les éléments y

  • x[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émentcurrent()

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 égaux

  • et elem1[@att1=current()/@att2] : Les elem1 qui ont un attribut att1 égal à l'attribut att2 du nœud courant