的XQuery 1.0,XPath 2.0中,和XSLT 2.0共享相同的函數的庫。
XQuery函數
的XQuery是建立在XPath表達式。 的XQuery 1.0和XPath 2.0共享相同的數據模型,並支持相同的函數和操作符。
您也可以在XQuery中定義自己的函數。
XQuery的數據類型
XQuery的共享相同的數據類型的XML模式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 注意到在用戶定義的函數: - 使用聲明函數關鍵字
- 函數的名稱必須為前綴
- 的參數的數據類型是大多相同的XML模式中定義的數據類型
- 該函數的主體必須由大括號包圍
一個用戶定義的函數的例子在查詢聲明
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>