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 子句中
let $name := (substring($booktitle,1,4))
XQuery 使用者定義函式
如果你找不到所需的 XQuery 函式,你可以編寫自己的函式。
使用者定義函式可以在查詢中定義,也可以在單獨的庫中定義。
語法
declare function prefix:function_name($parameter as datatype)
as returnDatatype
{
...function code here...
};
關於使用者定義函式的說明
- 使用 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)
};
下面是如何呼叫上述函式的示例
<minPrice>{local:minPrice($book/price,$book/discount)}</minPrice>