XQuery - Ứng dụng đầu tiên
Thí dụ
Sau đây là một tài liệu XML mẫu chứa các bản ghi của một kho sách gồm nhiều sách khác nhau.
books.xml
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book category="JAVA">
<title lang="en">Learn Java in 24 Hours</title>
<author>Robert</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="DOTNET">
<title lang="en">Learn .Net in 24 hours</title>
<author>Peter</author>
<year>2011</year>
<price>70.50</price>
</book>
<book category="XML">
<title lang="en">Learn XQuery in 24 hours</title>
<author>Robert</author>
<author>Peter</author>
<year>2013</year>
<price>50.00</price>
</book>
<book category="XML">
<title lang="en">Learn XPath in 24 hours</title>
<author>Jay Ban</author>
<year>2010</year>
<price>16.50</price>
</book>
</books>
Sau đây là một tài liệu Xquery mẫu chứa biểu thức truy vấn sẽ được thực thi trên tài liệu XML ở trên. Mục đích là để lấy các phần tử tiêu đề của các nút XML đó ở đó giá lớn hơn 30.
books.xqy
for $x in doc("books.xml")/books/book where $x/price>30
return $x/title
Kết quả
<title lang="en">Learn .Net in 24 hours</title>
<title lang="en">Learn XQuery in 24 hours</title>
Xác minh kết quả
Để xác minh kết quả, hãy thay thế nội dung của books.xqy (được đưa ra trong chương Thiết lập môi trường ) bằng biểu thức XQuery ở trên và thực thi chương trình java XQueryTester.
Biểu thức XQuery
Hãy để chúng tôi hiểu từng phần của biểu thức XQuery ở trên.
Sử dụng các chức năng
doc("books.xml")
doc () là một trong những hàm XQuery được sử dụng để định vị nguồn XML. Ở đây chúng tôi đã vượt qua "books.xml". Xem xét đường dẫn tương đối, books.xml nên nằm trên cùng một đường dẫn nơi books.xqy hiện diện.
Sử dụng các biểu thức XPath
doc("books.xml")/books/book
XQuery sử dụng nhiều biểu thức XPath để định vị phần XML cần thiết để thực hiện tìm kiếm. Ở đây chúng tôi đã chọn tất cả các nút sách có sẵn trong nút sách.
Lặp lại các đối tượng
for $x in doc("books.xml")/books/book
XQuery xử lý dữ liệu xml như các đối tượng. Trong ví dụ trên, $ x đại diện cho nút đã chọn, trong khi vòng lặp for lặp qua tập hợp các nút.
Áp dụng điều kiện
where $x/price>30
Vì $ x đại diện cho nút đã chọn, "/" được sử dụng để nhận giá trị của phần tử bắt buộc; mệnh đề "where" được sử dụng để đặt một điều kiện cho kết quả tìm kiếm.
Trả kết quả
return $x/title
Vì $ x đại diện cho nút đã chọn, "/" được sử dụng để lấy giá trị của phần tử được yêu cầu, giá, tiêu đề; mệnh đề "return" được sử dụng để trả về các phần tử từ kết quả tìm kiếm.