Ví dụ XPath

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

Tài liệu XML mẫu

Chúng ta sẽ sử dụng tài liệu XML này trong 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 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ũ (IE 5 và 6):

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

Chọn các nút

Thật không may, 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ã phù hợp với 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 trong 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 trong tài liệu XML:

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

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

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

/bookstore/book/title

Thử trực tiếp

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

Ví dụ dưới đây chọn nút title của phần tử bookstore đầu tiên:

/bookstore/book[1]/title

Thử trực tiếp

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

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.

Ví dụ dưới đây chọn nút title của phần tử bookstore đầu tiên:

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

Thử trực tiếp

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

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

/bookstore/book/price/text()

Thử trực tiếp

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ử trực tiếp

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ử trực tiếp