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>