Funkce XQuery
XQuery 1.0, XPath 2.0 a XSLT 2.0 sdílejí stejnou knihovnu funkcí.
Funkce XQuery
XQuery je postaven na výrazech XPath. XQuery 1.0 a XPath 2.0 sdílejí stejný datový model a podporují stejné funkce a operátory.
V XQuery můžete také definovat své vlastní funkce.
Datové typy XQuery
XQuery sdílí stejné datové typy jako XML Schema 1.0 (XSD).
Příklady volání funkcí
Volání funkce se může objevit tam, kde se může objevit výraz. Podívejte se na příklady níže:
Příklad 1: V prvku
<name>{upper-case($booktitle)}</name>
Příklad 2: V predikátu výrazu cesty
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']
Příklad 3: V klauzuli let
let $name := (substring($booktitle,1,4))
Uživatelsky definované funkce XQuery
Pokud nemůžete najít funkci XQuery, kterou potřebujete, můžete napsat vlastní.
Uživatelsky definované funkce lze definovat v dotazu nebo v samostatné knihovně.
Syntax
declare function prefix:function_name($parameter as datatype)
as returnDatatype
{
...function code here...
};
Poznámky k funkcím definovaným uživatelem:
- Použijte klíčové slovo deklarovat funkci
- Název funkce musí mít předponu
- Datové typy parametrů jsou většinou stejné jako datové typy definované v XML Schema
- Tělo funkce musí být obklopeno složenými závorkami
Příklad uživatelsky definované funkce deklarované v dotazu
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>