ฟังก์ชัน XQuery
- หน้าก่อน เลือก XQuery
- หน้าต่อไป สรุป XQuery
XQuery 1.0、XPath 2.0 以及 XSLT 2.0 共享相同的函数库。
ฟังก์ชัน XQuery
XQuery 含有超过 100 个内建的函数。这些函数可用于字符串值、数值、日期以及时间比较、节点和 QName 操作、序列操作、逻辑值等等。您也可在 XQuery 中定义自己的函数。
XQuery 内建函数
XQuery 函数命名空间的 URI:
http://www.w3.org/2005/02/xpath-functions
函数命名空间的默认前缀是 fn:。
提示:函数经常被通过 fn: 前缀进行调用,例如 fn:string()。不过,由于 fn: 是命名空间的默认前缀,所以函数名称不必在被调用时使用前缀。
您可以在我们的 XPath 教程中找到完整的《内建 XQuery 函数参考手册》。
函数调用实例
函数调用可与表达式一同使用。请看下面的例子:
例1:在元素中
<name>{upper-case($booktitle)}</name>
例2: 在路径表达式的谓语中
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']
例3: 在 let 语句中
let $name := (substring($booktitle,1,4))
ฟังก์ชันที่ประกาศโดยผู้ใช้ XQuery
ถ้าไม่พบฟังก์ชัน XQuery ที่ต้องการ คุณสามารถเขียนฟังก์ชันของตัวเอง
ฟังก์ชันที่ประกาศโดยผู้ใช้สามารถถูกกำหนดในคำถามหรือที่สมุดเครื่องมือ
ศัพท์
declare function หน้าปฏิบัติ:ชื่อฟังก์ชัน($ตัวแปร AS ประเภทข้อมูล)
AS ประเภทข้อมูลที่จะกลับ
{
(: ... รหัสฟังก์ชัน ... :)
;
ข้อสัญญาณสำหรับฟังก์ชันที่ประกาศโดยผู้ใช้
- ใช้คำสั่ง declare function
- ชื่อฟังก์ชันต้องใช้คำหน้าปฏิบัติ
- ประเภทของตัวแปรประกอบของฟังก์ชันทั่วไปจะตรงกับประเภทของข้อมูลที่กำหนดใน XML Schema
- เนื้อหาฟังก์ชันต้องมีช่องว่างรอบ
ตัวอย่างฟังก์ชันที่ประกาศโดยผู้ใช้ในคำถาม
declare function local:minPrice(
$price as xs:decimal?,
$discount as xs:decimal?)
AS xs:decimal?
{
let $disc := ($price * $discount) div 100
return ($price - $disc)
;
( : ตัวอย่างการเรียกฟังก์ชันด้านบน : )
<minPrice>{local:minPrice($book/price, $book/discount)}</minPrice>
- หน้าก่อน เลือก XQuery
- หน้าต่อไป สรุป XQuery