Funkcje w XQuery
- Poprzednia strona Wybór XQuery
- Następna strona Podsumowanie XQuery
XQuery 1.0, XPath 2.0 oraz XSLT 2.0 dzielą ten sam zestaw funkcji.
Funkcje w XQuery
XQuery zawiera ponad 100 wbudowanych funkcji. Te funkcje mogą być używane do operacji na wartościach string, liczbowych, dat, czasu, operacji na węzłach i QName, operacji na sekwencjach, wartości logicznych itp. Możesz również zdefiniować własne funkcje w XQuery.
Funkcje wbudowane w XQuery
URI przestrzeni nazw funkcji XQuery:
http://www.w3.org/2005/02/xpath-functions
Domyślny prefiks przestrzeni nazw dla funkcji to fn:.
Wskazówka:Funkcje często są 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 z prefiksem przy wywoływaniu.
Pełna wersja można znaleźć w naszym kursie XPath:Dokumentacja funkcji wbudowanych w XQuery》。
Przykład wywołania funkcji
Wywołania funkcji mogą być używane razem z wyrażeniami. Zobacz poniższe przykłady:
Przykład 1: W elementach
<name>{upper-case($booktitle)}</name>
Przykład 2: W predykatach wyrażeń ścieżkowych
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry'
Przykład 3: W wyrażeniu 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ę.
Można zdefiniować funkcje użytkownika w zapytaniu lub w oddzielnym repozytorium.
Gramatyka
declare function prefiks:nazwa_funkcji($parametr AS typ_danych)
AS typ danych zwracanych
{
(: ...kod funkcji... :)
;
Uwagi dotyczące funkcji użytkownika:
- Użyj klucza declare function
- Nazwa funkcji musi zawierać prefiks
- Typ danych parametrów jest zazwyczaj zgodny z typem danych zdefiniowanym w XML Schema
- Ciało funkcji musi być otoczone nawiasami klamrowymi
Przykład funkcji użytkownika zadeklarowanej 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 Podsumowanie XQuery