Chọn và lọc XQuery
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 .
Chọn và lọc các phần tử
Như chúng ta đã thấy trong các chương trước, chúng ta đang chọn và lọc các phần tử bằng biểu thức Đường dẫn hoặc bằng biểu thức FLWOR.
Hãy xem biểu thức FLWOR sau:
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
- for - (tùy chọn) liên kết một biến với mỗi mục được biểu thức in trả về
- hãy - (tùy chọn)
- trong đó - (tùy chọn) chỉ định tiêu chí
- order by - (tùy chọn) chỉ định thứ tự sắp xếp của kết quả
- return - chỉ định những gì sẽ trả về trong kết quả
Điều khoản for
Mệnh đề for liên kết một biến với mỗi mục được biểu thức in trả về. Mệnh đề for dẫn đến sự lặp lại. Có thể có nhiều mệnh đề for trong cùng một biểu thức FLWOR.
Để lặp một số lần cụ thể trong mệnh đề for, bạn có thể sử dụng từ khóa to :
for $x in (1 to 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 có thể được sử dụng để đếm số lần lặp:
for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>
Kết quả:
<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>
Nó cũng được phép có nhiều hơn một biểu thức trong mệnh đề for. Sử dụng dấu phẩy để phân tách từng phần trong biểu thức:
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>
Điều khoản cho phép
Mệnh đề let cho phép gán các biến và tránh lặp lại cùng một biểu thức nhiều lần. Mệnh đề let không dẫn đến việc lặp lại.
let $x := (1 to 5)
return <test>{$x}</test>
Kết quả:
<test>1 2 3 4 5</test>
Điều khoản ở đâu
Mệnh đề Where được sử dụng để chỉ định một hoặc nhiều tiêu chí cho kết quả:
where $x/price>30 and $x/price<100
Lệnh theo khoản
Mệnh đề order by được sử dụng để xác định thứ tự sắp xếp của kết quả. Ở đây chúng tôi muốn sắp xếp kết quả theo danh mục và tiêu đề:
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="en">Everyday Italian</title>
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>
Điều khoản hoàn trả
Mệnh đề trả lại chỉ rõ những gì sẽ được trả lại.
for $x in doc("books.xml")/bookstore/book
return $x/title
Kết quả:
<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>