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ụ:
for $b in doc("books.xml")//book
where $b/@year = "2000"
return $b/title
<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
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>
| Tool cho webmaster trong Lienket247 < Lùi | Tiếp theo > Tạo quảng cáo chạy dọc 2 bên bằng javascript |
|---|
- 06/04/2011 14:23 - Bảng mã ISO-8859-1
- 05/12/2009 11:02 - 13 Firefox Add-ons cho Web Development
- 22/09/2009 16:36 - mimeTeX - Hiển thị toán học trên website
- 15/07/2009 16:54 - Tool cho webmaster trong Lienket247
- 14/06/2009 18:09 - Tạo bàn phím ảo virtual keyboard trên website
- 20/05/2009 11:21 - Tạo quảng cáo chạy dọc 2 bên bằng javascript
- 16/05/2009 00:30 - Tạo menu top với hiệu ứng đẹp mắt
- 07/05/2009 21:38 - Tạo quảng cáo hiển thị ở vị trí cố định
- 07/05/2009 21:23 - Nhúng Flash với SWFobject và AC_FL_RunContent
- 20/04/2009 22:43 - Thư viện đồ họa GD Library
Download Game bóng đá PES8 Việt Nam
Tải game bóng đá FiFa 09
Tải game Dragon ball Z - 7 viên ngọc rồng
Tải Game Bóng Đá Pro Evolution Soccer 6 Việt Nam
Download PES 2011 patch Việt Nam PESVN
Tải Game Bóng Đá FIFA 2009 RIP 1 CD
Download Pro Evolution Soccer 2011
Download Game THE SIMS 3
Tải Game bóng đá PES 2009
Download PES 2011 demo
XAPPR: Biến smartphone của bạn thành khẩu súng Laser, chơi game AR
Thiết lập Hotmail POP settings trên điện thoại
[Xbox 360 FAQs] - Những điều nên biết về Xbox 360
Windows 95/98/XP chạy trên các thiết bị Android một cách dễ dàng
Hướng dẫn phục hồi dữ liệu và Fix lỗi bị treo táo của iPhone, iPod
Fifa 12 cho các máy android 2.3 trở lên
Tải game Android miễn phí
iWep Pro v4.1.3 - Tìm mật khẩu mạng WiFi trên iOS
Activator 1.6.1 Việt hóa
L.A. Noire: The Complete Edition - THETA [Full ISO/Action/2011] [13.37GB]
Download 7554 demo
Download Game PC, cập nhật liên tục (torrent)
PES 2012 ra mắt bản mở rộng đầu tiên vào 11/10
PES2012 - Full version - Ngôn ngữ và bình luận tiếng Anh
PES2012 - Blurry disable làm mịn đồ họa
PES 2011 PATCH 4.1 - TRANSFER UPDATE - RELEASED
Download Prestashop 1.5
Download PrestaShop 1.4
Bổ sung Memcached vào PrestaShop 1.4
Hướng dẫn tích hợp Ngân Lượng vào PrestaShop
Sửa lỗi invalid carrier or no carrier selected trong PrestaShop
Sửa lỗi PrestaShop: Path is not the same between your browser and you server
Cài đặt PrestaShop
Thiết kế giao diện PrestaShop Theme
Hướng dẫn cài đặt themes trong PrestaShop
Hướng dẫn cách thêm ngôn ngữ cho PrestaShop
Bộ sưu tập Giao diện Premium PrestaShop Themes chuyên nghiệp
Giới thiệu về website thương mại điện tử 2.0 Prestashop
Macromedia Flash - Tạo hiệu ứng menu
Cài đặt Joomla 1.5 extensions


