XQuery関数
XQuery 1.0、XPath 2.0、およびXSLT 2.0は、同じ関数ライブラリを共有します。
XQuery関数
XQueryはXPath式に基づいて構築されています。XQuery1.0とXPath2.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...
};
ユーザー定義関数に関する注意:
- 宣言関数キーワードを使用する
- 関数の名前の前に付ける必要があります
- パラメータのデータ型は、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>