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.