Fonctions XQuery
XQuery 1.0, XPath 2.0 et XSLT 2.0 partagent la même bibliothèque de fonctions.
Fonctions XQuery
XQuery est construit sur des expressions XPath. XQuery 1.0 et XPath 2.0 partagent le même modèle de données et prennent en charge les mêmes fonctions et opérateurs.
Vous pouvez également définir vos propres fonctions dans XQuery.
Types de données XQuery
XQuery partage les mêmes types de données que XML Schema 1.0 (XSD).
Exemples d'appels de fonction
Un appel à une fonction peut apparaître là où une expression peut apparaître. Regardez les exemples ci-dessous :
Exemple 1 : Dans un élément
<name>{upper-case($booktitle)}</name>
Exemple 2 : Dans le prédicat d'une expression de chemin
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']
Exemple 3 : Dans une clause let
let $name := (substring($booktitle,1,4))
Fonctions définies par l'utilisateur XQuery
Si vous ne trouvez pas la fonction XQuery dont vous avez besoin, vous pouvez écrire la vôtre.
Les fonctions définies par l'utilisateur peuvent être définies dans la requête ou dans une bibliothèque distincte.
Syntaxe
declare function prefix:function_name($parameter as datatype)
as returnDatatype
{
...function code here...
};
Remarques sur les fonctions définies par l'utilisateur :
- Utilisez le mot-clé de la fonction declare
- Le nom de la fonction doit être préfixé
- Le type de données des paramètres est essentiellement le même que les types de données définis dans XML Schema
- Le corps de la fonction doit être entouré d'accolades
Exemple de fonction définie par l'utilisateur déclarée dans la requête
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>