Cú pháp XQuery
XQuery phân biệt chữ hoa chữ thường và các phần tử, thuộc tính và biến XQuery phải là tên XML hợp lệ.
Quy tắc cú pháp cơ bản của XQuery
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à tên XML hợp lệ
- Giá trị chuỗi XQuery có thể ở trong dấu ngoặc đơn hoặc dấu ngoặc kép
- Một biến XQuery được xác định bằng ký tự $ theo sau là tên, ví dụ: $bookstore
- Các chú thích XQuery được phân cách bởi (: và :), ví dụ (: XQuery Comment :)
Tài liệu ví dụ XML
Chúng ta sẽ sử dụng tài liệu "books.xml" trong các ví dụ bên dưới (cùng tệp XML như trong các chương trước).
Xem tệp "books.xml" trong trình duyệt của bạn .
Biểu thức điều kiện XQuery
Biểu thức "If-Then-Else" được cho phép trong XQuery.
Hãy 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>
Lưu ý về cú pháp "if-then-else": bắt buộc phải có dấu ngoặc đơn xung quanh biểu thức if. else 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>
So sánh XQuery
Trong XQuery có hai cách so sánh các giá trị.
1. So sánh tổng quát: =, !=, <, <=, >, >=
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 hiển thị dưới đây.
Biểu thức sau 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 được biểu thức trả về và giá trị của nó lớn hơn 10. Nếu có nhiều hơn một q được trả về thì sẽ xảy ra lỗi:
$bookstore//book/@q gt 10