1. 程式人生 > 實用技巧 >XQuery內建函式以及 XSLT 2.0 共享相同

XQuery內建函式以及 XSLT 2.0 共享相同

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>