Cân bản XQuery

Trong phần này, hãy cùng nghiên cứu một ví dụ để học một số cú pháp cơ bản của XQuery.

Tài liệu XML mẫu

Chúng ta sẽ sử dụng tệp XML này trong ví dụ sau.

"books.xml" :

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>
<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>
<book category="WEB">
  <title lang="en">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 category="WEB">
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>
</bookstore>

Xem tệp "books.xml" trong trình duyệt của bạn.

Làm thế nào để chọn các nút từ "books.xml"?

Hàm

XQuery sử dụng các hàm để trích xuất dữ liệu từ tài liệu XML.

doc() được sử dụng để mở tệp "books.xml":

doc("books.xml")

Biểu thức đường dẫn

XQuery sử dụng biểu thức đường dẫn để di chuyển qua các phần tử trong tài liệu XML.

Dưới đây là biểu thức đường dẫn để chọn tất cả các phần tử title trong tệp "books.xml":

doc("books.xml")/bookstore/book/title

Chọn phần tử bookstore (/bookstore), chọn tất cả các phần tử book nằm trong phần tử bookstore, và chọn tất cả các phần tử title nằm trong mỗi phần tử book

Xquery trên có thể trích xuất dữ liệu sau đây:

<title lang="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>

Câu điều kiện

Xquery sử dụng câu điều kiện để giới hạn dữ liệu được trích xuất từ tài liệu XML.

Câu điều kiện dưới đây được sử dụng để chọn tất cả các phần tử book trong phần tử bookstore và giá trị của phần tử price phải nhỏ hơn 30:

doc("books.xml")/bookstore/book[price<30]

Xquery trên có thể trích xuất dữ liệu sau đây:

<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>