Ngữ pháp XPath

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

Văn bản thực tế XML

Chúng tôi sẽ sử dụng tài liệu XML này trong các ví dụ dưới đây.

<?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 đường dẫn hoặc bước.

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

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

Mô hình

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:

Biểu thức đường dẫn Kết quả
bookstore Chọn tất cả các nút 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 dẫn này 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 thuộc phần tử con của bookstore.
//book Chọn tất cả các phần tử con book, bất kể chúng ở vị trí nào trong tài liệu.
bookstore//book Chọn tất cả các phần tử con book 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.

Điều kiện (Predicates)

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

Điều kiện được đặt trong dấu ngoặc vuông.

Mô hình

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

Biểu thức đường dẫn Kết quả
/bookstore/book[1] Chọn phần tử book đầu tiên là con của phần tử bookstore.
/bookstore/book[last()] Chọn phần tử book cuối cùng là con của phần tử bookstore.
/bookstore/book[last()-1] Chọn phần tử book倒数第二个 là con của 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 tên là lang.
//title[@lang='eng'] Chọn tất cả các phần tử title có thuộc tính lang với giá trị là 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

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

Biểu tượng 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ô hình

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 chúng:

Biểu thức đường dẫn 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ô hình

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 chúng:

Biểu thức đường dẫn 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ử book của phần tử bookstore, cũng như tất cả các phần tử price trong tài liệu.