XQuery
XQuery est un langage de requête informatique donnant la possibilité non seulement d'extraire des informations d'un document XML, ou d'une collection de documents XML, mais également d'effectuer des calculs complexes à partir des informations extraites...
Recherche sur Google Images :
Source image : xdepo.sourceforge.net Cette image est un résultat de recherche de Google Image. Elle est peut-être réduite par rapport à l'originale et/ou protégée par des droits d'auteur. |
Page(s) en rapport avec ce sujet :
- Transact-SQL prend en charge un sous-ensemble du langage XQuery utilisé pour interroger le type de données xml. Cette implémentation de XQuery est alignée... (source : msdn.microsoft)
- Langage de requête permettant d'accéder à chacun des éléments d'information d'un document XML, d'en sélectionner des listes et de les manipuler. XQuery est ... (source : xmlfr)
- ... XQuery est un langage d'extraction de données opérant sur du contenu XML, développé par un groupe de travail du W3C (World Wide Web... (source : sqlserver.itpro)
XQuery est un langage de requête informatique donnant la possibilité non seulement d'extraire des informations d'un document XML, ou d'une collection de documents XML, mais également d'effectuer des calculs complexes à partir des informations extraites et de reconstruire de nouveaux documents ou fragments XML.
XQuery est une spécification du W3C dont la version 1.0 finale date de Janvier 2007, et dont l'élaboration a demandé près de huit années. XQuery a été développé conjointement avec XSLT 2, une révision majeure du langage de transformation XML XSLT, avec lequel il partage le sous-ensemble XPath 2.
XQuery joue comparé aux données XML un rôle comparable à celui du langage SQL vis-à-vis des données relationnelles, et on peut trouver des ressemblances entre ces deux langages.
Syntaxes
Il existe deux syntaxes différentes pour XQuery :
- la syntaxe "naturelle" non-XML dite aussi FLWOR (prononcer flower), dont le nom vient des cinq instructions principales qui la composent (for, let, where, order by et return) ;
- la syntaxe XQueryX (pour «XML Syntax for XQuery»), dans laquelle une requête est un document XML. Par conséquent, elle est bien plus verbeuse et moins lisible que la précédente et est conçue pour des manipulations formelles par des programmes (peut-être eux-mêmes rédigés en XQuery).
Exemple
Soit le document XML suivant, localisé à l'URL http ://www. example. com/ et appelé exemple. xml :
<employes>
<employe>
<nom>Dupond</nom>
<prenom>Albert</prenom>
<date_naissance>23/09/1958</date_naissance>
</employe>
<employe>
<nom>Dupont</nom>
<prenom>Alphonse</prenom>
<date_naissance>23/12/1975</date_naissance>
</employe>
<employe>
<nom>Dupont</nom>
<prenom>Isabelle</prenom>
<date_naissance>12/03/1967</date_naissance>
</employe>
...
</employes>
La requête FLWR suivante :
for $b in document ("http://example.com/exemple.xml")//employe
where $b/nom = "Dupont"
return
<dupont>{
$b/prenom,
$b/date_naissance
}</dupont>
va renvoyer le résultat suivant :
<dupont> <prenom>Alphonse</prenom> <date_naissance>23/12/1975</date_naissance> </dupont> <dupont> <prenom>Isabelle</prenom> <date_naissance>12/03/1967</date_naissance> </dupont>
Composantes du langage
XQuery est un langage spécifié de façon modulaire : le cœur du langage peut être augmenté par des modules optionnels.
- Le langage minimal se base sur la norme XPath 2 (qui spécifie le langage de requête XML lui-même), augmentée par les principales fonctionnalités suivantes :
- L'expression FLWOR (For Let Where Order Return), une particulièrement puissante instruction de boucle, avec de nombreuses fonctionnalités, qui est assez identique au SELECT de SQL. De nombreuses autres constructions telles que if et typeswitch peuvent se composer avec le FLWOR.
- Les constructeurs, des instructions servant à reconstruire des fragments XML, dont une forme possède une syntaxe particulièrement proche de XML lui-même (un fragment bien constitué de XML est en fait une expression XQuery valide).
- Les fonctions définies par l'utilisateur
- Un ensemble de fonctions et opérateurs prédéfinis communs à XPath2, XQuery et XSLT 2.
Modules optionnels :
- Le module optionnel Full Axis (Axes étendus) sert à bénéficier des "axes" de requête ancestor, ancestor-or-self, following, following-sibling, preceding, et preceding-sibling dans une expression XPath.
- Les modules XQuery permettent d'importer des librairies de fonctions ou de variables XQuery dans un programme XQuery.
- Le module optionnel Schema Import sert à spécifier les schémas XML auxquels répondent les données manipulées, donnant la possibilité ainsi d'inférer les types de certaines expressions, et peut-être d'optimiser les requêtes.
- Le module optionnel Schema Validation permet d'utiliser le mécanisme de validation de fragments XML comparé à des schémas.
- Le module optionnel "Typage Statique" supporte des vérifications de type avant exécution plus poussées.
Extensions :
- XQuery Update est une norme en cours d'élaboration (norme préliminaire en 2008) étendant XQuery par des instructions de modification de nœuds XML : insert node, delete node, rename node, replace node, replace value, copy/modify.
- XQuery Full-Text est aussi une extension en cours d'élaboration (norme préliminaire en 2008) spécifiant la recherche plein-texte intégrée à XQuery. Elle permet la recherche contextuelle de mots et de phrases, autrement dit restreinte par exemple au contenu d'un élément XML spécifique.
Caractéristiques du langage
- XQuery est un langage fonctionnel (où toute construction retourne une valeur) par conséquent sans effet de bord, autrement dit ne modifiant pas directement les données sur lesquelles il travaille.
- Au contraire de la majorité des langages fonctionnels, XQuery ne possède pas de fonctions de second ordre (pouvant être argument d'autres fonctions).
- XQuery peut optionnellement être fortement typé (au sens des Schémas XML) à la compilation ainsi qu'à l'exécution.
- Ces aspects sont partagés avec XSLT 2, qui est un langage proche de XQuery dans ses fonctionnalités.
- La programmation en XQuery est en général d'un style plus "impératif" qu'en XSLT, autrement dit qu'elle nécessite la connaissance a priori de la structure des données XML manipulées. Inversement XSLT spécifie de façon déclarative des traitements sur chaque type de nœuds XML, indépendamment les uns des autres. La programmation en XQuery est par conséquent plus naturelle, mais légèrement moins puissante et modulaire qu'en XSLT.
Modèle de données
- Toutes les valeurs manipulées par XQuery (mais aussi XPath2 et XSLT 2) sont des séquences (ou listes) d'items. Il n'y a pas de séquences imbriquées : une séquence de séquences est toujours "mise à plat".
- Les items se répartissent en deux grands groupes :
- les nœuds XML, qui eux-mêmes sont de six espèces différentes : document, élément, attribut, texte, commentaire, processing-instruction.
- Les types de base (empruntés aux Schémas XML) au nombre de 48, comprenant surtout les types numériques (entiers, décimaux, flottants), les chaines de caractères et dérivés, les dates, instants et durées.
- Les types de bases peuvent être étendus par l'importation de Schémas (fonctionnalité optionnelle).
Exemples :
- L'expression 1 to 5 retourne la séquence d'items de type entier : 1 2 3 4 5.
- L'expression for i in 1 to 5 return i * i retourne la séquence d'items de type entier : 1 4 9 16 25.
- L'expression for i in 1 to 3 return
{ i } retourne la séquence de nœuds éléments :1 2 3 . - Une séquence n'est pas obligatoirement d'un type homogène. Par exemple l'expression (1, 2), 2.5, (true (), "du texte") retourne la séquence d'items 1 2 2.5 true () "du texte" de types respectivement entier (2 fois), décimal, booléen, chaine de caractères.
Recherche sur Amazone (livres) : |
Catégories :
Langage de transformation XML - Standard du web
La version présentée ici à été extraite depuis cette source le 11/03/2009.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.

Accueil
Recherche
Début page
Contact
Imprimer
Accessibilité