: Chủ đề của bài này giới thiệu XPath, một thành phần hỗ trợ giúp truy xuất thông tin trong tập tin XML làm tiền đề cho việc áp dụng stylesheet kết hợp XML để tạo ra kết xuất tùy theo yêu cầu. Bên cạnh đó XPath cũng làm nền tảng cho việc hỗ trợ truy vấn parsing dữ liệu của tài liệu XML cực kỳ nhanh chóng hiệu quả. Hơn thế nữa, XPath hỗ trợ nền tảng để tạo ra XQuery áp dụng trong truy vấn dữ liệu tương tự như truy vấn SQL trên cơ sở dữ liệu
Trang 1Giới thiệu về XPath
Giới thiệu về XPath
Mục đích: Chủ đề của bài này giới thiệu XPath, một thành phần hỗ trợ giúp truy xuất thông tin trong tập tin
XML làm tiền đề cho việc áp dụng stylesheet kết hợp XML để tạo ra kết xuất tùy theo yêu cầu Bên cạnh đó XPath cũng làm nền tảng cho việc hỗ trợ truy vấn parsing dữ liệu của tài liệu XML cực kỳ nhanh chóng hiệu quả Hơn thế nữa, XPath hỗ trợ nền tảng để tạo ra XQuery áp dụng trong truy vấn dữ liệu tương tự như truy vấn SQL trên cơ sở dữ liệu
Giới thiệu về XPath
Mục đích: Chủ đề của bài này giới thiệu XPath, một thành phần hỗ trợ giúp truy xuất thông tin trong tập tin
XML làm tiền đề cho việc áp dụng stylesheet kết hợp XML để tạo ra kết xuất tùy theo yêu cầu Bên cạnh đó XPath cũng làm nền tảng cho việc hỗ trợ truy vấn parsing dữ liệu của tài liệu XML cực kỳ nhanh chóng hiệu quả Hơn thế nữa, XPath hỗ trợ nền tảng để tạo ra XQuery áp dụng trong truy vấn dữ liệu tương tự như truy vấn SQL trên cơ sở dữ liệu
Yêu cầu về kiến thức cơ bản
Nắm vững các khái niệm về XML và cách viết tài liệu XML well-formed (tham khảo lại bài Giới thiệu về XML – định nghĩa, cách viết XML đúng cú pháp (XML well-formed) http://www.kieutrongkhanh.net/2016/08/gioi-thieu-ve-xml-inh-nghia-cach-viet.html )
Nắm vững các khái niệm về namespace và cách sử dụng namespace trong tài liệu XML (tham khảo lại bài Sử dụng XML với namespace – Sử dụng kết hợp những tài liệu XML với nhau từ nhiều người định nghĩa khác nhau http://www.kieutrongkhanh.net/2016/08/su-dung-xml-voi-namespace-su-dung-ket.html )
Nắm vững khái niệm về ngôn ngữ lập trình Java, lập trình thao tác hướng đối tượng, sử dụng các method hay function
Đã viết và kiểm tra một tài liệu XML well-formed
Nắm vững và đã sử dụng tốt ngôn ngữ truy vấn SQL trên các trình quản lý cơ sở dữ liệu quan hệ
Tổng quan XPath
Xpath là một trong ba thành phần trong ngôn ngữ XSL – Extensible Style Language
Là ngôn ngữ hỗ trợ tìm kiếm thông tin trong tài liệu XML qua việc sử dụng biểu thức XPath để định hướng tìm kiếm dữ liệu trên XML thay vì phải thực hiện tìm kiếm đệ qui để duyệt cây XML
Xpath định nghĩa 7 loại nodes theo mô hình thể hiện bên dưới từ root, element, attribute, text, namespace, processing-instruction và comment tương tự như khái niệm về cấu trúc tài liệu XML mà chúng
tôi đã giới thiệu trong bài Giới thiệu về XML – định nghĩa, cách viết XML đúng cú pháp (XML well-formed)
Trang 2o Ngoài ra, Xpath còn định nghĩa một số node đặc biệt để thể hiện mối quan hệ giữa các node trong mô hình trong quá trình xử lý như sau
Parent Node: node trên trực tiếp của node hiện hành
Child Node: tập node trực tiếp của node hiện hành cấp thấp hơn
Sibling: node ngang hàng hay cùng cha với node hiện hành
Ancestors: tất cả node con bên trên node hiện hành cùng nhánh
Descendants: tất cả node con bên dưới của node hiện hành cùng nhánh
Xpath Data Model được định nghĩa là duyệt toàn bộ cây nội dung XML và chuyển đổi – mapping chúng thành 7 loại node đã mô tả ở trên và XPath thực hiện truy vấn trên nội dung cây XML đã được tạo ra
o Mỗi node trong XPath đều có giá trị kiểu chuỗi chứa thông tin của một node bao gồm localname và namespace nếu có để có thể truy vấn đến node trong mô hình một cách dễ dàng thông qua tên
Cú pháp của XPath
o Để truy vấn với đường dẫn tuyệt đối nghĩa là đi từ root của tài liệu XML đến các thành phần
cần truy cập, XPath qui định với cú pháp bắt đầu bằng dấu /
o Để truy vấn với đường dận tương đối để có thể truy cập đến thành phần bất kỳ thỏa điều
kiện, XPath qui định cú pháp sử dụng với dấu //
o Để truy vấn đến một thành phần bất kỳ mà không cần biết tên của nó là gì, XPath qui định
ký tự sử dụng là *
o Để truy cập thuộc tính của một node, XPath qui định thuộc tính truy vấn phải có cú pháp bắt đầu là @. Ví dụ @tênThuộcTính
o Để truy cập đến giá trị của một biến được định nghĩa, XPath qui định biến truy vấn phải
có cú pháp bắt đầu là $. Ví dụ $tênBiến
o Điều kiện khi truy vấn được đặt trong dấu []
o Truy vấn lựa chọn nodes
Trang 3tênNode Chọn tất cả các node con của tênNode
/ Chọn tất cả các node tính từ root
// Chọn tất cả node tính từ node hiện hành
Chọn node cha của node hiện hành
o Các phép toán được sử dụng trong XPath
Đại số: +, -, * (nhân), div (chia thập phân), mod (chia lấy dư)
So Sánh hay quan hệ: =, != (khác), <, <=, >, >=
Luận lý: true, false, and, or, not
o Các thành phần hỗ trợ truy vấn mối quan hệ giữa các node trong tài liệu XML (Axes)
ancestor Chọn tất cả các node trên của node hiện hành
ancestor-or-self Chọn tất cả các node trên của node hiện hành và chính nó
attribute Chọn tất cả các thuộc tính của node hiện hành
child Chọn node con của node hiện hành
descendant Chọn tất cả các node dưới của node hiện hành
descendant-or-self Chọn tất cả các node dưới của node hiện hành và chính nó
following Chọn tất cả các node sau khi tag đóng của node hiện hành
following-sibling Chọn tất cả các node ngang cấp sau khi tag đóng của node hiện hành namespace Chọn tất cả namespace của node hiện hành
parent Chọn tất cả node cha của node hiện hành
preceding Chọn tất cả các thành phần trước khi bắt đầu tag mở của node hiện hành preceding-sibling Chọn tất cả các node ngang hàng trước khi bắt đầu tag mở của node
hiện hành
o Các functions trong XPath
node-name(node) Trả về tên node của node được đưa vào hàm
nilled(node) Trả về true nếu node là null
Trang 4data(item, item, …) Lấy các trị tuần tự của các items đưa vào
base-uri() Lấy trị thuộc tính base-uri của node hiện hành
base-uri(node) Lấy trị của thuộc tính base-uri của node
document-uri() Lấy trị của thuộc tính document-uri của tài liệu XML
number(arg) Trả về kiểu số
abs(num) Lấy trị tuyệt đối
ceiling(num) Lấy trị số nguyên nhỏ nhất lớn hơn num
floor(num) Lấy trị số nguyên lớn nhất nhỏ hơn num
string(arg) Trả về kiểu chuỗi
compare(comp1,
comp2) So sánh giá trị cho comp1 với comp2, -1 là nhỏ hơn, 0 là bằng nhau và 1 là lớn hơn concat(string, string,
…)
Nối chuỗi
substring(string, start
[,len])
Lấy chuỗi con trong string đưa vào
string-length([string]) Lấy chiều dài của string node hiện hành hay từ string
normalize-space([string])
Loại bỏ ký tự khoảng trắng thừa trong và ngoài chuỗi string của node hiện hành hay string
normalize-unicode Tương tự như normalize-space nhưng dùng cho Unicode
translate(string1,
string2,
string3)
Convert chuỗi string1 bằng cách thay thế chuỗi string3 thay thế chuỗi string 2
contains(string1,
string2) Trả ra true nếu string1 chứa string2
match(string1,
pattern)
Trả ra true nếu string1 tuân thủ đúng pattern
replace(string1,
pattern,
replace)
Thay thế chuỗi replace với thành phần trong string1 đúng pattern
tokenize(string,
pattern)
Tương tự hàm split của ngôn ngữ java boolean(arg) Convert giá trị arg trở về kiểu luận lý true hay false
Trang 5count([node]) Trả về số lượng node của node
last() Trả về node cuối cùng trong node hiện hành
local-name([node]) Trả về tên node nằm sau phần dấu :
name() Trả về namespace qualified prefix:tênNode
namespace-uri([node]) Trả về uri của namespace của node hiện hành hay node text() Trả về chuỗi trị của node
position() Trả về vị trí của node
Chúng ta đã hoàn tất lý thuyết cơ bản của Xpath