ล่าสุดการพัฒนาเว็บบทเรียน
 

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


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

เราจะใช้ "books.xml" เอกสารในตัวอย่างด้านล่าง (same XML file as in the previous chapters)

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


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

ในฐานะที่เราได้เห็นในบทก่อนหน้านี้เราจะเลือกและองค์ประกอบที่มีทั้งการแสดงออกหรือเส้นทางด้วยการแสดงออก FLWOR กรอง

ดูที่การแสดงออก FLWOR ต่อไปนี้:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
  • สำหรับ - (optional) ผูกตัวแปรแต่ละรายการที่ส่งคืนโดยในการแสดงออก
  • ให้ - (optional)
  • ที่ - (optional) ระบุเกณฑ์
  • สั่งซื้อโดย - (optional) ระบุการจัดเรียงลำดับของผล
  • การกลับมา - ระบุว่าจะกลับมาในผล

สำหรับข้อ

สำหรับข้อผูกตัวแปรแต่ละรายการที่ส่งคืนโดยในการแสดงออก เพื่อให้ได้ผลลัพธ์ในประโยคซ้ำ สามารถมีได้หลายข้อในการแสดงออก FLWOR เดียวกัน

ห่วงหมายเลขเฉพาะของครั้งในประโยคสำหรับคุณอาจใช้ 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 $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>

ผล:

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

ข้อช่วยให้

ข้อให้ช่วยให้การกำหนดตัวแปรและหลีกเลี่ยงการทำซ้ำการแสดงออกเดียวกันหลายครั้ง ข้อให้ไม่ได้ผลในการทำซ้ำ

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

ผล:

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

ที่ข้อ

ประโยคที่ถูกใช้เพื่อระบุหนึ่งหรือมากกว่าเกณฑ์สำหรับการผล:

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

การสั่งซื้อโดยข้อ

การสั่งซื้อโดยข้อถูกใช้เพื่อระบุลำดับการจัดเรียงของผล ที่นี่เราต้องการสั่งซื้อผลที่ตามประเภทและชื่อเรื่อง:

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>