Exemples XPath

Dans cette section, nous allons apprendre quelques éléments de syntaxe XPath à travers des exemples.

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.

Charger un document 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électionner des nœuds

Malheureusement, Internet Explorer et d'autres traite XPath différemment.

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électionner tous les nœuds title

Les exemples suivants sélectionnent tous les nœuds title :

/bookstore/book/title

Essayer par vous-même

Sélectionnez le titre du premier book

Les exemples suivants sélectionnent le titre du premier book sous l'élément bookstore :

/bookstore/book[1]/title

Essayer par vous-même

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 les problèmes [0] et [1] dans IE5+, vous pouvez définir le choix de langue pour XPath (SelectionLanguage).

Les exemples suivants sélectionnent le titre du premier book sous l'élément bookstore :

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

Essayer par vous-même

Sélectionnez toutes les prix

Les exemples suivants sélectionnent tous les textes des nœuds price :

/bookstore/book/price/text()

Essayer par vous-même

Sélectionnez les nœuds price dont le prix est supérieur à 35

Les exemples suivants sélectionnent tous les nœuds price dont le prix est supérieur à 35 :

/bookstore/book[price>35]/price

Essayer par vous-même

Sélectionnez les nœuds title dont le prix est supérieur à 35

Les exemples suivants sélectionnent tous les nœuds title dont le prix est supérieur à 35 :

/bookstore/book[price>35]/title

Essayer par vous-même