Kênh 360 Công Nghệ Kênh 360 Công Nghệ

Trang chủ - Thiết kế web - Thiết kế web - Ngôn ngữ truy vấn XML - XQuery

Ngôn ngữ truy vấn XML - XQuery

XQuery (XML Query) là một ngôn ngữ truy vấn thông tin trong XML, cho phép các chương trình ứng dụng truy vấn các dữ liệu quan hệ hay dữ liệu có cấu trúc dạng XML. Đây là một ngôn ngữ mạnh mẽ, ngắn gọn và được thiết kế để xử lý dữ liệu XML.


I. XQuery là gì?


XQuery có thể được sử dụng nhằm mục đích lấy thông tin để sử dụng trong một dịch vụ Web, tạo các báo cáo tổng hợp, biến đổi dữ liệu XML thành XHTML hoặc tìm kiếm các tài liệu Web, từ đó cho ra các thông tin có liên quan dựa trên các cặp thẻ XML. XQuery cũng có thể được sử dụng để sản sinh ra các cấu trúc RDF hay truy xuất thông tin trên những nền tảng dựa trên XML. Vì bản thân các ngôn ngữ như RDF hay OWL cũng được biểu diễn thông qua XML nên chúng ta cũng có thể sử dụng XQuery để truy vấn thông tin trong các ontology được biểu diễn bởi RDF/OWL.

II. Các biểu thức đường dẫn trong XQuery


XML xác định các nút thông qua các đường dẫn tới các nút đó, với "đầu đường" là phần tử gốc (root element), tiếp theo là các phần tử ...kỵ, cụ, ông, cha, và kết thúc là nút cần truy xuất.

Các biểu thức đường dẫn được sử dụng để định vị các nút và ràng buộc biến đổi.

Ví dụ 1. Biểu thức đường dẫn tìm kiếm trong tài liệu "books.xml" và trả về tất cả các phần tử con là tiêu đề (title) của các nút chapter của tài liệu:

document("books.xml")//chapter/title

Sử dụng các cấu trúc dựa trên cú pháp XML có thể sinh ra các cấu trúc XML trong XQuery.

Ví dụ 2. Cấu trúc sau sinh ra một phần tử "thesis" đối với mỗi giá trị tiêu đề trả về bởi biểu thức đường dẫn $b/title:
<thesis>
{$b/title}
</thesis>

III. Các biểu thức FLWOR

Một trong những tiện ích mạnh mẽ nhất của ngôn ngữ truy vấn XQuery là các biểu thức FLWOR (For, Let, Where, Order by, Return). Biểu thức này tương tự như cấu trúc SELECT - FROM - WHERE của SQL về nhiều mặt. Chúng có thể được dùng để kết nối dữ liệu tới các biến, duyệt qua danh sách, lọc, trình diễn, tái cấu trúc các biến…

Các mệnh đề For và Let được sử dụng để nối kết các biến tới các dữ liệu trung gian; nối kết giữa hai tài liệu, hay hai dãy của các phần tử (item) hoặc sinh ra các luồng dữ liệu.

Mệnh đề Where được sử dụng trong các biểu thức FLWOR để lọc các luồng dữ liệu theo những giới hạn trong các biến của các mệnh đề for và let.

Ví dụ:

Code:
for $b in doc("books.xml")//book
where $b/@year = "2000"
return $b/title
Kết quả trả về là các phần tử tiêu đề như:
<title>Data on the Web</title>

Mệnh đề Order by được sử dụng để chỉ định thứ tự các kết quả được trả về bởi mệnh đề where sẽ được xử lý bởi mệnh đề return.

Mệnh đề Return: Sau khi mệnh đề Order by được sử dụng để sắp xếp kết quả, các kết quả này được chuyển sang mệnh đề return, được đánh giá lại một lần nữa và trả về cho người dùng.

IV. Biểu thức điều kiện: if-then-else

Biểu thức điều kiện sẽ cho phép lọc ra một danh sách theo những điều kiện định trước.

Ví dụ:
for $x in doc("books.xml")/bookstore/book
return if ($x/@category="CHILDREN")
then <child>{data($x/title)}</child>
else <adult>{data($x/title)}</adult>

Các biểu thức so sánh

Trong XQuery có 2 cách để so sánh giá trị:
1. So sánh chung: =, !=, <, <=, >, >=
2. So sánh giá trị: eq, ne, lt, le, gt, ge

Ví dụ:

$bookstore//book/@q > 10

Biểu thức trên trả lại true nếu bất kỳ thuộc tính q có giá trị lớn hơn 10

$bookstore//book/@q gt 10

Biểu thức trên trả lại true nếu chỉ có một thuộc tính q trả lại bởi biểu thức, và giá trị của nó lớn hơn 10. Nếu hơn một q được trả lại, một lỗi xuất hiện.

V. Các hàm trong XQuery

Các hàm dựng sẵn trong XQuery

XQuery cung cấp hơn 100 hàm dựng sẵn,các hàm các giá trị chuỗi, số, so sánh ngày và tháng, …

Ví dụ 1: Gọi hàm dựng sẵn trong một thành phần

<name>{uppercase($booktitle)}</name>

Ví dụ 2: Gọi hàm dựng sẵn trong vị từ của một biểu thức đường dẫn
doc("books.xml")/bookstore/book[substring(title,1,5='Harry')]

Ví dụ 3: Gọi hàm dựng sẵn trong mệnh đề let
let $name := (substring($booktitle,1,4))

Các hàm người dùng định nghĩa
Code:
Cú pháp
declare function prefix:function_name($parameter AS datatype)
AS returnDatatype
{
(: ...function code here... Smiley
};
Ví dụ:
declare function local:minPrice(
$price as xs:decimal?,
$discount as xs:decimal?)
AS xs:decimal?
{
let $disc := ($price * $discount) div 100
return ($price - $disc)
};
(: Dưới đây là một ví dụ về cách gọi tới hàm ở trên Smiley
<minPrice>{local:minPrice($book/price,$book/discount)}</minPrice>
Nguồn: phpvn.org

 

Kênh 360 công nghệ

  • Nổi bật
  • Tin mới
  • Game mới
  • PrestaShop Guide
  • PrestaShop

Có thể bạn quan tâm

Download nhiều nhất

11/12
Download PES 2011 - FIFA 11
181
18/12
binkw32 dll
117
18/12
TeamViewerQS
38

Quảng cáo

English French German Japanese Korean