Ví dụ XPath

Trong phần này, hãy cùng tìm hiểu một số cú pháp cơ bản của XPath thông qua các ví dụ.

Ví dụ XML

Chúng ta sẽ sử dụng tài liệu XML này trong các ví dụ sau:

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

Xem tệp "books.xml" này trong trình duyệt của bạn.

Tải tài liệu XML

Tất cả các trình duyệt hiện đại đều hỗ trợ phương thức sử dụng XMLHttpRequest để tải tài liệu XML.

Mã cho hầu hết các trình duyệt hiện đại:

var xmlhttp=new XMLHttpRequest()

Mã cho trình duyệt Microsoft cổ điển (IE 5 và 6):

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

Chọn nút

Đ遗憾的是, Internet Explorer và các cách xử lý XPath khác nhau.

Trong ví dụ của chúng ta, bao gồm mã áp dụng cho hầu hết các trình duyệt phổ biến.

Internet Explorer sử dụng phương thức selectNodes() để chọn các nút từ tài liệu XML:

xmlDoc.selectNodes(xpath);

Firefox, Chrome, Opera và Safari sử dụng phương thức evaluate() để chọn các nút từ tài liệu XML:

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

Chọn tất cả các title

Dưới đây là ví dụ chọn tất cả các nút title:

/bookstore/book/title

Thử ngay

Chọn title của book đầu tiên

Dưới đây là ví dụ chọn title của nút book đầu tiên dưới bookstore:

/bookstore/book[1]/title

Thử ngay

Có một vấn đề ở đây. Ví dụ trên trong IE và các trình duyệt khác cho ra kết quả khác nhau.

IE5 và các phiên bản cao hơn coi [0] là nút đầu tiên, trong khi theo tiêu chuẩn W3C, nó nên là [1].

Để giải quyết vấn đề [0] và [1] trong IE5+, có thể thiết lập ngôn ngữ chọn (SelectionLanguage) cho XPath.

Dưới đây là ví dụ chọn title của nút book đầu tiên dưới bookstore:

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

Thử ngay

Chọn tất cả các giá

Dưới đây là ví dụ chọn tất cả các văn bản trong các nút price:

/bookstore/book/price/text()

Thử ngay

Chọn các nút price có giá cao hơn 35

Ví dụ dưới đây chọn tất cả các nút price có giá cao hơn 35:

/bookstore/book[price>35]/price

Thử ngay

Chọn các nút title có giá cao hơn 35

Ví dụ dưới đây chọn tất cả các nút title có giá cao hơn 35:

/bookstore/book[price>35]/title

Thử ngay