Découverte de XGQL
Par
Rémi Masson
Cet article vise a démontrer la facilité d'utilisation de XGQL pour intégrer des données provenant de sources hétérogènes.
I. Qu'est-ce que XGQL ? II. Etude de cas II-A. Contexte II-B. Approche SQL/JAVA/XSLT II-C. Réalisation XGQL III. Conclusion Remerciements I. Qu'est-ce que XGQL ?
XGQL (XML Generator Query Language) est un langage procédural qui permet selon un formalisme XML de
générer/transformer des flux provenant de Web Services, de sources de données XML ou de bases de données relationnelles.
Il allie ainsi le meilleur des mondes XML et relationnel en utilisant toutes les fonctionnalités de XPath, de XQuery et du SQL.
Pour bien comprendre toutes les possibilités du XGQL, nous allons réaliser une étude de cas assez simple permettant de comparer deux approches :
II. Etude de casII-A. Contexte
La société Annu-Artisan gère un annuaire de sites d'artisans et une liste de leurs produits classés par thèmes.
La société Annu-Artisan souhaite proposer un ensemble de sites marchands à thèmes regroupants la
production des artisans déjà inscrits dans son annuaire. Comme elle a la capacité de lire et de traiter des flux XML extérieurs,
chaque artisan inscrit devra fournir une description de ses produits via un flux XML.
Pour simplifier la gestion, les données concernant chaque produit (ID et thème du produit) restent stockées dans l'annuaire de Annu-Artisan,
dans la table ANNU_PRODUCT ; le champ URL contient l'URL à appeler pour récupérer le flux XML de la description du produit.
Toutes ces données doivent ensuite être normalisées, afin de générer les différentes interfaces des multiples sites. Figure 1 - Présentation du traitement des flux attendus II-B. Approche SQL/JAVA/XSLT
Un procédé assez simple serait de réaliser quelques servlets agrégatrices des différentes sources de donnés (base de données et web-service).
![]() Figure 2 - Traitement des flux avec SQL/Java/XSLT
Le traitement se fait en 4 étapes :
Etape 1 - connexion à la base
Connection à la base et récupération des informations en fonction d'un thème précis, avec une requête du type :
MAQUERY = "SELECT URL FROM ANNU_PRODUCT WHERE IDTHEME=1", le champ URL représentant les différentes adresses des flux XML à récupérer, pour établir une cohérence des données.
Etape 2 - Récupération des informations Récupération des informations du flux XML en fonction des données intégrées dans la base
Etape 3 - Génération du XML L’aggrégation peut se faire avec un simple objet StringBuffer.
Etape 4 - Normalisation du XML par un traitement XSLT Cette feuille XSLT aura pour seul but de supprimer les informations superflues dans le flux XML
en fonction des demandes. Par exemple, pour une page de présentation rapide des produits, on voudra
uniquement les champs 'libéllés' et 'description courte'. II-C. Réalisation XGQLEn utilisant l’API XGQL, il est possible de générer en quelques lignes de script le XML
normalisé souhaité. Figure 3 - Traitement des flux avec XGQL
Il est possible faire le traitement très rapidement de la façon suivante :
Ce script génère le résultat suivant :
Sur cet exemple de script XGQL, trois instructions sont particulièrement importantes (et bien pratiques aussi !) :
Exécution d’une requête SQL sur la base, et itération sur les différentes résultats de la requête.
Lecture des données sur un disque local, sur un ftp ou par http (Il s’agit d’une extension du langage présente depuis la version 1.5).
Interprétation d’une expression Xpath ou XQuery sur une variable XML.
III. Conclusion
Au travers de cette étude de cas, on voit les avantages XGQL :
XGQL dispose de plusieurs extensions et est intégré à plusieurs distributions :
Pour en savoir plus sur XGQL et ses extensions, consultez le site XGQL.
RemerciementsJe tiens à remercier toute l'équipe responsable de la rubrique XML, et tout particulièrement GrandFather,
et également Pierre Martins, pour son aide.
Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
|
Copyright © 2000-2012 - www.developpez.com