XQuery 1.0

www.altova.com Imprimer cette rubrique Page précédente Un niveau supérieur Page suivante

Accueil >  Informations moteur > Informations concernant le moteur XSLT et XQuery >

XQuery 1.0

Cette section :

 

Conformité du moteur
Compatibilité du schéma (Schema awareness)
Encodage
Espaces de nom
XML source et validation
Contrôle de type statique et dynamique
Modules bibliothèque
Modules externes
Collations
Précision des données numériques
Prise en charge des instructions XQuery

 

 


 

Conformité

Le moteur XQuery 1.0 de RaptorXML Server est conforme à la Recommandation XQuery 1.0 du 14 décembre 2010 du World Wide Web Consortium (W3C's). Le standard XQuery accorde un pouvoir discrétionnaire concernant la mise en place de nombreuses fonctions. Ci-dessous, vous trouverez une liste expliquant comment le moteur XQuery 1.0 implémente ces fonctions.

 

 


 

 

Compatibilité avec le schéma

Le moteur XQuery 1.0 est schema-aware.

 

 


 

 

Encodage

Les encodages de caractères UTF-8 et UTF-16 sont pris en charge.

 

 


 

 

Espaces de nom

Les URI d'espace de nom suivant et leurs liaisons associées sont prédéfinies.

 

Nom d'espaces de nom

Préfixe

URI Espace de noms

Types de schéma XML

xs:

http://www.w3.org/2001/XMLSchema

Instance de schéma

xsi:

http://www.w3.org/2001/XMLSchema-instance

Fonctions intégrées

fn:

http://www.w3.org/2005/xpath-functions

Fonctions locales

local:

http://www.w3.org/2005/xquery-local-functions

 

Veuillez noter les points suivants :

 

Le moteur XQuery 1.0 Engine reconnaît les préfixes recensés ci-dessus comme étant liés aux espaces de noms correspondants.
Étant donné que l'espace de noms des fonctions intégrées recensé ci-dessus est l'espace de noms des fonctions par défaut dans XQuery, le préfixe fn: ne doit pas nécessairement être utilisé lorsque des fonctions intégrées sont invoquées (par exemple, string("Hello") appellera la fonction fn:string). Néanmoins, le préfixe fn: peut être utilisé pour appeler une fonction intégrée sans avoir à déclarer l'espace de noms dans le prologue query (par exemple : fn:string("Hello")).
Vous pouvez changer l'espace de noms des fonctions par défaut en déclarant l'expression default function namespace dans le prologue de de requête.
En cas d'utilisation des types depuis l'espace de noms du Schéma XML, le préfixe xs: peut être utilisé sans devoir déclarer explicitement les espace de noms et lier ces préfixes dans le prologue de requête. (Exemple : xs:date and xs:yearMonthDuration.) Si vous souhaitez utiliser d'autres préfixes pour l'espace de noms du schéma XML, cela doit être déclaré explicitement dans le prologue de requête. (Exemple: declare namespace alt = "http://www.w3.org/2001/XMLSchema"; alt:date("2004-10-04").)
Veuillez noter que les types de données untypedAtomic, dayTimeDuration, et yearMonthDuration ont été déplacés, avec les CR de 23 January 2007, depuis l'espace de noms des Types de données XPath vers l'espace de noms du schéma XML, donc : xs:yearMonthDuration.

 

Si des espaces de noms pour les fonctions, les constructeurs de type, les tests de nœud, etc. sont mal attribués, une erreur est rapportée. Veuillez noter, néanmoins, que certaines fonctions portent le même nom que les types de données de schéma, par ex. fn:string et fn:boolean. (Les deux xs:string et xs:boolean sont définis.) Le préfixe d'espace de noms détermine si la fonction ou le constructeur de type est utilisé.

 

 


 

 

XML document de source et validation

Les documents XML utilisés dans l'exécution d'un document XQuery avec le moteur XQuery 1.0 doit être bien formé. Néanmoins, ils ne doivent pas être valides conformément à un schéma XML. Si le fichier n'est pas valide, le fichier invalide est chargé sans information de schéma. Si le fichier XML est associé avec un schéma interne et est valide conformément à ce schéma, l'information de validation post-schéma sera générée pour les données XML et sera utilisée pour l'évaluation de requête.

 

 


 

 

Contrôle de type statique et dynamique

La phase d'analyse statique contrôle les aspects de la requête comme la syntaxe, si des références externes existent (par ex. pour les modules), si des fonctions et des variables invoquées sont définies, etc. Si une erreur est détectée dans la phase de l'analyse statique, elle sera rapportée et l'exécution sera stoppée.

 

Le contrôle de type dynamique est effectué lors de l'exécution, lorsque la requête est réellement exécutée. Si un type est incompatible avec les exigences d'une opération, une erreur sera rapportée. Par exemple, l'expression xs:string("1") + 1 retourne une erreur parce que l'opération d'édition ne peut pas être effectuée sur un opérande de type xs:string.

 

 


 

 

Modules de bibliothèque

Les modules de Bibliothèque stockent les fonctions et les variables de manière à ce qu'elles puissent être réutilisées. Le moteur XQuery 1.0 prend en charge des modules qui sont stockés dans un seul fichier XQuery externe. Un tel fichier de module doit contenir une déclaration module dans son prologue, qui associe un espace de noms cible. Voici un module d'exemple :

 

module namespace libns="urn:module-library";

declare variable $libns:company := "Altova";

declare function libns:webaddress() { "http://www.altova.com" };

 

Toutes les fonctions et les variables déclarées dans le module font partie de l'espace de noms associé au module. Celui-ci est utilisé en l'important dans un fichier XQuery avec l'instruction import module se trouvant dans le prologue de requête. L'instruction import module importe uniquement les fonctions et les variables déclarées directement dans le fichier de module de bibliothèque. Comme suit :

 

import module namespace modlib = "urn:module-library" at "modulefilename.xq";  

if        ($modlib:company = "Altova")
then modlib:webaddress()  
else error("No match found.")

 

 


 

 

Fonctions externes

Les fonctions externes ne sont pas prises en charge, c.à.d. dans les expressions utilisant le mot-clé external, comme dans :

 

declare function hoo($param as xs:integer) as xs:string external;

 

 


 

 

Collations

La collation par défaut est la collation de point de code Unicode, qui compare les chaînes sur la base de leur point de code Unicode. Les autres collations prises en charge sont les collations ICU recensées ici. Pour utiliser une collation spécifique, fournir son URI tel que donné dans la liste des collations prises en charge. Toute comparaison de chaîne, y compris pour les fonctions fn:max et fn:min seront effectuées conformément à la collation spécifiée. Si l'option de collation n'est pas spécifiée, la collation de point de code Unicode par défaut est utilisée.

 

 


 

Précision des types numériques

Le type de données xs:integer est une précision arbitraire, c.à.d. il peut représenter n'importe quel chiffre.
Le type de données xs:decimal a une limite de 20 chiffres après la virgule.
Les types de données xs:float et xs:double ont une précision limitée de 15 chiffres.

 

 


 

 

Prise en charge des instructions XQuery

L'instruction Pragma n'est pas prise en charge. Si elle survient, elle sera ignorée et l'expression de fallback sera évaluée.

 


© 2019 Altova GmbH