XQuery 1.0, XPath 2.0 e XSLT 2.0 condividono la biblioteca stesse funzioni.
Funzioni XQuery
XQuery è costruito su espressioni XPath. XQuery 1.0 e XPath 2.0 condividono lo stesso modello di dati e supportano le stesse funzioni e gli operatori.
È inoltre possibile definire le proprie funzioni in XQuery.
Tipi di dati XQuery
XQuery condivide gli stessi tipi di dati come XML Schema 1.0 (XSD) .
Esempi di chiamate di funzione
Una chiamata ad una funzione può apparire dove può apparire un'espressione. Guardate gli esempi di seguito:
Esempio 1: In un elemento
<name>{upper-case($booktitle)}</name>
Esempio 2: Nel predicato di un'espressione di percorso
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']
Esempio 3: In una clausola let
let $name := (substring($booktitle,1,4))
XQuery funzioni definite dall'utente
Se non è possibile trovare la funzione XQuery è necessario, è possibile scrivere il proprio.
Le funzioni definite dall'utente possono essere definite nella query o in una libreria separata.
Sintassi
declare function Note sulle funzioni definite dall'utente: - Usa la parola chiave funzione di declare
- Il nome della funzione deve essere preceduto
- Il tipo di dati dei parametri sono gli stessi dei tipi di dati definiti in XML Schema
- Il corpo della funzione deve essere circondata da parentesi graffe
Esempio di una funzione definita dall'utente dichiarati nella query
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>