XQuery 函數(shù)

2018-02-24 11:55 更新

XQuery 函數(shù)

在 XQuery 中包含許多內(nèi)置的函數(shù),本節(jié)介紹如何調(diào)用或者自定義 XQuery 函數(shù)。

XQuery 1.0、XPath 2.0 以及 XSLT 2.0 共享相同的函數(shù)庫(kù)。


XQuery 函數(shù)

XQuery 含有超過(guò) 100 個(gè)內(nèi)建的函數(shù)。這些函數(shù)可用于字符串值、數(shù)值、日期以及時(shí)間比較、節(jié)點(diǎn)和 QName 操作、序列操作、邏輯值等等。您也可在 XQuery 中定義自己的函數(shù)。


XQuery 內(nèi)建函數(shù)

XQuery 函數(shù)命名空間的 URI:

http://www.w3.org/2005/02/xpath-functions

函數(shù)命名空間的默認(rèn)前綴是 fn:。

提示:函數(shù)經(jīng)常被通過(guò) fn: 前綴進(jìn)行調(diào)用,例如 fn:string()。不過(guò),由于 fn: 是命名空間的默認(rèn)前綴,所以函數(shù)名稱(chēng)不必在被調(diào)用時(shí)使用前綴。

您可以在我們的 XPath 教程中找到完整的《內(nèi)建 XQuery 函數(shù)參考手冊(cè)》。


函數(shù)調(diào)用實(shí)例

函數(shù)調(diào)用可與表達(dá)式一同使用。請(qǐng)看下面的例子:

例1:在元素中

<name>{upper-case($booktitle)}</name>

例2: 在路徑表達(dá)式的謂語(yǔ)中

doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']

例3: 在 let 語(yǔ)句中

let $name := (substring($booktitle,1,4))


XQuery 用戶定義函數(shù)

如果找不到所需的 XQuery 函數(shù),你可以編寫(xiě)自己的函數(shù)。

可在查詢(xún)中或獨(dú)立的庫(kù)中定義用戶自定義函數(shù)。

語(yǔ)法

declare function 前綴:函數(shù)名($參數(shù) AS 數(shù)據(jù)類(lèi)型)
AS 返回的數(shù)據(jù)類(lèi)型
{
 ...函數(shù)代碼...
}

關(guān)于用戶自定義函數(shù)的注意事項(xiàng):

  • 請(qǐng)使用 declare function 關(guān)鍵詞
  • 函數(shù)名須使用前綴
  • 參數(shù)的數(shù)據(jù)類(lèi)型通常與在 XML Schema 中定義的數(shù)據(jù)類(lèi)型一致
  • 函數(shù)主體須被花括號(hào)包圍

一個(gè)在查詢(xún)中聲明的用戶自定義函數(shù)的例子:

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>
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)