Chân của XPath (Axes)

Tài liệu ví dụ XML

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

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>

  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

Trục XPath

Trục có thể định nghĩa tập hợp các nút so với phần tử hiện tại. Kết quả
Tên trục ancestor
Chọn tất cả các phần tử tổ tiên, cha, tổ phụ của phần tử hiện tại. ancestor-or-self
Chọn tất cả các phần tử tổ tiên, cha, tổ phụ và phần tử hiện tại. Chọn tất cả các thuộc tính của phần tử hiện tại.
attribute Chọn tất cả các con phần tử của phần tử hiện tại.
child descendant
Chọn tất cả các phần tử con, cháu của phần tử hiện tại. descendant-or-self
Chọn tất cả các phần tử con, cháu và phần tử hiện tại của phần tử hiện tại. following
Chọn tất cả các phần tử sau dấu đóng của phần tử hiện tại trong tài liệu. namespace
Chọn tất cả các phần tử không gian tên của phần tử hiện tại. parent
Chọn phần tử cha của phần tử hiện tại. preceding
Chọn tất cả các phần tử trước dấu mở của phần tử hiện tại trong tài liệu. preceding-sibling
Chọn tất cả các phần tử cùng cấp trước phần tử hiện tại. self

Chọn nút hiện tại.

Biểu thức đường dẫn vị trí

Đường dẫn vị trí có thể là tuyệt đối hoặc tương đối.

Đường dẫn vị trí tuyệt đối bắt đầu từ dấu gạch chéo ngang ( / ), trong khi đường dẫn vị trí tương đối không như vậy. Trong hai trường hợp này, đường dẫn vị trí đều bao gồm một hoặc nhiều bước, mỗi bước được dấu gạch chéo chia cách:

/step/step/...

Đường dẫn vị trí tương đối:

step/step/...

Mỗi bước đều được tính toán dựa trên các nút trong tập hợp nút hiện tại.

Bước (step) bao gồm:

Trục (axis)
Định nghĩa mối quan hệ cây giữa nút đã chọn và nút hiện tại
Thử nghiệm nút (node-test)
Nhận diện các nút trong một trục cụ thể
Không có hoặc nhiều định ngữ (predicate)
Tinh chỉnh sâu hơn tập hợp các nút đã chọn

Cú pháp bước:

Tên trục::thử nghiệm[định ngữ]

Mô hình

Ví dụ Kết quả
child::book Chọn tất cả các phần tử book thuộc con của phần tử hiện tại.
attribute::lang Chọn thuộc tính lang của phần tử hiện tại.
child::* Chọn tất cả các con phần tử của phần tử hiện tại.
attribute::* Chọn tất cả các thuộc tính của phần tử hiện tại.
child::text() Chọn tất cả các con văn bản của phần tử hiện tại.
child::node() Chọn tất cả các con của phần tử hiện tại.
descendant::book Chọn tất cả các phần tử con book của nút hiện tại
ancestor::book Chọn tất cả các bậc tổ tiên book của nút hiện tại
ancestor-or-self::book Chọn tất cả các bậc tổ tiên book của nút hiện tại và nút hiện tại (nếu nút hiện tại là nút book)
child::*/child::price Chọn tất cả các phần tử con price của nút hiện tại.