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返回的数据类型
{
...函数代码...
}
AS返回的数据类型
{
...函数代码...
}
關於用戶自定義函數的注意事項:
- 請使用declare function 關鍵詞
- 函數名須使用前綴
- 參數的數據類型通常與在XML Schema 中定義的數據類型一致
- 函數主體須被花括號包圍
一個在查詢中聲明的用戶自定義函數的例子:
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>
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>