XPath Voorbeelden

In this section, let's learn some basic XPath syntax through examples.

XML example document

We will use this XML document in the following example:

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

Bekijk dit "books.xml"-bestand in uw browser.

Laden van XML-document

Alle moderne browsers ondersteunen de methode XMLHttpRequest om XML-documenten te laden.

Code voor de meeste moderne browsers:

var xmlhttp=new XMLHttpRequest()

Code voor oude Microsoft-browsers (IE 5 en 6):

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

Selecteer knopen

Helaas behandelen Internet Explorer en andere browsers XPath op een andere manier.

In ons voorbeeld bevat de code voor de meeste gangbare browsers.

Internet Explorer gebruikt de methode selectNodes() om knopen uit een XML-document te selecteren:

xmlDoc.selectNodes(xpath);

Firefox, Chrome, Opera en Safari gebruiken de methode evaluate() om knopen uit een XML-document te selecteren:

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

Selecteer alle title

Hier is een voorbeeld dat alle title-elementen selecteert:

/bookstore/book/title

Probeer het zelf

Selecteer de title van het eerste book

De volgende voorbeelden selecteren de title van het eerste book-knooppunt onder de bookstore-elementen:

/bookstore/book[1]/title

Probeer het zelf

Hier is een probleem. De voorbeelden bovenstaande geven verschillende resultaten in IE en andere browsers.

IE5 en hogere versies zien [0] als de eerste knoop, terwijl volgens de normen van de W3C dit [1] zou moeten zijn.

Om het probleem met [0] en [1] in IE5+ op te lossen, kan de taalkeuze (SelectionLanguage) voor XPath worden ingesteld.

De volgende voorbeelden selecteren de title van het eerste book-knooppunt onder de bookstore-elementen:

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

Probeer het zelf

Selecteer alle prijzen

De volgende voorbeelden selecteren alle tekst in de price-knooppunten:

/bookstore/book/price/text()

Probeer het zelf

Selecteer price-knooppunten met een prijs hoger dan 35

De volgende voorbeelden selecteren alle price-knooppunten met een prijs hoger dan 35:

/bookstore/book[price>35]/price

Probeer het zelf

Selecteer title-knooppunten met een prijs hoger dan 35

De volgende voorbeelden selecteren alle title-knooppunten met een prijs hoger dan 35:

/bookstore/book[price>35]/title

Probeer het zelf