Funkcje XQuery
- Poprzednia strona Wybór XQuery
- Następna strona Wprowadzenie do DTD
XQuery 1.0, XPath 2.0 oraz XSLT 2.0 dzielą ten sam zestaw funkcji.
Funkcje XQuery
XQuery zawiera ponad 100 wbudowanych funkcji. Te funkcje można używać do operacji na wartościach ciągów, liczb, dat i czasu, operacji na węzłach i QName, operacji na sekwencjach, wartości logicznych itp. Można również zdefiniować własne funkcje w XQuery.
Wbudowane funkcje XQuery
URI przestrzeni nazw funkcji XQuery:
http://www.w3.org/2005/02/xpath-functions
Domyślny prefiks przestrzeni nazw funkcji to fn:.
Wskazówka:Funkcje są często wywoływane za pomocą prefiksu fn:, np. fn:string(). Jednakże, ponieważ fn: jest domyślnym prefiksem przestrzeni nazw, nazwa funkcji nie musi być używana jako prefiks podczas wywoływania.
Pełna wersja "XPath Tutorial" znajduje się w naszej:Podręcznik referencyjny wbudowanych funkcji XQuery》。
Przykład wywołania funkcji
Wywołanie funkcji można połączyć z wyrażeniami. Patrz poniżej za przykładem:
Przykład 1: w elemencie
<name>{upper-case($booktitle)}</name>
Przykład 2: w predykatach 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 użytkownika XQuery
Jeśli nie można znaleźć wymaganej funkcji XQuery, można napisać własną funkcję.
Funkcje użytkownika można zdefiniować w zapytaniu lub w oddzielnym bibliotece.
Gramatyka
declare function prefiks:nazwa_funkcji($parametr AS typ_danych)
AS typ danych zwracanych
{}}
(: ...kod funkcji... :)
;
Uwagi dotyczące funkcji użytkownika zdefiniowanych przez użytkownika:
- Użyj klucza declare function
- Nazwa funkcji musi zawierać prefiks
- Typ danych parametrów zazwyczaj jest zgodny z typem danych zdefiniowanym w XML Schema
- Ciało funkcji musi być otoczone klamrami
Przykład funkcji użytkownika w zapytaniu:
declare function local:minPrice(
$price as xs:decimal?,
$discount as xs:decimal?)
AS xs:decimal?
{}}
let $disc := ($price * $discount) div 100
return ($price - $disc)
;
(Poniżej znajduje się przykład wywołania powyższej funkcji :)
<minPrice>{local:minPrice($book/price, $book/discount)}</minPrice>
- Poprzednia strona Wybór XQuery
- Następna strona Wprowadzenie do DTD