เลือกและกรอง XQuery

เอกสารตัวอย่าง XML

เราจะใช้คู่มือเอกสาร "books.xml" ต่อไปในตัวอย่างข้างต้น (และไฟล์ XML ที่ใช้ในบทบาทของเราก่อนหน้านี้)。

ดูได้ในเว็บเบราเซอร์ของคุณ "books.xml" ไฟล์.

เลือกและกรององค์ประกอบ

เหมือนที่เห็นได้ในบทก่อนหน้านี้,เราใช้ประโยคแสดงทาง XML หรือ FLWOR ในการเลือกและกรององค์ประกอบ

ดูแบบแสดง FLWOR ด้านล่าง

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
for
(ใช้ได้เลือก) ผูกตัวแปรกับแต่ละรายการที่ถูกกลับค่าโดยแบบแสดง in
let
(ใช้ได้เลือก)
where
(ใช้ได้เลือก) กำหนดเงื่อนไข
order by
(ใช้ได้เลือก) กำหนดลำดับของผลลัพธ์
return
กำหนดสิ่งที่จะกลับค่าในผลลัพธ์

คำสั่ง for

คำสั่ง for จะผูกตัวแปรกับแต่ละรายการที่ถูกกลับค่าโดยแบบแสดง in. คำสั่ง for สามารถสร้างรอบวน. คำสั่ง for สามารถมีหลายคำในแบบแสดง FLWOR

ถ้าต้องการที่จะวนรอบครั้งที่เฉพาะในคำสั่ง for คุณสามารถใช้คำที่ใช้เรียก to :

for $x in (1 to 5)
return <test>{$x}</test>

ผลลัพธ์:

<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>

คำที่ใช้เรียก at ใช้สำหรับคำนวณทั้งหมดในรอบวน

for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>

ผลลัพธ์:

<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>

ใน การใช้ for ในคำสั่งด้วยมีความเป็นไปได้ที่จะมีหลายแบบแสดง inโปรดใช้คำ逗อเพื่อแบ่งตัวแปรในแถวแรกของแบบแสดง in

for $x in (10,20), $y in (100,200)
return <test>x={$x} และ y={$y}</test>

ผลลัพธ์:

<test>x=10 และ y=100</test>
<test>x=10 และ y=200</test>
<test>x=20 และ y=100</test>
<test>x=20 และ y=200</test>

let 语句

การแสดงสามารถทำการจัดสรรตัวแปร และป้องกันการซ้ำคำแสดงเดียวกันหลายครั้ง การแสดงจะไม่นำไปสู่การวนลูป

let $x := (1 to 5)
return <test>{$x}</test>

ผลลัพธ์:

<test>1 2 3 4 5</test>

การแสดง

การแสดงที่กำหนดเงื่อนไขหนึ่งหรือหลายเงื่อนไขสำหรับผลลัพธ์

where $x/price>30 and $x/price<100

การแสดง

การแสดงที่กำหนดลำดับของผลลัพธ์ ในที่นี้ เราต้องการจัดระเบียบผลลัพธ์ตาม category และ title

for $x in doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $x/title

ผลลัพธ์:

<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>

การแสดง

การแสดงที่กำหนดเนื้อหาที่ต้องการคืน

for $x in doc("books.xml")/bookstore/book
return $x/title

ผลลัพธ์:

<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>