Avec la pro­pa­ga­tion du XML comme langage de balisage afin de permettre un échange de données in­dé­pen­dant de la pla­te­forme, un standard donnant les moyens à des ap­pli­ca­tions qui ne sont pas basées sur XML d’envoyer des requêtes complexes à des documents XML est devenu une nécessité.

Note

L’Ex­ten­sible Markup Language (abrégé en XML) est un langage de balisage servant à afficher des données struc­tu­rées hié­rar­chi­que­ment sous forme textuelle. Le XML est aussi bien lisible par l’homme que par machine et est notamment utilisé sur le World Wide Web pour l’échange de données entre deux systèmes in­for­ma­tiques.

Les standards cor­res­pon­dants, qui per­met­tent un accès contrôlé par programme aux documents XML, ont été dé­ve­lop­pés par le con­sor­tium W3 avec XQuery et XSLT. Ces derniers four­nis­sent des in­ter­faces de pro­gram­ma­tion que les ap­pli­ca­tions peuvent utiliser pour accéder aux documents XML, in­ter­ro­ger des contenus ou trans­for­mer des documents XML. Pour y parvenir, un standard qui permet l’adressage des éléments dans les documents XML est toutefois né­ces­saire : le langage de requête XPath.

Nous vous fa­mi­lia­ri­sons avec le modèle de données XPath (XDM) et vous pré­sen­tons sa syntaxe qui est à l’origine des ex­pres­sions XPath pour la lo­ca­li­sa­tion des éléments XML.

Nom de domaine
Votre domaine en un clic
  • 1 cer­ti­fi­cat SSL Wildcard par contrat
  • Fonction incluse Domain Connect pour une con­fi­gu­ra­tion DNS sim­pli­fiée

Qu’est-ce que XPath ?

L’XML Path Language (XPath) est un langage de requête pour les documents XML développé par le con­sor­tium W3. XPath met à dis­po­si­tion des uti­li­sa­teurs une syntaxe non basée sur XML per­met­tant d’adresser les éléments d’un document XML de façon ciblée.

En général, XPath est intégré dans un langage d’hôte (Host Language) qui permet un trai­te­ment des éléments XML adressés. XQuery sert par exemple à in­ter­ro­ger des éléments XML adressés par XPath. XSLT utilise le langage de requête pour la trans­for­ma­tion des documents XML.

  • XPath : na­vi­ga­tion dans les documents XML
  • XQuery : in­ter­ro­ga­tions de documents XML
  • XSLT : trans­for­ma­tion de documents XML

XPath 3.1, la version actuelle, est spécifiée dans la re­com­man­da­tion W3C du 21 mars 2017.

Note

Malgré de nouvelles versions, un grand nombre de pro­ces­seurs XSLT, de na­vi­ga­teurs web et d’ap­pli­ca­tions sont toujours uni­que­ment com­pa­tibles avec le standard XPath 1.0 de 1999.

Comment fonc­tionne XPath ?

XPath est basé sur un modèle de données qui in­ter­prète les documents XML comme une séquence d’éléments disposés dans une ar­bo­res­cence. L’ar­bo­res­cence du modèle de données XPath est com­pa­rable à celle du Document Object Model (DOM) qui agit comme une interface entre le HTML et le Ja­vaS­cript dynamique dans les na­vi­ga­teurs web.

La lo­ca­li­sa­tion des éléments XML est effectuée sous la forme de chemins, à la manière du système de ré­per­toires Unix. Les éléments de base de ces chemins de lo­ca­li­sa­tion sont les nœuds, les axes, les tests de nœud et les prédicats.

Types de nœuds

Les dif­fé­rents éléments d’une ar­bo­res­cence XPath sont appelés des nœuds. L’ordre des nœuds est déterminé à la fois par la séquence du document et par l’im­bri­ca­tion des éléments XML.

Le modèle de données XPath distingue sept types de nœuds avec dif­fé­rentes fonc­tion­na­li­tés :

  • les nœuds élément (element node),
  • les nœuds document (root node) (à partir de XPath 2.0, au­pa­ra­vant nœuds racine),
  • les nœuds attribut (attribute node),
  • les nœuds texte (text node),
  • les nœuds espace de noms (namespace node),
  • les nœuds ins­truc­tion de trai­te­ment (pro­ces­sing ins­truc­tion node),
  • les nœuds com­men­taire (comment node).

Nous vous ex­pli­quons les types de nœuds du modèle de données XPath à l’aide d’un exemple. Le document XML suivant permet l’échange de données dans le cadre d’une commande de livre et comprend les sept types de nœuds.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Order SYSTEM "order.dtd">
<?xml-stylesheet type="text/css" href="style.css"?>
<!--Ceci est un commentaire!-->
<order date="2019-02-01">
    <address xmlns:shipping="http://localhost/XML/delivery" xmlns:billing="http://localhost/XML/billing">
        <shipping:name>Ellen Adams</shipping:name>
        <shipping:street>123 Maple Street</shipping:street>
        <shipping:city>Mill Valley</shipping:city>
        <shipping:state>CA</shipping:state>
        <shipping:zip>10999</shipping:zip>
        <shipping:country>États-Unis</shipping:country>
        <billing:name>Mary Adams</billing:name>
        <billing:street>8 Oak Avenue</billing:street>
        <billing:city>Old Town</billing:city>
        <billing:state>PA</billing:state>
        <billing:zip>95819</billing:zip>
        <billing:country>États-Unis</billing:country>
    </address>
    <comment>Veuillez utiliser un emballage cadeau !</comment>
    <items>
        <book isbn="9781408845660">
            <title>Harry Potter et le prisonnier d’Azkaban</title>
            <quantity>1</quantity>
            <priceus>22.94</priceus>
            <comment>Veuillez confirmer la date de livraison avant Noël.</comment>
        </book>
        <book isbn="9780544003415">
            <title>Le seigneur des anneaux</title>
            <quantity>1</quantity>
            <priceus>17.74</priceus>
        </book>
    </items>
</order>

Nœuds élément (element node)

Dans l’ar­bo­res­cence du modèle de données XPath, chaque élément du document XML cor­res­pond à un nœud élément. Il existe toutefois deux ex­cep­tions : la dé­cla­ra­tion XML et la dé­fi­ni­tion du type de document au début du document.

Dé­cla­ra­tion XML :

<?xml version="1.0"? encoding="utf-8"?>

Dé­fi­ni­tion du type de document (DTD) :

<!DOCTYPE Order SYSTEM "order.dtd">

Les nœuds élément com­men­cent par une balise de début, se terminent par une balise de fin et sont gé­né­ra­le­ment imbriqués les uns dans les autres.

Le premier nœud élément dans la séquence du document est appelé nœud racine.

Le document XML présenté ci-dessus contient par exemple le nœud élément order comme élément racine. Celui-ci fonc­tionne comme élément parent des nœuds élément su­bor­don­nés address, comment et items qui con­tien­nent à leur tour d’autres nœuds élément comme éléments enfant.

Nœuds document (document node)

Les nœuds document cons­ti­tuent la racine de l’ar­bo­res­cence. Ils ne sont re­pré­sen­tés ni vi­suel­le­ment ni tex­tuel­le­ment dans le document XML. Il s’agit d’un nœud de con­cep­tion qui comprend tous les autres éléments du document. Les éléments enfant du nœud document sont l’élément racine ainsi que, le cas échéant, les nœuds ins­truc­tion de trai­te­ment et les nœuds com­men­taire.

Nœuds attribut (attribute node)

Dans le modèle de données XPath, les attributs d’un élément XML sont re­pré­sen­tés sous la forme de nœuds attribut. Chaque nœud attribut est composé d’un marqueur et d’une valeur affectée à l’attribut.

Dans l’exemple de code, le premier nœud élément book contient le nœud attribut isbn avec la valeur 9781408845660.

<book isbn="9781408845660">

Les nœuds attribut sont con­si­dé­rés comme ap­par­te­nant au nœud élément, mais pas comme des éléments enfant de l’élément.

Nœuds texte (text node)

Les données de caractère dans les balises de début et de fin d’un nœud élément sont appelées des nœuds texte.

Dans l’exemple de code, le nœud élément title contient le nœud texte Harry Potter et le pri­son­nier d’Azkaban.

Harry Potter et le prisonnier d’Azkaban

Nœuds espace de noms

Dans les documents XML bien struc­tu­rés, tous les noms d’éléments et d’attributs utilisés sont affectés à un espace de noms. Cette af­fec­ta­tion est gé­né­ra­le­ment déjà effectuée dans la dé­fi­ni­tion du type de document au début du document.

Si des éléments ou des attributs d’espaces de noms dif­fé­rents sont utilisés dans un document XML, l’espace de noms cor­res­pon­dant sera défini ex­pli­ci­te­ment dans la balise de début de l’élément concerné à l’aide de l’attribut xmlns ou du préfixe xmlns. L’attribut xmlns attend comme valeur un Uniform Resource Iden­ti­fier (URI) indiquant à quel espace de noms l’élément cor­res­pon­dant est affecté. L’af­fec­ta­tion d’un espace de noms à un préfixe xmlns est à la dis­po­si­tion de l’élément et de tous les éléments enfant. Chaque espace de noms cor­res­pond à un nœud espace de noms dans l’ar­bo­res­cence.

Dans l’exemple de code, deux espaces de noms ont été définis pour l’élément XML address : xmlns:shipping et xmlns:billing. Les éléments enfant de l’élément address indiquent l’af­fec­ta­tion cor­res­pon­dante sous forme de préfixe.

<address xmlns:shipping="http://localhost/XML/delivery" xmlns:billing="http://localhost/XML/ billing">
        <shipping:name>Ellen Adams</shipping:name>
        <shipping:street>123 Maple Street</shipping:street>
        <shipping:city>Mill Valley</shipping:city>
        <shipping:state>CA</shipping:state>
        <shipping:zip>10999</shipping:zip>
        <shipping:country>États-Unis</shipping:country>
        <billing:name>Mary Adams</billing:name>
        <billing:street>8 Oak Avenue</billing:street>
        <billing:city>Old Town</billing:city>
        <billing:state>PA</billing:state>
        <billing:zip>95819</billing:zip>
        <billing:country>États-Unis</billing:country>
    </address>

Le préfixe xmlns permet d’affecter de façon claire des éléments de même nom issus de dif­fé­rents espaces de noms. L’élément street avec le préfixe shipping contient par exemple la rue de l’adresse de livraison tandis que l’élément street avec le préfixe billing contient la rue de l’adresse de fac­tu­ra­tion.

Nœuds ins­truc­tion de trai­te­ment (pro­ces­sing ins­truc­tion node)

Dans les documents XML, les ins­truc­tions de trai­te­ment sont situées en dehors de l’arbre du document et sont appelés nœuds ins­truc­tion de trai­te­ment dans la ter­mi­no­lo­gie XPath. Un nœud ins­truc­tion de trai­te­ment commence par <? et se termine par ?>.

Dans l’exemple de code ci-dessus, vous trouverez l’ins­truc­tion de trai­te­ment suivante :

<?xml-stylesheet type="text/css" href="style.css"?>

La dé­cla­ra­tion XML au début du fichier XML reprend la syntaxe d’une ins­truc­tion de trai­te­ment, mais n’est pas con­si­dé­rée comme un nœud ins­truc­tion de trai­te­ment au sens du modèle de données XPath.

Nœuds com­men­taire (comment node)

Dans un document XML, les contenus marqués comme com­men­taires sont traités par XPath comme des nœuds com­men­taire. Le nœud contient uni­que­ment le contenu des ca­rac­tères marqués, pas le balisage.

Dans l’exemple de code ci-dessus, vous trouverez les nœuds com­men­taire suivants :

Ceci est un commentaire!

Chemins de lo­ca­li­sa­tion

L’adressage de nœuds est effectué à l’aide de chemins de lo­ca­li­sa­tion. Les chemins de lo­ca­li­sa­tion sont une ex­pres­sion XPath utilisée pour naviguer dans l’ar­bo­res­cence et sé­lec­tion­ner l’ensemble de nœuds souhaité. L’ensemble de nœuds est le résultat d’une ex­pres­sion XPath.

Les chemins de lo­ca­li­sa­tion sont analysés de gauche à droite. On distingue les chemins de lo­ca­li­sa­tion absolus et relatifs. Un chemin de lo­ca­li­sa­tion absolu commence au nœud document. Dans ce cas, faites précéder l’ex­pres­sion XPath d’une barre oblique (/). Les chemins de lo­ca­li­sa­tion relatifs com­men­cent à n’importe quel nœud de l’ar­bo­res­cence. Ce point de départ est appelé nœud de contexte.

Un chemin de lo­ca­li­sa­tion est composé de dif­fé­rentes étapes de lo­ca­li­sa­tion qui sont séparées par des barres obliques (/), de façon analogue à l’adressage de fichiers dans des systèmes de ré­per­toires.

Chaque étape de lo­ca­li­sa­tion d’un chemin peut comporter jusqu’à trois parties : l’axe, le test de nœud et un nombre de prédicats au choix.

  • Axe : le choix de l’axe permet de dé­ter­mi­ner le sens de la na­vi­ga­tion dans l’ar­bo­res­cence en partant du nœud contexte ou du nœud document.
  • Test de nœud : le test de nœud cor­res­pond à un filtre per­met­tant de res­treindre les nœuds situés sur l’axe à l’ensemble de nœuds souhaité.
  • Prédicats : les prédicats vous per­met­tent de filtrer à nouveau les nœuds sé­lec­tion­nés à travers l’axe et le test de nœud.

Les étapes de lo­ca­li­sa­tion d’une ex­pres­sion XPath sont notées selon la syntaxe suivante :

axe::testdenœud[prédicat1][prédicat2]…
Notation Fonction
/ Fonc­tionne comme un sé­pa­ra­teur de chemin entre deux étapes de lo­ca­li­sa­tion
:: Fonc­tionne comme un sé­pa­ra­teur de chemin entre l’axe et le test de nœud

Axes

La syntaxe XPath permet de naviguer à l’aide des axes suivants.

Axe Dé­no­mi­na­tion française Nœuds sé­lec­tion­nés
child enfant Tous les nœuds enfant di­rec­te­ment su­bor­don­nés
parent nœud parent Le nœud parent di­rec­te­ment supérieur
des­cen­dant des­cen­dant Tous les nœuds su­bor­don­nés
ancestor* ancêtre Tous les nœuds su­pé­rieurs
following nœuds suivants Tous les nœuds suivants dans la séquence de document à l’exception des des­cen­dants
preceding* nœuds pré­cé­dents Tous les nœuds pré­cé­dents dans la séquence de document à l’exception des ancêtres
following-sibling nœuds frère suivants Tous les nœuds suivants dans le document XML provenant du même nœud parent
preceding-sibling* nœud frère précédent Tous les nœuds pré­cé­dents dans le document XML provenant du même nœud parent
attribute attribut Tous les nœuds attribut d’un nœud élément
namespace espace de noms Tous les nœuds espace de noms d’un nœud élément ; à partir de la version 2.0, cet axe ne figure plus dans la spé­ci­fi­ca­tion.
self nœud courant Le nœud de contexte à pro­pre­ment parler
des­cen­dant-or-self des­cen­dant, y compris le nœud courant Tous les nœuds su­bor­don­nés, y compris le nœud de contexte
ancestor-or-self* ancêtres ou nœud courant Tous les nœuds su­pé­rieurs, y compris le nœud de contexte
Note

Les axes marqués d’un as­té­risque (*) sont des ap­pli­ca­tions orientées dans le sens inverse, qui, con­for­mé­ment à la spé­ci­fi­ca­tion XPath version 1.0, sont fa­cul­ta­tives et ne doivent pas né­ces­sai­re­ment être sup­por­tées par les ap­pli­ca­tions répondant au standard.

Le schéma suivant vous présente les prin­ci­paux axes du modèle de données XPath en partant du nœud de contexte (en rouge).

L’axe child:: sé­lec­tionne par exemple tous les éléments enfant du nœud de contexte D : l’ensemble de nœuds comprend les nœuds E, H et I.

Test de nœud

Le test de nœud vous permet de définir un filtrage pour l’ensemble de nœuds sé­lec­tionné avec l’axe. Deux critères de filtrage sont possibles con­for­mé­ment à la spé­ci­fi­ca­tion XPath.

  • Nom du nœud : indiquez un nom de nœud en tant que test de nœud afin de sé­lec­tion­ner tous les nœuds portant le nom cor­res­pon­dant sur l’axe sé­lec­tionné.
  • Type de nœud : indiquez un type de nœud en tant que test de nœud afin de sé­lec­tion­ner tous les nœuds disposant du type cor­res­pon­dant sur l’axe sé­lec­tionné.

Nom du nœud en tant que critère de filtrage

En nous basant sur l’exemple de code ci-dessus, le chemin de lo­ca­li­sa­tion suivant vous per­met­trait par exemple de sé­lec­tion­ner tous les des­cen­dants avec le nom book en partant du nœud document.

/descendant::book

En revanche, si vous souhaitez filtrer l’attribut isbn pour tous les nœuds élément portant le nom book, vous aurez besoin d’un chemin de lo­ca­li­sa­tion avec deux étapes de lo­ca­li­sa­tion.

<p>/descendant::book/attribute::isbn</p>

Type de nœud comme critère de filtrage

Si vous souhaitez définir un type de nœud comme critère de filtrage pour la sélection de l’ensemble de nœuds, utilisez l’une des fonctions suivantes comme test de nœud :

Fonction Nœuds sé­lec­tion­nés
node() La fonction node() sé­lec­tionne tous les nœuds sur l’axe sé­lec­tionné.
text() La fonction text() sé­lec­tionne tous les nœuds texte sur l’axe sé­lec­tionné.
comment() La fonction comment() sé­lec­tionne tous les nœuds com­men­taire sur l’axe sé­lec­tionné.
pro­ces­sing-ins­truc­tion() La fonction pro­ces­sing-ins­truc­tion() sé­lec­tionne tous les nœuds ins­truc­tion de trai­te­ment sur l’axe sé­lec­tionné.
Note

XPath 1.0 dé­fi­nis­sait déjà 25 fonctions. Depuis XPath 2.0, 111 fonctions sont dis­po­nibles pour décrire les chemins de lo­ca­li­sa­tion. Vous trouverez une vue d’ensemble de ces fonctions dans la re­com­man­da­tion W3C XPath and XQuery Functions and Operators 3.1 du 21 mars 2017.

Test de nœud avec Wildcard

Si à la place du test de nœud, vous utilisez le caractère * (as­té­risque), vous sé­lec­tion­ne­rez tous les nœuds cor­res­pon­dant au type de nœud principal de l’axe sé­lec­tionné. Dans un tel cas, si un axe contient des nœuds élément, ce type de nœud est le type de nœud principal de l’axe. Il en va de même de tous les axes à l’exception des axes attribute et namespace. Dans ces deux cas, les nœuds attribut et les nœuds espace de noms sont le type de nœud principal.

Le chemin de lo­ca­li­sa­tion suivant indique par exemple tous les attributs du nœud de contexte courant :

attribute::*

Notation abrégée

Des abré­via­tions, qui peuvent être utilisées à la place des dé­sig­na­tions anglaises dans l’ex­pres­sion XPath, ont été définies pour les axes et les étapes de lo­ca­li­sa­tion utilisés fré­quem­ment.

Notation standard Abré­via­tion Exemple
child:: vide child est l’axe standard. La dé­sig­na­tion de l’axe peut être omise si né­ces­saire. Le chemin de lo­ca­li­sa­tion child::book/child::title cor­res­pond ainsi à la forme abrégée book/title.
attribute:: @ L’axe attribute, incluant le sé­pa­ra­teur, peut être abrégé à l’aide du caractère @.Le chemin de lo­ca­li­sa­tion book/attribute::isbn sé­lec­tionne le nœud attribut isbn de l’élément book et cor­res­pond à la notation abrégée book/@isbn.
/des­cen­dant-or-self::node()/ // L’étape de lo­ca­li­sa­tion /des­cen­dant-or-self::node()/ sé­lec­tionne le nœud document et tous les des­cen­dants ; il est abrégé avec //. Au lieu d’écrire /des­cen­dant-or-self::node()/child::item, on peut abréger cette ex­pres­sion en //item. Le chemin de lo­ca­li­sa­tion sé­lec­tionne tous les nœuds item du document.
parent::node() .. L’étape de lo­ca­li­sa­tion parent::node() sé­lec­tionne le nœud parent du nœud de contexte et est abrégée en .. .
self::node() . L’étape de lo­ca­li­sa­tion self::node() sé­lec­tionne le nœud de contexte courant et est abrégée en . .

Prédicats

Les prédicats vous per­met­tent de définir d’autres critères de filtrage pour l’ensemble de nœuds sé­lec­tionné avec l’axe et le test de nœud.

Ils cons­ti­tuent la troisième partie fa­cul­ta­tive d’une étape de lo­ca­li­sa­tion et sont notés dans des crochets. Les critères de filtrage dans les crochets sont formulés comme des ex­pres­sions pouvant notamment contenir des ex­pres­sions de chemin, des fonctions, des opé­ra­teurs et des chaînes.

La syntaxe XPath supporte les prédicats généraux et les prédicats nu­mé­riques.

Prédicats généraux

Les ex­pres­sions dans les prédicats généraux per­met­tent le filtrage de l’ensemble de nœuds sé­lec­tionné avec l’axe et le test de nœud en indiquant pour chaque nœud de la sélection une valeur booléenne (true ou false). Tous les nœuds avec la valeur true sont inclus au résultat.

La for­mu­la­tion des ex­pres­sions pour les prédicats généraux est effectuée à l’aide d’opé­ra­teurs. Ces derniers sont utilisés afin de sé­lec­tion­ner des nœuds ciblés avec des pro­prié­tés et des contenus par­ti­cu­liers, par exemple, tous les nœuds contenant une chaîne de ca­rac­tères donnée, une valeur d’attribut ou un élément enfant précis (le cas échéant, à une certaine position).

Les tableaux suivants vous donnent un aperçu des opé­ra­teurs dis­po­nibles. On distingue les opé­ra­teurs arith­mé­tiques, les opé­ra­teurs logiques et les opé­ra­teurs de com­pa­rai­son.

Opé­ra­teurs arith­mé­tiques Fonction
+ Addition
- Sous­trac­tion
* Mul­ti­pli­ca­tion
div Division en virgule flottante
mod Modulo
Opé­ra­teurs de com­pa­rai­son Fonction
= égal à
!= différent de
< plus petit que ; masquage né­ces­saire au sein de XSLT (&lt;)
> plus grand que ; masquage re­com­mandé au sein de XSLT (&gt;)
<= plus petit que ou égal à ; masquage né­ces­saire au sein de XSLT (&lt;)
>= plus grand que ou égal à ; masquage re­com­mandé au sein de XSLT (&gt;)
Opé­ra­teurs logiques Fonction
and lien logique et
or lien logique ou

Dans l’exemple suivant, le prédicat [title="Harry Potter et le pri­son­nier d’Azkaban"] restreint l’ensemble de données à un nœud élément nommé book dont l’élément enfant title contient la chaîne Harry Potter et le pri­son­nier d’Azkaban.

Note

L’exemple cor­res­pond à la syntaxe XPath-3 qui peut ne pas être supportée par tous les outils en ligne. Les requêtes pré­sen­tées ici peuvent par exemple être suivies à l’aide de l’outil de test en ligne suivant : http://videlibri.sour­ce­forge.net/cgi-bin/xidelcgi.

/order/items/book[title="Harry Potter et le prisonnier d’Azkaban"]

Nous avons à présent sé­lec­tionné le nœud élément book qui contient les données pour le livre Harry Potter.

<book isbn="9781408845660">
        <title>Harry Potter et le prisonnier d’Azkaban</title>
        <quantity>1</quantity>
        <priceus>22.94</priceus>
        <comment>Veuillez confirmer la date de livraison avant Noël.</comment>
    </book>

L’élément comment est un autre élément enfant de ce nœud élément. Si nous sou­hai­tons sé­lec­tion­ner son contenu, le chemin de lo­ca­li­sa­tion doit être uni­que­ment complété par deux étapes de lo­ca­li­sa­tion.

/order/items/book[title="Harry Potter et le prisonnier d’Azkaban"]/comment/text()

Avec l’étape de lo­ca­li­sa­tion comment (abré­via­tion de child::comment), nous naviguons jusqu’à l’élément enfant du même nom de l’élément book et nous sé­lec­tion­nons son nœud texte avec la fonction text(). Il cor­res­pond à la chaîne suivante :

Veuillez confirmer la date de livraison avant Noël.

Si une seule ex­pres­sion de chemin est utilisée dans un prédicat, on parle de test d’existence. Le chemin de lo­ca­li­sa­tion suivant permet par exemple de tester si le document XML détaillé ci-dessus contient un ou plusieurs nœuds intitulés comment.

Notation abrégée :

//book[comment]

Notation standard :

/descendant-or-self::node()/child::book[child::comment]

Le chemin de lo­ca­li­sa­tion //book[comment] sé­lec­tionne tous les nœuds portant le nom book ayant un élément enfant portant le nom comment.

Prédicats nu­mé­riques

Les prédicats nu­mé­riques vous per­met­tent d’adresser des nœuds à l’aide de leur position. Le chemin de lo­ca­li­sa­tion suivant sé­lec­tionne par exemple le deuxième nœud dans la séquence du document dont le nom est book :

//book[2]

Pour être précis, le prédicat [2] est la forme abrégée de [position()=2]. XPath sé­lec­tionne ainsi tout d’abord l’ensemble des nœuds portant le nom « book » et filtre ensuite le nœud pour lequel la fonction position()=2 renvoie la valeur booléenne true.

Note

Con­trai­re­ment à d’autres langages de pro­gram­ma­tion, l’énu­mé­ra­tion XPath commence avec 1.

In­for­ma­tions com­plé­men­taires con­cer­nant le XML Path Language

Une vue d’ensemble du niveau de dé­ve­lop­pe­ment actuel du XML Path Language ainsi que tous les standards et les projets officiels est dis­po­nible sur le site Internet de W3C.

Des in­for­ma­tions et des outils gratuits con­cer­nant l’uti­li­sa­tion de XPath dans le cadre des ap­pli­ca­tions web sont à votre dis­po­si­tion dans les MDN-Web-Docs ainsi que dans le Microsoft Developer Network.

Aller au menu principal