Exemple XPath

Dans cette section, nous allons apprendre quelques bases de la syntaxe XPath par l'exemple.

Document d'exemple XML

Nous allons utiliser ce document XML dans les exemples suivants :

"books.xml" :

<?xml version="1.0" encoding="ISO-8859-1"?>
<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>

Voyez ce fichier "books.xml" dans votre navigateur.

Chargement de documents XML

Tous les navigateurs modernes supportent la méthode XMLHttpRequest pour charger des documents XML.

Code pour la plupart des navigateurs modernes :

var xmlhttp=new XMLHttpRequest()

Code pour les navigateurs Microsoft anciens (IE 5 et 6) :

var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

Sélection de nœuds

Malheureusement, Internet Explorer et d'autres traite XPath de manière différente.

Dans notre exemple, le code est applicable à la plupart des navigateurs populaires.

Internet Explorer utilise la méthode selectNodes() pour sélectionner des nœuds dans un document XML :

xmlDoc.selectNodes(xpath);

Firefox, Chrome, Opera et Safari utilisent la méthode evaluate() pour sélectionner des nœuds dans un document XML :

xmlDoc.evaluate(xpath, xmlDoc, null, XPathResult.ANY_TYPE,null);

Sélection de tous les title

L'exemple suivant sélectionne tous les nœuds title :

/bookstore/book/title

Essayer personnellement

Sélection du titre du premier book

L'exemple suivant sélectionne le titre du premier nœud book sous l'élément bookstore :

/bookstore/book[1]/title

Essayer personnellement

Il y a un problème ici. Les exemples ci-dessus produisent des résultats différents dans IE et d'autres navigateurs.

IE5 et versions supérieures considèrent [0] comme le premier nœud, tandis que selon la norme W3C, ce devrait être [1].

Pour résoudre le problème [0] et [1] dans IE5+, vous pouvez définir le choix de langue pour XPath (SelectionLanguage).

L'exemple suivant sélectionne le titre du premier nœud book sous l'élément bookstore :

xml.setProperty("SelectionLanguage","XPath");
xml.selectNodes("/bookstore/book[1]/title");

Essayer personnellement

Sélection de toutes les prix

L'exemple suivant sélectionne tous les textes du nœud price :

/bookstore/book/price/text()

Essayer personnellement

Sélection des nœuds price dont le prix est supérieur à 35

Les exemples suivants sélectionnent tous les nœuds price avec un prix supérieur à 35 :

/bookstore/book[price>35]/price

Essayer personnellement

Sélection des nœuds title avec un prix supérieur à 35

Les exemples suivants sélectionnent tous les nœuds title avec un prix supérieur à 35 :

/bookstore/book[price>35]/title

Essayer personnellement