ฟังก์ชัน XQuery
XQuery 1.0, XPath 2.0 และ XSLT 2.0 ใช้ไลบรารีฟังก์ชันเดียวกัน
ฟังก์ชัน XQuery
XQuery สร้างขึ้นบนนิพจน์ XPath XQuery 1.0 และ XPath 2.0 ใช้โมเดลข้อมูลร่วมกันและสนับสนุนฟังก์ชันและตัวดำเนินการเดียวกัน
คุณยังสามารถกำหนดฟังก์ชันของคุณเองใน XQuery ได้อีกด้วย
ประเภทข้อมูล XQuery
XQuery แบ่งปันประเภทข้อมูลเดียวกันกับ XML Schema 1.0 (XSD)
ตัวอย่างการเรียกฟังก์ชัน
การเรียกใช้ฟังก์ชันสามารถปรากฏขึ้นได้ในที่ที่นิพจน์อาจปรากฏขึ้น ดูตัวอย่างด้านล่าง:
ตัวอย่างที่ 1: ในองค์ประกอบ
<name>{upper-case($booktitle)}</name>
ตัวอย่างที่ 2: ในเพรดิเคตของนิพจน์เส้นทาง
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']
ตัวอย่างที่ 3: ในประโยคให้
let $name := (substring($booktitle,1,4))
XQuery ฟังก์ชันที่ผู้ใช้กำหนด
หากคุณไม่พบฟังก์ชัน XQuery ที่ต้องการ คุณสามารถเขียนฟังก์ชันของคุณเองได้
ฟังก์ชันที่ผู้ใช้กำหนดเองสามารถกำหนดได้ในแบบสอบถามหรือในไลบรารีแยกต่างหาก
ไวยากรณ์
declare function prefix:function_name($parameter as datatype)
as returnDatatype
{
...function code here...
};
หมายเหตุเกี่ยวกับฟังก์ชันที่ผู้ใช้กำหนด:
- ใช้คีย์เวิร์ดฟังก์ชันการประกาศ
- ชื่อของฟังก์ชันต้องขึ้นต้นด้วย
- ชนิดข้อมูลของพารามิเตอร์ส่วนใหญ่จะเหมือนกับชนิดข้อมูลที่กำหนดไว้ใน XML Schema
- ร่างกายของการทำงานต้องล้อมรอบด้วยวงเล็บปีกกา
ตัวอย่างของฟังก์ชันที่ผู้ใช้กำหนดซึ่งประกาศไว้ใน Query
declare function local:minPrice($p as xs:decimal?,$d as xs:decimal?)
as xs:decimal?
{
let $disc := ($p * $d) div 100
return ($p - $disc)
};
Below is an example of how to call the function above:
<minPrice>{local:minPrice($book/price,$book/discount)}</minPrice>