XQuery 関数

XQuery 1.0、XPath 2.0およびXSLT 2.0は同じ関数ライブラリを共有します。

XQuery 関数

XQueryには100以上の内蔵関数があります。これらの関数は文字列値、数値、日付および時間の比較、ノードおよびQName操作、シーケンス操作、論理値などに使用できます。また、XQueryでユーザー定義関数も定義できます。

XQuery内蔵関数

XQuery関数の命名空間URI:

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

関数のデフォルトの命名空間接頭辞は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(
  $price as xs:decimal?,
  $discount as xs:decimal?)
  AS xs:decimal?
{}}
let $disc := ($price * $discount) div 100
return ($price - $disc)
;
(: 上記の関数を呼び出す例は以下の通りです :)
<minPrice>{local:minPrice($book/price, $book/discount)}</minPrice>