XPath (XML Path Language) là một ngôn ngữ truy vấn mạnh mẽ được thiết kế để điều hướng và trích xuất dữ liệu từ các tài liệu XML. Trong bối cảnh công nghệ thông tin phát triển nhanh chóng, khi các ứng dụng không chỉ cần lưu trữ mà còn phải trao đổi thông tin với nhau, XPath trở thành một công cụ không thể thiếu. Bài viết này sẽ giúp bạn hiểu rõ về XPath, từ cấu trúc cơ bản đến các hàm chức năng hữu ích.
Để tiếp cận XPath một cách hiệu quả, trước tiên, bạn cần có kiến thức nền tảng về các ngôn ngữ đánh dấu như XML và HTML. Cấu trúc của một tài liệu XML có thể được hình dung như một cây, với các thành phần khác nhau được gọi là “element”.
Mục Lục
Mối Quan Hệ Giữa Các Element Trong XPath
XPath định nghĩa các mối quan hệ giữa các element trong một tài liệu XML, giúp chúng ta dễ dàng di chuyển và truy xuất dữ liệu. Dưới đây là các mối quan hệ cơ bản:
-
Parent (Cha): Mỗi node (element, attribute) đều có một node cha. Ví dụ, trong đoạn XML sau, node
articlelà parent của các nodesid,author,title… -
Children (Con): Mỗi node có thể có nhiều hoặc không có node con nào. Ví dụ, node
idlà children của nodearticle. -
Siblings (Anh em): Là các nodes có chung node parent. Ví dụ, các nodes
id,author,linklà siblings. -
Ancestors (Tổ tiên): Là các nodes tổ tiên, bao gồm node parent và các nodes parent của parent. Ví dụ, node
listlà ancestor của nodeauthor. -
Descending (Hậu duệ): Là các nodes con cháu, bao gồm node children và các nodes children của children.
Path Expressions Trong XPath
XPath sử dụng “path expressions” để di chuyển và truy xuất thuộc tính trong các node của tài liệu XML.
Minh họa Path Expressions trong XPath
Ví dụ, xét một tài liệu XML sau:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title>Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title>Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
Để lấy ra tất cả các element book, ta có thể sử dụng biểu thức //book. Để lấy ra những cuốn sách có giá lớn hơn 35.00, ta dùng biểu thức /bookstore/book[price>35.00].
Các Hàm Hữu Ích Trong XPath
XPath cung cấp một loạt các hàm hữu ích để thao tác và trích xuất dữ liệu:
-
Thao tác với chuỗi:
concat(),substring(),contains(),substring-before(),substring-after(),translate(),normalize-space(),string-length(). Ví dụ,concat('Hello', ' ', 'World')sẽ trả về “Hello World”. -
Thao tác với số:
sum(),round(),floor(),ceiling(). Ví dụ,sum((1, 2, 3))sẽ trả về 6. -
Lấy thông tin về vị trí:
position(),last(). Ví dụ, trong biểu thức/bookstore/book[position()=1],position()trả về vị trí của node hiện tại. -
Chuyển đổi định dạng dữ liệu:
string(),number(),boolean(). Ví dụ,string(123)sẽ trả về chuỗi “123”. -
Lấy ra thuộc tính của 1 node:
name(),local-name(),namespace-uri(). Ví dụ,name(//book[1])sẽ trả về tên của element book đầu tiên.
Sự mạnh mẽ và tiện dụng của XPath đã giúp nó trở nên phổ biến và được hỗ trợ trong nhiều ngôn ngữ lập trình như Java, JavaScript, PHP, Python, và Ruby. XPath giúp các nhà phát triển dễ dàng truy xuất và xử lý dữ liệu từ các tài liệu XML, tạo nền tảng cho việc xây dựng các ứng dụng linh hoạt và hiệu quả.
