Cú pháp XPath

XPath sử dụng biểu thức đường dẫn để chọn nút hoặc nhóm nút trong tài liệu XML. Các nút được chọn thông qua việc theo theo đường dẫn (path) hoặc bước (steps).

Ví dụ tài liệu XML

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

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

Chọn nút

XPath sử dụng biểu thức đường dẫn để chọn nút trong tài liệu XML. Các nút được chọn thông qua việc theo theo đường dẫn hoặc bước.

Dưới đây là một số biểu thức đường dẫn hữu ích nhất:

Biểu thức Mô tả
nodename Chọn tất cả các con节点 của điểm này.
/ Chọn từ điểm gốc.
// Chọn điểm trong tài liệu từ điểm hiện tại được chọn, không quan tâm đến vị trí của chúng.
. Chọn điểm hiện tại.
.. Chọn phần tử bậc trên của điểm hiện tại.
@ Chọn thuộc tính.

Mẫu

Trong bảng dưới đây, chúng tôi đã liệt kê một số biểu thức đường dẫn và kết quả của biểu thức:

Đường dẫn biểu thức Kết quả
bookstore Chọn tất cả các con节点 của phần tử bookstore.
/bookstore

Chọn phần tử gốc bookstore.

Ghi chú: Nếu đường dẫn bắt đầu bằng dấu chéo thẳng (/), thì đường dẫn đó luôn đại diện cho đường dẫn tuyệt đối đến một phần tử!

bookstore/book Chọn tất cả các phần tử book là con của phần tử bookstore.
//book Chọn tất cả các phần tử book con, bất kể chúng nằm ở vị trí nào trong tài liệu.
bookstore//book Chọn tất cả các phần tử book là hậu duệ của phần tử bookstore, bất kể chúng nằm ở vị trí nào dưới bookstore.
//@lang Chọn tất cả các thuộc tính có tên là lang.

Tiền tố (Predicates)

Tiền tố được sử dụng để tìm kiếm một điểm cụ thể hoặc điểm chứa một giá trị cụ thể.

Tiền tố được đặt trong dấu ngoặc vuông.

Mẫu

Trong bảng dưới đây, chúng tôi đã liệt kê một số biểu thức đường dẫn có tiền tố và kết quả của biểu thức:

Đường dẫn biểu thức Kết quả
/bookstore/book[1] Chọn phần tử book đầu tiên trong phần tử bookstore.
/bookstore/book[last()] Chọn phần tử book cuối cùng trong phần tử bookstore.
/bookstore/book[last()-1] Chọn phần tử book cuối cùng trong phần tử bookstore.
/bookstore/book[position()<3] Chọn hai phần tử book đầu tiên là con của phần tử bookstore.
//title[@lang] Chọn tất cả các phần tử title có thuộc tính lang.
//title[@lang='eng'] Chọn tất cả các phần tử title có thuộc tính lang bằng eng.
/bookstore/book[price>35.00] Chọn tất cả các phần tử book trong phần tử bookstore và giá trị của phần tử price phải lớn hơn 35.00.
/bookstore/book[price>35.00]/title Chọn tất cả các phần tử title của phần tử book trong phần tử bookstore, và giá trị của phần tử price phải lớn hơn 35.00.

Chọn các nút không biết

Bí ẩn XPath có thể được sử dụng để chọn các phần tử XML không biết.

Bí ẩn Mô tả
* Khớp với bất kỳ nút phần tử nào.
@* Khớp với bất kỳ nút thuộc tính nào.
node() Khớp với bất kỳ loại nút nào.

Mẫu

Trong bảng dưới đây, chúng tôi liệt kê một số biểu thức đường dẫn và kết quả của các biểu thức đó:

Đường dẫn biểu thức Kết quả
/bookstore/* Chọn tất cả các phần tử con của phần tử bookstore.
//* Chọn tất cả các phần tử trong tài liệu.
//title[@*] Chọn tất cả các phần tử title có thuộc tính.

Chọn nhiều đường dẫn

Bằng cách sử dụng toán tử "|" trong biểu thức đường dẫn, bạn có thể chọn nhiều đường dẫn.

Mẫu

Trong bảng dưới đây, chúng tôi liệt kê một số biểu thức đường dẫn và kết quả của các biểu thức đó:

Đường dẫn biểu thức Kết quả
//book/title | //book/price Chọn tất cả các phần tử title và price của phần tử book.
//title | //price Chọn tất cả các phần tử title và price trong tài liệu.
/bookstore/book/title | //price Chọn tất cả các phần tử title thuộc phần tử bookstore và tất cả các phần tử price trong tài liệu.