XPath-Beispiel

In diesem Abschnitt lernen wir durch Beispiele einige grundlegende XPath-Syntax.

XML-Beispiel-Dokument

Wir werden im folgenden Beispiel diesen XML-Dokument verwenden:

"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>

Sehen Sie sich die Datei "books.xml" in Ihrem Browser an.

Laden von XML-Dokumenten

Alle modernen Browser unterstützen die Methode XMLHttpRequest, um XML-Dokumente zu laden.

Code für die meisten modernen Browser:

var xmlhttp=new XMLHttpRequest()

Code für alte Microsoft-Browser (IE 5 und 6):

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

Wählt Knoten

Leider behandeln Internet Explorer und andere Browser XPath unterschiedlich.

In unserem Beispiel enthält der Code für die meisten gängigen Browser.

Internet Explorer verwendet die Methode selectNodes() zur Auswahl von Knoten aus XML-Dokumenten:

xmlDoc.selectNodes(xpath);

Firefox, Chrome, Opera und Safari verwenden die Methode evaluate() zur Auswahl von Knoten aus XML-Dokumenten:

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

Wählt alle title

Der folgende Beispiel wählt alle title-Knoten aus:

/bookstore/book/title

Probieren Sie es selbst aus

Wählen Sie den title des ersten book

Der folgende Beispiel wählt den title des ersten book-Knotens unter dem bookstore-Element aus:

/bookstore/book[1]/title

Probieren Sie es selbst aus

Hier ist ein Problem. Der obige Beispiel gibt in IE und anderen Browsern unterschiedliche Ergebnisse aus.

Versionen von IE5 und höher betrachten [0] als ersten Knoten, während nach den Standards der W3C [1] sein sollte.

Um das Problem mit [0] und [1] in IE5+ zu lösen, kann die Sprache für XPath (SelectionLanguage) eingestellt werden.

Der folgende Beispiel wählt den title des ersten book-Knotens unter dem bookstore-Element aus:

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

Probieren Sie es selbst aus

Wählen Sie alle Preise aus

Der folgende Beispiel wählt alle Texte aus den price-Knoten aus:

/bookstore/book/price/text()

Probieren Sie es selbst aus

Wählen Sie price-Knoten mit einem Preis höher als 35 aus

Der folgende Beispiel wählt alle price-Knoten aus, deren Preis höher als 35 ist:

/bookstore/book[price>35]/price

Probieren Sie es selbst aus

Wählen Sie title-Knoten mit einem Preis höher als 35 aus

Der folgende Beispiel wählt alle title-Knoten aus, deren Preis höher als 35 ist:

/bookstore/book[price>35]/title

Probieren Sie es selbst aus