XPath eksempler

I denne sektion lærer vi nogle grundlæggende XPath syntaks gennem eksempler.

XML eksempel dokument

Vi vil bruge denne XML-dokument i de følgende eksempler:

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

Se "books.xml"-filen i din browser.

Indlæs XML-dokument

Alle moderne browsere understøtter metoden XMLHttpRequest til at indlæse XML-dokumenter.

Kode til de fleste moderne browsere:

var xmlhttp=new XMLHttpRequest()

Kode til gamle Microsoft-browsere (IE 5 og 6):

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

Vælg node

Desværre håndterer Internet Explorer og andre XPath-på forskellig vis.

I vores eksempel indeholder vi kode, der er kompatibel med de fleste主流浏览器的.

Internet Explorer bruger selectNodes() metoden til at vælge noder fra XML-dokumenter:

xmlDoc.selectNodes(xpath);

Firefox, Chrome, Opera og Safari bruger evaluate() metoden til at vælge noder fra XML-dokumenter:

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

Vælg alle title

Følgende eksempel vælger alle title-noder:

/bookstore/book/title

Prøv det selv

Vælg title for den første book

Følgende eksempel vælger title-noden under den første book-nden i bookstore-elementet:

/bookstore/book[1]/title

Prøv det selv

Der er et problem her. De ovennævnte eksempler giver forskellige resultater i IE og andre browsere.

IE5 og nyere versioner ser [0] som den første node, mens W3C's standard er [1].

For at løse problemet med [0] og [1] i IE5+ kan du angive sprogvalg (SelectionLanguage) for XPath.

Følgende eksempel vælger title-noden under den første book-nden i bookstore-elementet:

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

Prøv det selv

Vælg alle priser

Følgende eksempel vælger alle tekster i price-noderne:

/bookstore/book/price/text()

Prøv det selv

Vælg price-noder med pris over 35

Følgende eksempel vælger alle price-noder med pris over 35:

/bookstore/book[price>35]/price

Prøv det selv

Vælg title-noder med pris over 35

Følgende eksempel vælger alle title-noder med pris over 35:

/bookstore/book[price>35]/title

Prøv det selv