Giới thiệu về Xpath (XML Path Language)

Như các bạn đã biết XML là một ngôn ngữ tuyệt vời để 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, người ta 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 cho ứng dụng có thể di chuyển bên trong XML document và truy xuất các giá trị cũng như thuộc tính của các elements. Để có thể tiếp cận được Xpath nhanh nhất, trước tiên bạn cần hiểu về những ngôn ngữ đặc tả giống như XML, HTML. Cấu trúc 1 tài liệu XML có thể hình dung như 1 cái cây với nhiều cành và nhánh nhỏ khác nhau. Tất cả các thành phần đó đuề được gọi là element. Giờ ta sẽ xem mối quan hệ giữa các element này trong Xpath như thế nào:

  • 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: là các nodes có chung node parent. Ví dụ như các nodes id, author, link …
  • Ancestors: là 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: là các nodes con cháu, bao gồm node children và các nodes children của children.

-- Xpath xử dụng path expressions để di chuyển hay truy xuất thuộc tính trong các node của XML document. Biểu thức được đặc tả trong liệt kê sau:

Ví dụ ta có 1 XML document:

<?xml version="1.0" encoding="UTF-8"?>```
<bookstore> <book> <title lang="en">Harry Potter</title>

29.99

</book> <book> <title lang="en">Learning XML</title>

39.95

</book> </bookstore>

Giờ ta muốn lấy ra tất cả các book element bằng biểu thức "//book" hay "/bookstore/book[price>35.00]" để lấy ra chỉ những cuốn sách nào có giá lớn hơn 35.00. -- Xpath cung cấp 1 số function rất hữu ích:

  • Thao tác với chuỗi: concat(), substring(), contains(), substring-before(), substring-after(), translate(), normalize-space(), string-length()
  • Thao tác với số: sum(), round(), floor(), ceiling()
  • Lấy thông tin về vị trí: position(), last()
  • Chuyển đổi định dạng dữ liệu: string(), number(), boolean()
  • Lấy ra thuộc tính của 1 node: name(), local-name(), namespace-uri()

Sự mạnh mẽ và tiện dụng mà Xpath mang lại đã khiến cho nó trở nên phổ biến, được hỗ trợ trong nhiều ngôn ngữ như Java, JavaScript, PHP, Python, Ruby .... Link tham khảo: https://docs.oracle.com/javase/tutorial/jaxp/xslt/xpath.html