XPath Là Gì? Tìm Hiểu Ngôn Ngữ Truy Vấn XML Path Language

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ố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 article là parent của các nodes id, author, title

  • Children (Con): Mỗi node có thể có nhiều hoặc không có node con nào. Ví dụ, node id là children của node article.

  • Siblings (Anh em): Là các nodes có chung node parent. Ví dụ, các nodes id, author, link là 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 list là ancestor của node author.

  • 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 XPathMinh 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ả.