XQuery 1.0
Cette section :
•Compatibilité du schéma (Schema awareness)
•Contrôle de type statique et dynamique
•Précision des données numériques
•Prise en charge des instructions XQuery
•Comportement spécifique à la mise en œuvre
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.
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() { "https://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;
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.
Comportement spécifique à la mise en œuvre
CI-dessous, vous trouverez une description pour savoir comment les moteurs XQuery et XQuery Update 1.0 gèrent les aspects de certaines fonctions spécifiques à la mise en œuvre.
unparsed-text
L'argument href accepte (i) les chemins relatifs pour les fichiers dans le dossier base-uri et (ii) les chemins absolus avec ou sans file:// protocol. Les encodages pris en charge de manière supplémentaire sont (spécifiques à Altova): x-binarytobase16 et x-binarytobase64. Exemple : xs:base64Binary(unparsed-text('chart.png', 'x-binarytobase64')).
unparsed-text-available
L'argument href accepte (i) les chemins relatifs pour les fichiers dans le dossier base-uri et (ii) les chemins absolus avec ou sans file:// protocol. Les encodages pris en charge de manière supplémentaire sont (spécifiques à Altova): x-binarytobase16 et x-binarytobase64.
Note : | les valeurs d'encodage suivantes, qui sont mises en œuvre dans des versions antérieures du produit prédécesseur de RaptorXML, AltovaXML, sont dépcréciées à présent : base16tobinary, base64tobinary, binarytobase16 and binarytobase64. |