Le langage XPath, défini par le W3C dans la spécification XML Path Language Version 1.0, fournit les moyens de sélectionner des noeuds précis de l'arborescence DOM d'un document XML.
Le modèle de données XPath est composés de huit noeuds XML.
Les expressions XPath ressemblent aux chemins utilisés pour accéder à des dossiers ou fichiers dans le système de fichiers Unix.
<?xml version="1.0"?> <racine> <element id="elt1"> <enfant>valeur 1</enfant> </element> <element id="elt2"> <enfant>valeur 2</enfant> </element> <element id="elt3"> <enfant>valeur 3</enfant> </element> </racine> /* Expressions XPath /racine -> Sélection de l'élément racine /racine/element -> Sélection des éléments element /racine/element/enfant -> Sélection des éléments enfant /racine/element/@id -> Sélection des attributs id */
Des caractères spéciaux permettent de construire des expressions plus compactes et relatives par rapport à un noued contextuel.
/* Expressions XPath Sélection de l'élément racine /racine Sélection des éléments element //element Sélection des éléments enfant /racine//enfant Sélection des éléments enfant du noeud fils du noeud contextuel (ex.: racine) */enfant Sélection du noeud parent element du noeud contextuel (ex.: <enfant>valeur 3</enfant>) ../element . -> Sélection du noeud courant (ex.: valeur 2) */
Des prédicats peuvent être inclus dans les expressions XPath afin de cibler plus précisément des noeuds XML.
/* Expressions XPath Sélection du premier élément element /racine/element[1] Sélection de l'élément portant l'attribut id="elt2" /racine/element[@id='elt2'] Sélection de l'élément comprenant un élément <enfant>valeur 3</enfant> /racine/element[enfant='valeur 3'] */
Des axes nodaux et des fonctions complètes la panoplie du langage XPath.
/* Expressions XPath Sélection du noeud grand-frère du noeud courant following-sibling::* Sélection du noeud enfant du noeud courant (ex.: element) descendant::enfant Sélection du noeud enfant du troisième noeud element du noeud parent du noeud courant ancestor::*/element[3]/enfant Sélection du contenu textuel du noeud enfant du noeud element portant l'attribut id="elt2" //element[@id='elt2']/enfant/text() Sélection du dernier noeud element //element[last()] Sélection du noeud element à la position numéro 2 //element[position()=2] Comptabilise le nombre de noeuds éléments count[//element]
En outre, XPath compte un ensemble d'opérateurs arithmétiques et booléens permettant de combiner des prédicats.
Sommaire/* Expressions XPath Sélection de l'avant-dernier noeud element //element[position()=last() - 1] Sélection du noeud element contenant l'attribut id dont la valeur se termine par 2 et qui est situé à la seconde position //element[substring(@id, 2, 3)='2' and position()=2] */