Search…

XML Path Language

23/09/20204 min read
Hướng dẫn sử dụng XPath để di chuyển, sàng lọc các elements và attributes giúp cho ứng dụng có thể truy xuất được giá trị của các element trong một tài liệu XML

Giới thiệu

XML là một ngôn ngữ để mô tả và lưu trữ dữ liệu. Tuy nhiên với tốc độ phát triển của công nghệ thông tin, nhu cầu của các ứng dụng không chỉ dừng lại ở mức lưu trữ, các hệ thống cần trao đổi thông tin với nhau. Để trao đổi thông tin trong các tài liệu XML cần một chuẩn chung để truy xuất dữ liệu.

Giải quyết vấn đề đó, XML Path Language (XPath) được sinh ra. XPath là một ngôn ngữ thiết kế ra với mục đích giúp các chương trình ứng dụng có thể di chuyển bên trong tài liệu XML và truy xuất các giá trị của các elements cũng như các attributes.

XML Path Language (XPath)

Để một ứng dụng có thể sử dụng được dữ liệu bên trong tài liệu XML thì ứng dụng đó phải có khả năng đi lại tìm kiếm và truy xuất nội dung của các elements và các attributes. Để giải quyết vấn đề trên đã thiết kế ra XML Path Language (XPath). XPath đóng một vai trò hết sức quan trọng trong việc truy vấn dữ liệu và một số kỹ thuật khác trong ngôn ngữ XML.

Tài liệu XML như một cây với XPath

XPath cung cấp cú pháp để mô tả cách di chuyển trong một tài liệu XML. Để có thể di chuyển trong tài liệu XML, trước hết XPath xem một tài liệu XML như một cấu trúc dạng cây (tree) và các elements, attributes bên trong được xem như các nodes của cây.

Một tài liệu XML có nội dung:

<?xml version="1.0" encoding="UTF-8"?>
<list>
	<article id="64">
		<author>La Kiến Vinh</author>
		<title>So Sánh null Và Rỗng</title>
		<link>http://www.stdio.vn/articles/read/64-so-sanh-null-va-rong</link>
		<publish_date>22/09/2014</publish_date>
	</article>
	<article id="63">
		<author>Vũ Quang Huy</author>
		<title>Giới Thiệu Về Fractal</title>
		<link>https://www.stdio.vn/articles/read/20/gioi-thieu-ve-fractal</link>
		<publish_date>17/06/2014</publish_date>
	</article>
</list>

Đối với XPath, tài liệu XML trên được hiện thực bằng một tree với element được biểu diễn bằng node màu trắng, attribute được biểu diễn bằng node màu xám.

ss_1

Mối quan hệ giữa các element

XPath xem tài liệu XML như một cấu trúc dạng tree, do đó giữ các element tồn tại các mối quan hệ với nhau.

  • Parent: mỗi node (element, attribute) đều có một node parent. Ví dụ ở trên, node article là parent của các nodes id, author, title
  • Children: mỗi node có thể có nhiều và cũng có thể không có node children nào. Ví dụ ở trên, node id là children của node article. Node id cũng có thể không có node children nào cả.
  • Siblings: các nodes có chung node parent. Ví dụ như các nodes id, author, link
  • Ancestors: các nodes tổ tiên, bao gồm node parent và các nodes parent của parent. Ví dụ có thể xem node list là ancestor của node author.
  • Descending: các nodes con cháu, bao gồm node children và các nodes children của children.

Cú pháp XPath

Di chuyển trong tài liệu XML

Muốn truy vấn dữ liệu trong một tài liệu XML trước hết phải di chuyển được trong tài liệu XML.

Ví dụ: để có thể sử dụng một file, một chương trình trên máy tính, việc đầu tiên phải di chuyển vào các thư mục chứa file, chương trình đó.

XPath cung cấp hai cách để diễn tả location path đến một node, viết đầy đủ và viết tắt. Trong cả hai cách đều dùng dấu slash / để nói đến root element. Xét ví dụ ở trên sẽ tìm location path đến một số nodes:

Node article

Cách viết đầy đủ: /child::list/child::article

Cách viết tắt: /list/article

Node id

Cách viết đầy đủ: /child::list/child::article/attribute::id

Cách viết tắt: /list/article/@id

Qua hai ví dụ trên có hai vấn đề:

  • Thứ nhất cách viết đầy đủ nêu rõ mối quan hệ giữa các element, cách viết tắt thì không.
  • Thứ hai location path như trên chỉ giúp ứng dụng đi đến các nodes được chỉ định, còn khi muốn tìm kiếm có sàng lọc các nodes thì phải làm như thế nào? Để giải quyết vấn đề sàng lọc kết quả, người ta áp dụng biểu thức điều kiện vào location path.

Sử dụng điều kiện trong location path

Để sàng lọc kết quả, ta có thể thêm điều kiện (biểu thức, chỉ số, operator union) vào location path, điều kiện này được để trong cặp ngoặc vuông []. Một vài ví dụ về sử dụng điều kiện trong location path.

Tìm location path đến những nodes articleid > 60

Cách viết đầy đủ: /child::list/child::article[attribute::id > 60]

Cách viết tắt: /list/article[@id > 60]

Tìm location path đến những node article đầu tiên

Cách viết đầy đủ: /child::list/child::article[1]

Cách viết tắt: /list/article[1]

Chú ý, chỉ số trong XPath bắt đầu từ số 1, nghĩa là node đầu tiên sẽ có chỉ số là 1 (thay vì 0 như một số ngôn ngữ lập trình). Ngoài ra để truy xuất theo chỉ số, XPath còn cung cấp một số function như last(), position()

Tìm location path đến tất cả những nodes là con của node article

Cách viết đầy đủ: /child::list/child::article/child::*

Cách viết tắt: /list/article/*

XPath cũng hỗ trợ kí tự đại diện asterisk (*) mang ý nghĩa tất cả.

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024