Contoh XPath

在本节,让我们通过实例来学习一些基础的 XPath 语法。

XML实例文档

我们将在下面的例子中使用这个 XML 文档:

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

Lihat berkas "books.xml" ini di pereka web Anda.

Memuat dokumen XML

Semua pereka web modern mendukung metode XMLHttpRequest untuk memuat dokumen XML.

Kode untuk sebagian besar pereka web modern:

var xmlhttp=new XMLHttpRequest()

Kode untuk pereka web Microsoft kuno (IE 5 dan 6):

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

Memilih nod

Sayangnya, Internet Explorer dan yang lainnya mengelola XPath dengan cara yang berbeda.

Dalam contoh kami, kode yang sesuai untuk sebagian besar pereka web utama.

Internet Explorer menggunakan metode selectNodes() untuk memilih nod dari dokumen XML:

xmlDoc.selectNodes(xpath);

Firefox, Chrome, Opera serta Safari menggunakan metode evaluate() untuk memilih nod dari dokumen XML:

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

Pilih semua title

Contoh yang dipilih adalah semua titik title:

/bookstore/book/title

Coba Sendiri

Memilih title pertama book

Contoh di bawah ini memilih title nod pertama di bawah elemen bookstore:

/bookstore/book[1]/title

Coba Sendiri

Ada masalah di sini. Contoh di atas mengeluarkan hasil yang berbeza di IE dan browser lain.

Versi IE5 dan yang lebih tinggi melihat [0] sebagai nod pertama, manakala menurut standar W3C, ia seharusnya adalah [1].

Untuk menyelesaikan masalah [0] dan [1] di IE5+, boleh ditetapkan pilihan bahasa pilihan (SelectionLanguage) untuk XPath.

Contoh di bawah ini memilih title nod pertama di bawah elemen bookstore:

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

Coba Sendiri

Memilih semua harga

Contoh di bawah ini memilih semua teks dalam nod price:

/bookstore/book/price/text()

Coba Sendiri

Memilih nod price dengan harga melebihi 35

Contoh di bawah ini memilih semua nod price yang harga melebihi 35:

/bookstore/book[price>35]/price

Coba Sendiri

Memilih nod title dengan harga melebihi 35

Contoh di bawah ini memilih semua title nod yang harga melebihi 35:

/bookstore/book[price>35]/title

Coba Sendiri