XQuery內建函式以及 XSLT 2.0 共享相同
阿新 • • 發佈:2020-08-28
XQuery 函式
XQuery 含有超過 100 個內建的函式。這些函式可用於字串值、數值、日期以及時間比較、節點和 QName 操作、序列操作、邏輯值等等。您也可在 XQuery 中定義自己的函式。
XQuery 內建函式
XQuery 函式名稱空間的 URI:
函式名稱空間的預設字首是 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($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>