Funzioni XQuery
XQuery 1.0, XPath 2.0 e XSLT 2.0 condividono la stessa libreria di funzioni.
Funzioni XQuery
XQuery è basato su espressioni XPath. XQuery 1.0 e XPath 2.0 condividono lo stesso modello di dati e supportano le stesse funzioni e operatori.
Puoi anche definire le tue funzioni in XQuery.
Tipi di dati XQuery
XQuery condivide gli stessi tipi di dati di XML Schema 1.0 (XSD).
Esempi di chiamate di funzione
Una chiamata a una funzione può apparire dove può apparire un'espressione. Guarda gli esempi qui sotto:
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))
Funzioni definite dall'utente di XQuery
Se non riesci a trovare la funzione XQuery di cui hai bisogno, puoi scriverne una tua.
Le funzioni definite dall'utente possono essere definite nella query o in una libreria separata.
Sintassi
declare function prefix:function_name($parameter as datatype)
as returnDatatype
{
...function code here...
};
Note sulle funzioni definite dall'utente:
- Utilizzare la parola chiave della funzione dichiara
- Il nome della funzione deve essere preceduto
- Il tipo di dati dei parametri è per lo più lo stesso dei tipi di dati definiti in XML Schema
- Il corpo della funzione deve essere racchiuso tra parentesi graffe
Esempio di una funzione definita dall'utente dichiarata 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>