ไวยากรณ์ XQuery
XQuery คำนึงถึงขนาดตัวพิมพ์และองค์ประกอบ XQuery แอตทริบิวต์และตัวแปรต้องเป็นชื่อ XML ที่ถูกต้อง
กฎไวยากรณ์พื้นฐานของ XQuery
กฎไวยากรณ์พื้นฐานบางประการ:
- XQuery คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
- องค์ประกอบ XQuery คุณลักษณะและตัวแปรต้องเป็นชื่อ XML ที่ถูกต้อง
- ค่าสตริง XQuery สามารถอยู่ในเครื่องหมายคำพูดเดี่ยวหรือคู่
- ตัวแปร XQuery ถูกกำหนดด้วย $ ตามด้วยชื่อ เช่น $bookstore
- ความคิดเห็น XQuery คั่นด้วย (: และ :) เช่น (: ความคิดเห็น XQuery :)
เอกสารตัวอย่าง XML
เราจะใช้เอกสาร "books.xml" ในตัวอย่างด้านล่าง (ไฟล์ XML เดียวกับในบทก่อนหน้า)
ดูไฟล์ "books.xml" ในเบราว์เซอร์ของคุณ
นิพจน์เงื่อนไข XQuery
อนุญาตให้ใช้นิพจน์ "If-then-Else" ใน XQuery
ดูตัวอย่างต่อไปนี้:
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>
หมายเหตุเกี่ยวกับไวยากรณ์ "if-then-else":วงเล็บรอบๆ นิพจน์ if จำเป็น จำเป็นต้องมีอื่น แต่สามารถเป็นอย่างอื่น () ได้
ผลลัพธ์ของตัวอย่างข้างต้นจะเป็น:
<adult>Everyday Italian</adult>
<child>Harry Potter</child>
<adult>XQuery Kick Start</adult>
<adult>Learning XML</adult>
การเปรียบเทียบ XQuery
ใน XQuery มีวิธีเปรียบเทียบค่าสองวิธี
1. การเปรียบเทียบทั่วไป: =, !=, <, <=, >, >=
2. การเปรียบเทียบค่า: eq, ne, lt, le, gt, ge
ความแตกต่างระหว่างสองวิธีเปรียบเทียบแสดงไว้ด้านล่าง
นิพจน์ต่อไปนี้คืนค่า จริง หากแอตทริบิวต์ q มีค่ามากกว่า 10:
$bookstore//book/@q > 10
นิพจน์ต่อไปนี้คืนค่า จริง หากมีแอตทริบิวต์ q เพียงรายการเดียวที่ส่งคืนโดยนิพจน์ และค่าของแอตทริบิวต์นั้นมากกว่า 10 หากส่งคืน q มากกว่าหนึ่งรายการ ข้อผิดพลาดจะเกิดขึ้น:
$bookstore//book/@q gt 10