Article de reference

XQuery

{{cite web|url=http://www.w3.org/TR/xquery-31/ | title=XQuery 3.1 Recommendation | date=2017-03-21}} "},"typing":{"wt":"[[dynamic typing|dynamic]] or static, {{cite web|url=http...

langage de requête et un langage de programmation fonctionnelle conçu pour interroger et transformer des collections de données structurées et non structurées , principalement au format XML . Il prend également en charge les données textuelles et, grâce à des extensions spécifiques à l'implémentation, d'autres formats tels que les données binaires et relationnelles .

Le langage a été développé par le groupe de travail XML Query du W3C , et sa version 1.0 est devenue une recommandation du W3C en janvier 2007. Le développement de XQuery est étroitement coordonné avec celui de XSLT par le groupe de travail XSL. Les deux groupes assurent conjointement la maintenance de XPath , un composant commun à XQuery et XSLT. XQuery étend XPath avec des fonctionnalités telles que les expressions FLWOR (For, Let, Where, Order by, Return), ce qui le rend sémantiquement similaire à SQL, mais optimisé pour les données hiérarchiques plutôt que relationnelles .

XQuery 3.1, publié en mars 2017, a ajouté la prise en charge de JSON et a introduit les maps , les tableaux et des fonctions d'ordre supérieur supplémentaires , élargissant considérablement les capacités du langage pour le traitement moderne des données .

XQuery est implémenté par de nombreux systèmes de bases de données , bases de données XML et processeurs XML, notamment BaseX , eXist , MarkLogic , Saxon et Berkeley DB XML , ce qui en fait une technologie fondamentale pour le traitement des données XML dans les applications logicielles d'entreprise .

sans effets secondaires , orienté expression, avec un système de types simple , résumé par Kilpeläinen :

Lisp et Prolog par l'exclusion des séquences imbriquées. Les concepteurs de XQuery ont peut-être considéré les séquences imbriquées comme inutiles pour la manipulation du contenu des documents. L'imbrication, ou hiérarchie des structures de documents, est plutôt représentée par des nœuds et leurs relations parent-enfant.

XQuery fournit les moyens d'extraire et de manipuler des données à partir de documents XML ou de toute source de données pouvant être vue comme XML, telles que des bases de données relationnelles ou des documents bureautiques.

XQuery propose un sur-ensemble de la syntaxe des expressions XPath permettant d'accéder à des parties spécifiques d'un document XML. Il la complète par une expression FLWOR , similaire à SQL , pour effectuer des jointures. Une expression FLWOR est construite à partir des cinq clauses qui la définissent : FOR, LET, WHERE, ORDER BY et RETURN.

Le langage offre également une syntaxe permettant de construire de nouveaux documents XML. Lorsque les noms des éléments et des attributs sont connus à l'avance, une syntaxe de type XML peut être utilisée ; dans le cas contraire, des expressions appelées constructeurs de nœuds dynamiques sont disponibles. Toutes ces constructions sont définies comme des expressions au sein du langage et peuvent être imbriquées à volonté.

Le langage est basé sur le modèle de données XQuery et XPath (XDM) qui utilise un modèle structuré en arbre du contenu informationnel d'un document XML, contenant sept types de nœuds : nœuds de document, éléments, attributs, nœuds de texte, commentaires, instructions de traitement et espaces de noms.

XDM modélise également toutes les valeurs comme des séquences (une valeur unique est considérée comme une séquence de longueur un). Les éléments d'une séquence peuvent être des nœuds XML ou des valeurs atomiques. Les valeurs atomiques peuvent être des entiers, des chaînes de caractères, des booléens, etc. : la liste complète des types est basée sur les types primitifs définis dans le schéma XML .

Les fonctionnalités de mise à jour des documents XML ou des bases de données, ainsi que la capacité de recherche en texte intégral , ne font pas partie du langage de base, mais sont définies dans les normes d'extension complémentaires : XQuery Update Facility 1.0 prend en charge la fonction de mise à jour et XQuery et XPath Full Text 1.0 prend en charge la recherche en texte intégral dans les documents XML.

XQuery 3.0 ajoute la prise en charge de la programmation fonctionnelle complète, dans la mesure où les fonctions sont des valeurs qui peuvent être manipulées (stockées dans des variables, passées à des fonctions d'ordre supérieur et appelées dynamiquement).

Exemples

L'exemple de code XQuery ci-dessous liste les différents locuteurs de chaque acte de la pièce Hamlet de Shakespeare, encodée dans le fichier hamlet.xml.

) // ACT let $ speakers := distinct-values ( $ act // SPEAKER ) return <div> <h1> { string ( $ act / TITRE ) } </h1> <ul> { for $ speaker in $ speakers return <li> { $ speaker } </li> } </ul> </div> } </body> </html>

Toutes les constructions XQuery permettant d'effectuer des calculs sont des expressions . Il n'y a pas d'instructions , même si certains mots-clés semblent suggérer un comportement similaire. Pour exécuter une fonction, l'expression contenue dans son corps est évaluée et sa valeur est renvoyée. Ainsi, pour écrire une fonction qui double une valeur d'entrée, il suffit d'écrire :

Ce style est courant dans les langages de programmation fonctionnelle .

Applications

Voici quelques exemples d'utilisation de XQuery :

  1. Extraction d'informations d'une base de données pour utilisation dans un service web.
  2. Générer des rapports de synthèse sur les données stockées dans une base de données XML.
  3. Recherche de documents textuels sur le Web pour trouver des informations pertinentes et compilation des résultats.
  4. Sélection et transformation de données XML en XHTML en vue de leur publication sur le Web.
  5. Extraction de données à partir de bases de données en vue de leur utilisation pour l'intégration de l'application.
  6. Diviser un document XML représentant plusieurs transactions en plusieurs documents XML.

Comparaison de XQuery et XSLT

XSLT , conçu expressément pour permettre la transformation de documents XML en HTML ou autres formats.

Les normes XSLT 2.0 et XQuery ont été développées par des groupes de travail distincts au sein du W3C , qui ont collaboré afin de garantir une approche commune lorsque cela était pertinent. Elles partagent le même modèle de données ( XDM ), le même système de types et la même bibliothèque de fonctions, et toutes deux incluent XPath 2.0 comme sous-langage.

Origine

Ces deux langages, cependant, s'inscrivent dans des traditions différentes et répondent aux besoins de communautés distinctes. XSLT a été conçu à l'origine comme un langage de feuilles de style dont le but premier était de rendre le XML accessible au lecteur humain, que ce soit à l'écran, sur le web (en tant que langage de modèles web ) ou sur papier. XQuery, quant à lui, a été conçu à l'origine comme un langage de requêtes de bases de données dans la lignée de SQL .

Étant donné que les deux langages proviennent de communautés différentes, XSLT est plus performant dans la gestion des documents narratifs à la structure plus flexible, tandis que XQuery est plus performant dans la gestion des données (par exemple, lors de l'exécution de jointures relationnelles).XSLT , notamment pour les utilisateurs ayant déjà une expérience des langages de bases de données tels que SQL . Ceci s'explique par la taille réduite de XQuery, un langage comportant moins de concepts à maîtriser, et par la concision accrue des programmes. De plus, XQuery est plus orthogonal : toute expression peut être utilisée dans n'importe quel contexte syntaxique. À l'inverse, XSLT est un système bilingue où les expressions XPath peuvent être imbriquées dans des instructions XSLT, mais l'inverse n'est pas possible.

XSLT est actuellement plus performant que XQuery pour les applications impliquant de petites modifications d'un document (par exemple, la suppression de tous les éléments NOTE). Ces applications sont généralement gérées en XSLT à l'aide d'un modèle de codage qui utilise un modèle d'identité copiant tous les nœuds sans modification, modifié par des modèles spécifiques qui modifient les nœuds sélectionnés. XQuery ne dispose pas d'équivalent à ce modèle de codage, mais les versions futures permettront de résoudre ces problèmes grâce aux fonctionnalités de mise à jour actuellement en développement.

XQuery 1.0 ne disposait d'aucun mécanisme de liaison dynamique ni de polymorphisme ; ce manque a été comblé par l'introduction des fonctions comme valeurs de première classe dans XQuery 3.0. L'absence de cette fonctionnalité se fait sentir lors du développement d'applications de grande envergure ou de code réutilisable dans différents environnements. XSLT propose deux mécanismes complémentaires : la correspondance dynamique des règles de modèles et la possibilité de les surcharger , permettant ainsi de créer des applications à plusieurs niveaux de personnalisation.XML le rend plus verbeux que XQuery 1.0. Cependant, de nombreuses applications importantes tirent parti de cette caractéristique en utilisant XSLT pour lire, écrire ou modifier dynamiquement des feuilles de style dans le cadre d'un pipeline de traitement. L'utilisation de la syntaxe XML permet également d'utiliser des outils XML pour gérer le code XSLT. En revanche, la syntaxe XQuery est plus adaptée à l'intégration dans des langages de programmation traditionnels tels que Java (voir l'API XQuery pour Java ) ou C# . Si nécessaire, le code XQuery peut également être exprimé dans une syntaxe XML appelée XQueryX. La représentation XQueryX du code XQuery est assez verbeuse et peu pratique pour les humains, mais peut être facilement traitée avec des outils XML, par exemple transformée avec des feuilles de style XSLT.

Versions et extensions

Versions

extensions W3C

Le World Wide Web Consortium (W3C) a développé deux extensions majeures à XQuery :

  • XQuery 1.0 et XPath 2.0 Full-Text, qui étend XQuery avec des fonctionnalités de recherche en texte intégral
  • Fonctionnalité de mise à jour XQuery , qui permet la modification des données dans XQuery

Ces deux recommandations sont devenues des extensions de XQuery 1.0 du W3C. Les efforts pour les adapter à XQuery 3.0 ont été abandonnés faute de ressources.

Une extension de script (procédurale) pour XQuery a été proposée mais jamais achevée.

Le groupe communautaire EXPath développe des extensions pour XQuery et les normes associées ( XPath , XSLT , XProc et XForms ). Les extensions suivantes sont disponibles :

  • Système d'emballage , pour la gestion des bibliothèques et modules XQuery.
  • Module de fichiers , pour les opérations sur le système de fichiers.
  • Module binaire , pour la gestion des données binaires.
  • Applications Web , pour la création d'applications Web

Extensions tierces

JSONiq est une extension de XQuery qui permet d'extraire et de transformer des données à partir de documents JSON . JSONiq est un sur-ensemble de XQuery 3.0. Il est publié sous licence Creative Commons Attribution-ShareAlike 3.0 .

XQuery 3.1 rend de facto obsolète JSONiq puisqu'il prend désormais entièrement en charge JSON.

Le projet EXQuery développe des normes pour la création d'applications XQuery portables. Les normes suivantes sont actuellement disponibles :

  • RESTXQ

Pour en savoir plus

  • Interroger le XML : XQuery, XPath et SQL/XML en contexte. Jim Melton et Stephen Buxton. Morgan Kaufmann, 2006. ISBN1-55860-711-0.
  • ISBN978-0-596-00634-1.
  • ISBN978-1-4919-1510-3.
  • XQuery : le langage de requête XML. Michael Brundage. Addison-Wesley Professional, 2004. ISBN0-321-16581-0.
  • XQuery par les experts : Guide du langage de requête XML du W3C. Howard Katz (éd.). Addison-Wesley, 2004. ISBN0-321-18060-7.
  • Introduction à l' expression FLWOR de XQuery . Dr. Michael Kay (Comité XQuery du W3C), 2005.

Mises en œuvre

Aperçu des implémentations XQuery populaires
NomLicenceLangueXQuery 3.1XQuery 3.0XQuery 1.0Mise à jour XQuery 1.0Texte intégral XQuery 1.0
BaseXLicence BSDJavaexisterLGPLJavaMarkLogicPropriétaireC++Saxon HELicence publique MozillaJavaSaxon EEPropriétaireJavaGPLv3+Free PascalZorbaLicence ApacheC++

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index