Funkcje XQuery
XQuery 1.0, XPath 2.0 i XSLT 2.0 współdzielą tę samą bibliotekę funkcji.
Funkcje XQuery
XQuery jest zbudowany na wyrażeniach XPath. XQuery 1.0 i XPath 2.0 współdzielą ten sam model danych i obsługują te same funkcje i operatory.
Możesz także zdefiniować własne funkcje w XQuery.
Typy danych XQuery
XQuery współdzieli te same typy danych co XML Schema 1.0 (XSD).
Przykłady wywołań funkcji
Wywołanie funkcji może pojawić się tam, gdzie może pojawić się wyrażenie. Spójrz na poniższe przykłady:
Przykład 1: W elemencie
<name>{upper-case($booktitle)}</name>
Przykład 2: W predykacie wyrażenia ścieżki
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']
Przykład 3: W zdaniu let
let $name := (substring($booktitle,1,4))
Funkcje zdefiniowane przez użytkownika XQuery
Jeśli nie możesz znaleźć potrzebnej funkcji XQuery, możesz napisać własną.
Funkcje zdefiniowane przez użytkownika można zdefiniować w zapytaniu lub w osobnej bibliotece.
Składnia
declare function prefix:function_name($parameter as datatype)
as returnDatatype
{
...function code here...
};
Uwagi dotyczące funkcji zdefiniowanych przez użytkownika:
- Użyj słowa kluczowego funkcji define
- Nazwa funkcji musi być poprzedzona prefiksem
- Typy danych parametrów są w większości takie same jak typy danych zdefiniowane w schemacie XML
- Treść funkcji musi być otoczona nawiasami klamrowymi
Przykład funkcji zdefiniowanej przez użytkownika zadeklarowanej w zapytaniu
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>