Xquery

Xquery

XQuery

XQuery est un langage de requête informatique permettant 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 par rapport aux données XML un rôle similaire à celui du langage SQL vis-à-vis des données relationnelles, et l'on peut trouver des analogies entre ces deux langages.

Sommaire

Syntaxes

Il existe deux syntaxes distinctes 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. De ce fait, elle est beaucoup plus verbeuse et moins lisible que la précédente et est destinée à des manipulations formelles par des programmes (éventuellement eux-mêmes écrits en XQuery).


Exemple

Soit le document XML suivant, situé à l'URL http://www.example.com/ et nommé 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 proprement dit), augmentée par les principales fonctionnalités suivantes:
    • L'expression FLWOR (For Let Where Order by Return), une puissante instruction de boucle, avec de nombreuses fonctionnalités, qui est assez similaire au SELECT de SQL. Grâce au where, il est possible d'écrire des jointures internes ou externes. XQuery version 1.1 ajoute le group by, et le "fenêtrage" (possibilité de découper la séquence d'entrée selon des conditions booléennes). Il existe d'autres constructions telles que if et typeswitch qui peuvent se composer avec le FLWOR.
    • Les constructeurs, des instructions permettant de reconstruire des fragments XML, avec une syntaxe très proche de XML lui-même (un fragment bien formé de XML est de fait une expression XQuery valide). Ceci permet d'écrire des modèles (templates) comportant des expressions évaluées dynamiquement, à la manière des nombreux langages (exemple: PHP) de génération de pages web.
    • 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) permet de 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 permet de spécifier les schémas XML auxquels répondent les données manipulées, permettant ainsi d'inférer les types de certaines expressions, et éventuellement d'optimiser les requêtes.
  • Le module optionnel Schema Validation permet d'utiliser le mécanisme de validation de fragments XML par rapport à 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 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, c'est à dire restreinte par exemple au contenu d'un élément XML particulier.

Caractéristiques du langage

  • XQuery est un langage fonctionnel (où toute construction retourne une valeur) donc sans effet de bord, c'est à dire ne modifiant pas directement les données sur lesquelles il travaille.
  • Contrairement à la plupart 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 et à 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, c'est à dire 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 donc plus naturelle, mais un peu moins puissante et modulaire qu'en XSLT.

Modèle de données

  • Toutes les valeurs manipulées par XQuery (ainsi que 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 notamment 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 <X>{ $i }</X> retourne la séquence de nœuds éléments: <X>1</X> <X>2</X> <X>3</X>.
  • 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.

Voir aussi

Articles connexes

Implémentations

Le portail XQuery du W3C liste une cinquantaine d'implémentations de XQuery, open-source ou commerciales, ou de produits ou projets de recherche basés sur XQuery.

Les bases de données XML natives supportant XQuery sont (en 2009) au nombre d'une quinzaine, dont environ le tiers sont open-source.

Liens externes

  • Portail de l’informatique Portail de l’informatique
Ce document provient de « XQuery ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Xquery de Wikipédia en français (auteurs)

Игры ⚽ Поможем решить контрольную работу

Regardez d'autres dictionnaires:

  • XQuery — is a query language (with some programming language features) that is designed to query collections of XML data. It is semantically similar to SQL.XQuery 1.0 was developed by the XML Query working group of the W3C. The work was closely… …   Wikipedia

  • XQUERY — steht für XML Query Language und bezeichnet eine vom W3C spezifizierte Abfragesprache für XML Datenbanken. XQuery benutzt eine an XSLT, SQL und C angelehnte Syntax und verwendet XPath sowie XML Schema für sein Datenmodell und seine… …   Deutsch Wikipedia

  • XQuery — steht für XML Query Language und bezeichnet eine vom W3C spezifizierte Abfragesprache für XML Datenbanken. XQuery benutzt eine an XSLT, SQL und C angelehnte Syntax und verwendet XPath sowie XML Schema für sein Datenmodell und seine… …   Deutsch Wikipedia

  • Xquery — steht für XML Query Language und bezeichnet eine vom W3C spezifizierte Abfragesprache für XML Datenbanken. XQuery benutzt eine an XSLT, SQL und C angelehnte Syntax und verwendet XPath sowie XML Schema für sein Datenmodell und seine… …   Deutsch Wikipedia

  • XQuery — est un langage de requête informatique permettant 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… …   Wikipédia en Français

  • XQuery — XQuery  язык запросов, разработанный для обработки данных в формате XML. XQuery использует XML как свою модель данных. XQuery 1.0 был разработан рабочей группой XML Query в составе организации W3C. Эта работа координируется другой рабочей… …   Википедия

  • XQuery — es un lenguaje de consulta diseñado para colecciones de datos XML. Es semánticamente similar a SQL, aunque incluye algunas capacidades de programación. XQuery 1.0 fue desarrollado por el grupo de trabajo de Consulta XML del W3C. El trabajo fue… …   Wikipedia Español

  • XQuery Update Facility — XQuery Update XQuery Update Facility est une extension de XQuery, un langage de requête XML standardisé par le W3C. Cette extension fournit les moyens de modifier des instances du modèle de données XQuery ou XPath 2 (documents ou bases de… …   Wikipédia en Français

  • XQuery Update — Facility est une extension de XQuery, un langage de requête XML standardisé par le W3C. Cette extension fournit les moyens de modifier des instances du modèle de données XQuery ou XPath 2 (documents ou bases de données). XQuery Update est une… …   Wikipédia en Français

  • XQuery Update Facility — is an extension to the XML Query language, XQuery. It provides expressions that can be used to make changes to instances of the XQuery 1.0 and XPath 2.0 Data Model.It became a W3C Candidate Recommendation on 14 March 2008.Implementations*… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”