Nội dung
CHƯƠNG I.GIỚI THIỆU XQUERY
1.XQuery là gì?
XQuery là các ngôn ngữ để truy vấn dữ liệu XML XQuery cho XML cũng giống như SQL cho cơ sở dữ liệu XQuery được xây dựng trên biểu thức XPath XQuery được hỗ trợ bởi tất cả các cơ sở dữ liệu chính XQuery là một Khuyến nghị của W3C Ví dụ Xquery:
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/titlea,XQuery là về Querying XML
-XQuery là một ngôn ngữ để tìm và giải nén các phần tử và thuộc tính từ các tài liệu XML.
b,XQuery và XPath
XQuery 1.0 và XPath 2.0 chia sẻ cùng một mô hình dữ liệu và hỗ trợ các chức năng và các toán tử tương tự. Nếu bạn đã nghiên cứu XPath, bạn sẽ không gặp vấn đề gì khi hiểu XQuery.
c,Xquery- các ví dụ sử dụng
XQuery có thể được sử dụng để:
Giải nén thông tin để sử dụng trong một Dịch vụ Web Tạo báo cáo tóm tắt Chuyển đổi dữ liệu XML sang XHTML Tìm kiếm các tài liệu Web để biết thông tin liên quan
d,XQuery là một Khuyến nghị của W3C
-XQuery tương thích với một số chuẩn W3C, chẳng hạn như XML, Không gian tên, XSLT, XPath và Lược đồ XML.
-XQuery 1.0 trở thành Khuyến nghị của W3C năm 2007.
2. .Xquery ví dụ
Chúng ta sẽ sử dụng tài liệu XML sau trong các ví dụ dưới đây.
"Books.xml":
<?xml?>
<bookstore>
<book>
<title>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book>
<title>XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book>
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
.
Cách Chọn Nút Từ "books.xml"?
Ø Chức năng:
XQuery sử dụng các hàm để trích xuất dữ liệu từ các tài liệu XML.
Chức năng doc () được sử dụng để mở tệp "books.xml":doc("books.xml")
Ø Biểu thức đường dẫn:
XQuery sử dụng các biểu thức đường dẫn để điều hướng qua các phần tử trong một tài liệu XML.
Biểu thức đường dẫn sau đây được sử dụng để chọn tất cả các phần tử tiêu đề trong tệp "books.xml":doc("books.xml")/bookstore/book/title
(/ Hiệu sách chọn thành phần hiệu sách, / sách chọn tất cả các yếu tố sách dưới phần tử của hiệu sách, và / title chọn tất cả các phần tử tiêu đề dưới mỗi yếu tố sách)
XQuery ở trên sẽ trích xuất các nội dung sau:
<title>Everyday Italian</title>
<title>Harry Potter</title>
<title>XQuery Kick Start</title>
<title>Learning XML</title>
Ø Vị ngữ
XQuery sử dụng các vị từ để hạn chế dữ liệu được trích xuất từ các tài liệu XML.
Vị từ sau được sử dụng để chọn tất cả các yếu tố sách dưới phần tử hiệu sách có phần tử giá với giá trị nhỏ hơn 30:
doc("books.xml")/bookstore/book[price<30]
XQuery ở trên sẽ trích xuất các nội dung sau:
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
CHƯƠNG II. XQUERY FLWOR EXPRESSIONS
1.FLWOR là gì?
-FLWOR (được phát âm là "hoa") là một từ viết tắt của "For, Let, Where, Order by, Return".
Đối với - chọn một chuỗi các nút Let - liên kết một chuỗi vào một biến Trường hợp - lọc các nút Sắp xếp theo - sắp xếp các nút Return - những gì để trở lại (được đánh giá một lần cho mỗi nút)
2.Tài liệu ví dụ XML
-Chúng tôi sẽ sử dụng tài liệu "books.xml" trong các ví dụ dưới đây (tệp XML tương tự như trong chương trước).
-Làm thế nào để Chọn Nút Từ "books.xml" Với FLWOR
Xem biểu thức đường dẫn sau:doc("books.xml")/bookstore/book[price>30]/title
· Biểu thức ở trên sẽ chọn tất cả các phần tử tiêu đề dưới các yếu tố sách nằm dưới yếu tố hiệu sách có một phần tử giá với giá trị cao hơn 30.
· Biểu thức FLWOR sau đây sẽ chọn chính xác giống như biểu thức đường dẫn ở trên:
for $x in doc("books.xml")/bookstore/book
where $x/price>30
return $x/title
Kết quả sẽ là:
<title>XQuery Kick Start</title>
<title>Learning XML</title>
-Với FLWOR bạn có thể sắp xếp kết quả:
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
Các cho khoản sẽ chọn tất cả các yếu tố cuốn sách dưới các yếu tố hiệu sách vào một biến gọi là $ x.
Các nơi khoản lựa chọn duy nhất yếu tố cuốn sách với một yếu tố giá với giá trị lớn hơn 30.
Thứ tự theo mệnh đề định nghĩa thứ tự sắp xếp. Sắp xếp theo phần tử tiêu đề.
Các trở khoản quy định cụ thể những gì nên được trả lại. Ở đây nó trả về các phần tử tiêu đề.
Kết quả của biểu thức XQuery ở trên sẽ là:
<title>Learning XML</title>
<title>XQuery Kick Start</title>
3. XQuery FLWOR + HTML Tài liệu ví dụ XML
Chúng tôi sẽ sử dụng tài liệu "books.xml" trong các ví dụ dưới đây (tệp XML giống như trong các chương trước).
· Trình bày kết quả trong một danh sách HTML
-Xem biểu thức XQuery FLWOR sau:
for $x in doc("books.xml")/bookstore/book/title
order by $x
return $x
Biểu thức ở trên sẽ chọn tất cả các phần tử tiêu đề dưới các phần tử sách nằm dưới phần tử của hiệu sách, và trả về các phần tử tiêu đề theo thứ tự chữ cái.
-Bây giờ chúng tôi muốn liệt kê tất cả các sách-tiêu đề trong hiệu sách của chúng tôi trong một danh sách HTML. Chúng ta thêm thẻ <ul> và <li> vào biểu thức FLWOR:
<ul>
{
for $x in doc("books.xml")/bookstore/book/title
order by $x
return <li>{$x}</li>
}
</ul>
Ø Kết quả của những điều trên sẽ là:
<ul>
<li><title>Everyday Italian</title></li>
<li><title>Harry Potter</title></li>
<li><title>Learning XML</title></li>
<li><title>XQuery Kick Start</title></li>
</ul>
-Bây giờ chúng ta muốn loại bỏ phần tử title, và chỉ hiển thị dữ liệu bên trong phần tử tiêu đề:<ul>
{
for $x in doc("books.xml")/bookstore/book/title
order by $x
return <li>{data($x)}</li>
}
</ul>
Ø Kết quả sẽ là (một danh sách HTML):
<ul>
<li>Everyday Italian</li>
<li>Harry Potter</li>
<li>Learning XML</li>
<li>XQuery Kick Start</li>
</ul>
CHƯƠNG III .CÁC THUẬT NGỮ XQUERY 1.Nút
Trong XQuery, có bảy loại nút: phần tử, thuộc tính, văn bản, không gian tên, các lệnh xử lý, nhận xét và tài liệu (gốc). Các tài liệu XML được coi là các cây của các nút. Các gốc của cây được gọi là nút tài liệu (hoặc nút gốc).
Xem tài liệu XML sau:
<?xml?>
<bookstore>
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
Ví dụ về các nút trong tài liệu XML ở trên:
<bookstore> (document node)
<author>J K. Rowling</author> (element node)
(attribute node)
v Atomic values(Giá trị nguyên tử)
Giá trị nguyên tử là các nút không có con hoặc cha mẹ.
Ví dụ về các giá trị nguyên tử:
J K. Rowling
"en"
-Items: Các mục là các giá trị nguyên tử hoặc các nút. 2.Mối quan hệ của các nút: a,Parent(Cha mẹ)
Mỗi phần tử và thuộc tính có một cha mẹ.
Trong ví dụ sau; Yếu tố sách là phụ huynh của tựa đề, tác giả, năm và giá:
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
b,Children(Bọn trẻ)
Các nút phần tử có thể có số không, một hoặc nhiều trẻ em.
Trong ví dụ sau; Tiêu đề, tác giả, năm và yếu tố giá là tất cả trẻ em của yếu tố cuốn sách:
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
c, Siblings(Anh chị em ruột)
Các nút có cùng một cha mẹ.
Trong ví dụ sau; Tiêu đề, tác giả, năm, và yếu tố giá cả đều là anh chị em ruột:
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
d, Ancestors(Tổ tiên)
Cha mẹ của nút, cha mẹ của phụ huynh, v.v ...
Trong ví dụ sau; Các tổ tiên của các phần tử tiêu đề là các yếu tố cuốn sách và các yếu tố hiệu sách:
<bookstore>
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
f, Descendants(Hậu duệ)
Con của nút, con của trẻ em, v.v ...Trong ví dụ sau; Hậu duệ của các yếu tố hiệu sách là sách, tiêu đề, tác giả, năm, và các yếu tố giá cả:
<bookstore>
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book></bookstore>
CHƯƠNG IV. QUY TẮC CÚ PHÁP CƠ BẢN Xquery
1.Một số quy tắc cú pháp cơ bản:
XQuery phân biệt chữ hoa chữ thường Các phần tử, thuộc tính và biến XQuery phải là các tên XML hợp lệ Một giá trị chuỗi XQuery có thể có trong dấu ngoặc kép đơn hoặc gấp đôi Một biến XQuery được định nghĩa bằng $ theo sau bởi một tên, ví dụ: $ cửa hàng sách Nhận xét của XQuery được phân cách bởi (: và :), ví dụ (: XQuery Comment :)
2.Tài liệu ví dụ XML
-Chúng tôi sẽ sử dụng tài liệu "books.xml" trong các ví dụ dưới đây (tệp XML giống như trong các chương trước).
-Các biểu thức điều kiện XQuery
v Các biểu thức "If-Then-Else" được phép trong XQuery.
Xem ví dụ sau:
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>
+Ghi chú về cú pháp "if-then-else": dấu ngoặc quanh biểu thức if được yêu cầu. Khác là bắt buộc, nhưng nó có thể chỉ là else ().
Kết quả của ví dụ trên sẽ là:
<adult>Everyday Italian</adult>
<child>Harry Potter</child>
<adult>XQuery Kick Start</adult>
<adult>Learning XML</adult>
v XQuery So sánh:Trong XQuery có hai cách để so sánh các giá trị.
1. Tổng so sánh: =,! =, <, <=,>, =
2. So sánh giá trị: eq, ne, lt, le, gt, ge
+Sự khác biệt giữa hai phương pháp so sánh được thể hiện dưới đây.
· Biểu thức sau đây trả về true nếu bất kỳ thuộc tính q nào có giá trị lớn hơn 10:
$bookstore//book/@q > 10
· Biểu thức sau trả về true nếu chỉ có một thuộc tính q trả về bởi biểu thức và giá trị của nó lớn hơn 10. Nếu nhiều hơn một q được trả về, một lỗi xảy ra:
$bookstore//book/@q gt 10
CHƯƠNG V. THÊM CÁC YẾU TỐ VÀ THUỘC TÍNH XQUERY
1.Thêm các yếu tố và thuộc tính vào kết quả
-Như chúng ta đã thấy trong chương trước, chúng ta có thể bao gồm các phần tử và các thuộc tính từ tài liệu đầu vào ("books.xml) trong kết quả:
for $x in doc("books.xml")/bookstore/book/title
order by $x
return $x
-Biểu thức XQuery ở trên sẽ bao gồm cả phần tử tiêu đề và thuộc tính lang trong kết quả, như sau:
<title>Everyday Italian</title>
<title>Harry Potter</title>
<title>Learning XML</title>
<title>XQuery Kick Start</title>
-Biểu thức XQuery ở trên trả về các phần tử tiêu đề chính xác theo cách chúng được mô tả trong tài liệu đầu vào.
-Bây giờ chúng ta muốn thêm các yếu tố và thuộc tính của riêng mình vào kết quả!
v Thêm phần tử HTML và văn bản
Bây giờ, chúng ta muốn thêm một số phần tử HTML vào kết quả. Chúng tôi sẽ đưa kết quả vào một danh sách HTML - cùng với một số văn bản:
<html>
<body>
<h1>Bookstore</h1>
<ul>
{
for $x in doc("books.xml")/bookstore/book
order by $x/title
return <li>{data($x/title)}. Category: {data($x/@category)}</li>
}
</ul>
</body>
</html>
Biểu thức XQuery ở trên sẽ tạo ra kết quả sau:
<html>
<body>
<h1>Bookstore</h1>
<ul>
<li>Everyday Italian. Category: COOKING</li>
<li>Harry Potter. Category: CHILDREN</li>
<li>Learning XML. Category: WEB</li>
<li>XQuery Kick Start. Category: WEB</li>
</ul>
</body>
</html>
2.Thêm Thuộc tính vào các thành phần HTML
Tiếp theo, chúng ta muốn sử dụng thuộc tính category như một thuộc tính class trong danh sách HTML:
<html>
<body>
<h1>Bookstore</h1>
<ul>
{
for $x in doc("books.xml")/bookstore/book
order by $x/title
return <li>{data($x/title)}</li>
}
</ul>
</body>
</html>
Biểu thức XQuery ở trên sẽ tạo ra kết quả sau:
<html>
<body>
<h1>Bookstore</h1>
<ul>
<li>Everyday Italian</li>
<li>Harry Potter</li>
<li>Learning XML</li>
<li>XQuery Kick Start</li>
</ul>
</body>
</html>
CHƯƠNG VI. XQUERY LỰA CHỌN VÀ LỌC
1.Lựa chọn và lọc các yếu tố
Như chúng ta đã thấy trong các chương trước, chúng ta đang lựa chọn và lọc các phần tử với một biểu thức Path hoặc với một biểu thức FLWOR.
-Xem biểu thức FLWOR sau:
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
For - (tùy chọn) kết hợp một biến với mỗi mục được trả về bởi biểu thức trong Let - (tùy chọn) Nơi - (tùy chọn) chỉ định một tiêu chuẩn Order by - (tùy chọn) xác định thứ tự sắp xếp của kết quả Return - chỉ định những gì để trở lại trong kết quả
2.Khoản cho khoản
Mệnh đề for kết hợp một biến với mỗi mục được trả về bởi biểu thức trong. Mệnh đề for cho kết quả lặp. Có thể có nhiều mệnh đề trong cùng một biểu thức FLWOR.
Để lặp một số cụ thể của lần trong một cho khoản, bạn có thể sử dụng để từ khóa:
for $x in (1 to 5)
return <test>{$x}</test>
Kết quả:
<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>
-Các tại từ khóa có thể được sử dụng để đếm số lần lặp:
for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>
Kết quả:
<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>
-Nó cũng được phép có nhiều hơn một biểu hiện trong mệnh đề for. Sử dụng dấu phẩy để tách từng biểu hiện:
for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>
Kết quả:
<test>x=10 and y=100</test>
<test>x=10 and y=200</test>
<test>x=20 and y=100</test>
<test>x=20 and y=200</test>
3.Khoản cho phép
Mệnh đề for cho phép các phép gán biến và nó tránh lặp lại cùng một biểu thức nhiều lần. Mệnh đề let không dẫn đến sự lặp lại.
let $x := (1 to 5)
return <test>{$x}</test>
Kết quả:
<test>1 2 3 4 5</test>
4.Các khoản
Mệnh đề where được sử dụng để chỉ định một hoặc nhiều tiêu chí cho kết quả:
where $x/price>30 and $x/price<100
Thứ tự của khoản
Thứ tự theo mệnh đề được sử dụng để xác định thứ tự sắp xếp của kết quả. Ở đây chúng tôi muốn sắp xếp kết quả theo loại và tiêu đề:
for $x in doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $x/title
Kết quả:
<title>Harry Potter</title>
<title>Everyday Italian</title>
<title>Learning XML</title>
<title>XQuery Kick Start</title>
5.Khoản hoàn trả
Mệnh đề return chỉ định những gì sẽ được trả về.
for $x in doc("books.xml")/bookstore/book
return $x/title
Kết quả:
<title>Everyday Italian</title>
<title>Harry Potter</title>
<title>XQuery Kick Start</title>
<title>Learning XML</title>
CHƯƠNG VII.CÁC HÀM XQUERY
1.Các loại dữ liệu Xquery:
-XQuery được xây dựng trên biểu thức XPath. XQuery 1.0 và XPath 2.0 chia sẻ cùng một mô hình dữ liệu và hỗ trợ các chức năng và các toán tử tương tự.Bạn cũng có thể xác định các hàm của riêng mình trong XQuery
-XQuery chia sẻ các loại dữ liệu giống như Lược đồ XML 1.0 (XSD):Chuỗi XSD,Ngày XSD,XSD Numeric,XSD Misc.
Ví dụ về các cuộc gọi chức năng
Một cuộc gọi đến một chức năng có thể xuất hiện nơi một biểu hiện có thể xuất hiện. Xem các ví dụ dưới đây:
· Ví dụ 1: Trong một phần tử
<name>{upper-case($booktitle)}</name>
· Ví dụ 2: Trong vị từ của biểu thức đường dẫn
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']
· Ví dụ 3: Trong mệnh đề for
let $name := (substring($booktitle,1,4))
2.XQuery User-Defined Functions
-Nếu bạn không thể tìm thấy chức năng XQuery bạn cần, bạn có thể viết thư của riêng bạn.
-Các hàm do người dùng định nghĩa có thể được định nghĩa trong truy vấn hoặc trong một thư viện riêng.
-Cú pháp
declare function prefix:function_name($parameter as datatype)
as returnDatatype
{
...function code here...
};
Ghi chú về các hàm do người dùng xác định:
Sử dụng từ khóa chức năng khai báo Tên của hàm phải được đặt trước Kiểu dữ liệu của các tham số hầu như giống với kiểu dữ liệu được xác định trong Lược đồ XML Phần thân của hàm phải được bao quanh bởi các dấu ngoặc nhọn-Ví dụ về một hàm do người dùng xác định tuyên bố trong truy vấn
declare function local:minPrice($p as xs:decimal?,$d as xs:decimal?)
as xs:decimal?
{
let $disc := ($p * $d) div 100
return ($p - $disc) };
Below is an example of how to call the function above:
<minPrice>{local:minPrice($book/price,$book/discount)}</minPrice>
Bạn đang đọc truyện trên: AzTruyen.Top