Chọn và lọc trong XQuery
- Trang trước Thêm XQuery
- Trang tiếp theo Hàm trong XQuery
Tệp văn bản XML mẫu
Chúng ta sẽ tiếp tục sử dụng tệp "books.xml" trong ví dụ sau (cùng với tệp XML được sử dụng trong các chương trước).
Chọn và lọc phần tử
Như đã thấy trong các chương trước, chúng ta sử dụng biểu thức đường dẫn hoặc biểu thức FLWOR để chọn và lọc các phần tử.
Xin xem biểu thức FLWOR dưới đây:
for $x in doc("books.xml")/bookstore/book nếu $x/price>30 sắp xếp theo $x/title return $x/title
- for
- (tùy chọn) Gắn một biến vào mỗi mục được trả về bởi biểu thức in
- cho
- (tùy chọn)
- nếu
- (tùy chọn) Đặt một điều kiện
- sắp xếp theo
- (tùy chọn) Đặt thứ tự sắp xếp của kết quả
- trả về
- định nghĩa nội dung cần trả về trong kết quả
câu lệnh for
Câu lệnh for có thể gắn biến vào mỗi mục được trả về bởi biểu thức in. Câu lệnh for có thể tạo ra sự lặp lại. Có thể có nhiều câu lệnh for trong cùng một biểu thức FLWOR.
Nếu bạn muốn lặp lại một số lần cụ thể trong một câu lệnh for, bạn có thể sử dụngtừ khóa đến :
cho $x trong (1 đến 5) return <test>{$x}</test>
Kết quả:
<test>1</test> <test>2</test> <test>3</test> <test>4</test> <test>5</test>
Từ khóa at Dùng để tính toán việc lặp lại:
for $x at $i in doc("books.xml")/bookstore/book/title return <book>{$i}. {data($x)}</book>
Kết quả:
<book>1. Ý nghĩa hàng ngày của Ý</book> <book>2. Harry Potter</book> <book>3. XQuery Kick Start</book> <book>4. Học XML</book>
Trong câu lệnh for cũng vậyCho phép nhiều biểu thức inVui lòng sử dụng dấu phẩy để phân tách mỗi biểu thức in:
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>
Câu lệnh let
Câu lệnh let có thể hoàn thành việc phân phối biến và tránh việc lặp lại nhiều lần cùng một biểu thức. Câu lệnh let không gây ra sự lặp lại.
let $x := (1 to 5) return <test>{$x}</test>
Kết quả:
<test>1 2 3 4 5</test>
Câu lệnh where
Câu lệnh where được sử dụng để đặt một hoặc nhiều điều kiện (criteria) cho kết quả.
where $x/price>30 and $x/price<100
Câu lệnh order by
Câu lệnh order by được sử dụng để quy định thứ tự sắp xếp của kết quả. Ở đây, chúng ta sẽ sắp xếp kết quả dựa trên category và title:
for $x in doc("books.xml")/bookstore/book order by $x/@category, $x/title return $x/title
Kết quả:
<title lang="en">Harry Potter</title> <title lang="vi">Ý nghĩa hàng ngày của Ý</title> <title lang="en">Learning XML</title> <title lang="en">XQuery Kick Start</title>
Câu lệnh return:
Câu lệnh return quy định nội dung cần trả về.
for $x in doc("books.xml")/bookstore/book return $x/title
Kết quả:
<title lang="vi">Ý nghĩa hàng ngày của Ý</title> <title lang="en">Harry Potter</title> <title lang="en">XQuery Kick Start</title> <title lang="en">Learning XML</title>
- Trang trước Thêm XQuery
- Trang tiếp theo Hàm trong XQuery