Vous êtes sur la page 1sur 4

Syntaxe XPath

XML cours tutorial


XPath utilise une syntaxe compacte et non-XML pour faciliter son utilisation dans des URI et des attributs de
balises XML. XPath agit sur les structures abstraites et logiques d'un document XML, plutôt que sur sa syntaxe
apparente.
Le nom XPath vient de l'utilisation d'une écriture de type "chemins d'accès", comme les URL, pour se déplacer à
l'intérieur de la structure hiérarchique d'un document XML.
XPath utilise des expressions de chemin d'accès pour sélectionner les nœuds ou ensembles de nœud dans un
document XML.
Le nœud est sélectionné en suivant un chemin d'accès.

testeur XPath : http://xpather.com/

Exemple de Document XML


Nous allons utiliser le document XML suivant dans les exemples ci-dessous.
Sélectionner le code

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>

<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>

</bookstore>

Sélection de nœuds
XPath utilise les expressions de chemin d'accès pour sélectionner des nœuds dans un document XML. Le
nœud est sélectionné en suivant un chemin d'accès ou les étapes.
Les expressions de chemin d'accès les plus utiles sont énumérées ci-dessous :
Expression Description
Nom du Sélectionne tous les nœuds enfants du nœud nommé
nœud
/ Sélectionne le nœud racine
// Sélectionne les nœuds dans le document à partir du nœud actuel qui correspondent à la
sélection, peu importe où ils se
. Sélectionne le nœud actuel
.. Sélectionne le parent du nœud actuel
@ Sélectionne les attributs

Dans le tableau ci-dessous, nous avons listé certaines expressions de chemin d'accès et le résultat des
expressions :
Expression de Résultat
chemin

bookstore Sélectionne tous les nœuds enfants de l'élément bookstore


/bookstore Sélectionne l'élément racine bookstore
Note : Si le chemin commence par une barre oblique (/) il représente toujours un
chemin absolu vers un élément !
bookstore/book Sélectionne tous les éléments du book qui sont des enfants bookstore
//book Sélectionne tous les éléments du book peu importe où ils se trouvent dans le
document
bookstore / book Sélectionne tous les éléments du book que sont les descendants de l'élément
bookstore, peu importe où ils se trouvent sous l'élément bookstore
//@lang Sélectionne tous les attributs qui sont nommées lang

Prédicats
Les prédicats sont utilisés pour trouver un nœud spécifique ou un nœud qui contient une valeur spécifique.
Les prédicats sont toujours incorporées entre crochets.
Dans le tableau ci-dessous, nous avons listé certaines expressions de chemin d'accès avec les prédicats et le
résultat des expressions :
Expression de chemin Résultat
/ bookstore/book [1] Sélectionne le premier élément du book qui est l'enfant de l'élément
bookstore.
Note : IE5 et plus tard a instauré ce [0] devrait être le premier nœud,
mais conformément à la norme du W3C, il aurait dû être [1]!!
/ bookstore/book[last()] Sélectionne le dernier élément du book qui est l'enfant de l'élément
bookstore
/ bookstore/book[last()-1] Sélectionne l'avant-dernier élément d'un book qui est l'enfant de
l'élément bookstore
/bookstore/book[position() < Sélectionne les premiers éléments de deux books qui sont des enfants
3] de l'élément bookstore
/ / title[@lang] Sélectionne tous les éléments de title qui ont un attribut nommé lang
/ / title[@lang='eng'] Sélectionne tous les éléments de title qui ont un attribut nommé lang
avec une valeur « eng »
/bookstore/book[price > 35] Sélectionne tous les éléments book de l'élément bookstore qui ont un
élément price avec une valeur supérieure à 35
/bookstore/book [price > 35] / Sélectionne tous les éléments de title des éléments book de l'élément
title bookstore qui ont un élément price avec une valeur supérieure à 35
Sélection de nœuds inconnus
Caractères génériques qui peuvent servir à sélectionner les éléments XML inconnus.
caractère Description
* Correspond à un nœud d'élément
@* Correspond à un nœud d'attribut
node() Correspond à un nœud quelconque

Dans le tableau ci-dessous, nous avons listé certaines expressions de chemin d'accès et le résultat des
expressions :
Expression de chemin Résultat
/ bookstore / * Sélectionne tous les nœuds enfants de l'élément bookstore
//* Sélectionne tous les éléments dans le document.
/ / title[@*] Sélectionne tous les éléments title qui ont un attribut

Sélection de plusieurs chemins d'accès


En utilisant le | opérateur dans une expression XPath, vous pouvez sélectionner plusieurs chemins d'accès.
Dans le tableau ci-dessous, nous avons listé certaines expressions de chemin d'accès et le résultat des
expressions :
Expression de chemin Résultat
//book/title | //book/price Sélectionne toutes les title et price des éléments de tous les éléments du
book
//title | //Price Sélectionne toutes les title et price des éléments dans le document
/Bookstore/Book/title | Sélectionne tous les éléments title de l'élément book de l'élément
//Price bookstore et tous les éléments price dans le document.

Exercice: Nous utiliserons le document XML suivant dans les exemples ci-dessous.

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


<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="web">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>

Ecrivez les requêtes XPath suivantes :


1. Sélectionnez tous les titres
2. Sélectionnez le titre du premier livre
3. Sélectionnez le premier auteur du 3eme livre
4. Sélectionnez tous les prix
5. Sélectionnez tous les prix> 35
6. Sélectionnez tous les titres avec un prix> 35
7. Sélectionnez les titres des livres ayant plus qu’un auteur
8. Sélectionne tous les éléments dans le document.
9. Sélectionne tous les éléments ayant un attribut dans le document.

Vous aimerez peut-être aussi