Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
enseignement:xml:introxquery [2013/11/05 00:47] Emmanuel Brunoenseignement:xml:introxquery [2023/09/20 18:52] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
-====== Introduction à XML/XQuery ====== +====== Intro. XML/XQuery (Ingemedia) ====== 
- +L'objectif de ce TD est de découvrir XQuery, il ne s'agit que d'une introduction mais à l'issue de ces quelques exercices l'interrogation avancées de documents XML (ou JSON) sera déjà possible. Des supports de cours se trouvent dans la partie Enseignement/Intranet après connexion avec vos identifiants de l'UTLN, ils ne sont pas nécessaire pour suivre ce TD.
-Les supports de cours se trouvent dans la partie Enseignement/Intranet après connexion avec vos identifiants de l'UTV.+
  
 ===== Etude pratique d'un document XML ===== ===== Etude pratique d'un document XML =====
-Pour cette partie pratique le document exemple du livre "XQuery pour interroger des données XML" sera utilisé : {{:enseignement:xml:queyras.xml|queryas.xml}}+Pour cette partie pratique le document exemple du livre "XQuery pour interroger des données XML" sera utilisé : {{:enseignement:xml:queyras.xml|queyras.xml}}
  
 <note>Regarder ce document, et décrire sa structure générale sous la forme d'un arbre. Cela facilitera ensuite l'interrogation</note> <note>Regarder ce document, et décrire sa structure générale sous la forme d'un arbre. Cela facilitera ensuite l'interrogation</note>
  
 ===== Première approche de XQuery ===== ===== Première approche de XQuery =====
-Pour cette première approche de XQuery, nous allons utiliser l'interprète zorba (http://www.zorba.io/). Pour pouvoir l'utiliser il faut :+<note> 
 +En TP, nous utiliserons eXist-db, une base de données XML https://exist.lsis.univ-tln.fr/exist/apps/eXide/index.html 
 + 
 +Un login et un password vous seront donnés en cours. Vous pouvez vous en servir pour éditer des documents et des requêtes. Il est aussi possible de les sauvegarder après vous être connecté.  
 +</note> 
 + 
 +/* 
 +Pour cette première approche de XQuery, nous allons utiliser l'interprète zorba (http://www.zorba.io/). Zorba supporte la dernière version de XQuery et peut même l'appliquer à du JSON. Il peut être utilisé depuis des langages comme Java ou PHP. 
 + 
 +Pour pouvoir l'utiliser il faut :
   * ouvrir un terminal, créer un répertoire de travail et se placer dedans. Par exemple, le répertoire XML à la racine de votre compte (''mkdir XML'' puis ''cd XML'').   * ouvrir un terminal, créer un répertoire de travail et se placer dedans. Par exemple, le répertoire XML à la racine de votre compte (''mkdir XML'' puis ''cd XML'').
-  * télécharger le document exemple {{:enseignement:xml:queyras.xml|queryas.xml}} dans le répertoire précédent.+  * télécharger le document exemple {{:enseignement:xml:queyras.xml|queyras.xml}} dans le répertoire précédent.
   * lancer un éditeur de texte (par exemple gedit) pour écrire les requêtes en les enregistrant dans des fichiers textes en précisant l'extension habituelle ''.xq''.   * lancer un éditeur de texte (par exemple gedit) pour écrire les requêtes en les enregistrant dans des fichiers textes en précisant l'extension habituelle ''.xq''.
-  * A partir du terminal lancer l'exécution de la requête (ici dans le fichier ''q1.xquery'')+  * A partir du terminal lancer l'exécution de la requête (ici dans le fichier ''q1.xq'')
  
     zorba -i -f -q q1.xq     zorba -i -f -q q1.xq
Ligne 20: Ligne 28:
 nom local ''q1.xq'' est le paramètre de l’option ''-q''. L’option ''-i'' indique que le résultat nom local ''q1.xq'' est le paramètre de l’option ''-q''. L’option ''-i'' indique que le résultat
 doit être indenté. doit être indenté.
- +*/ 
 ==== Les expressions simples ==== ==== Les expressions simples ====
 Les expressions XQuery les plus simples des valeurs littérales : Les expressions XQuery les plus simples des valeurs littérales :
Ligne 29: Ligne 37:
 Il est aussi possible d'évaluer des expressions arithmétiques avec les opérateurs classique (à part le ''/'' pour la division qui est remplacé par ''div'').    Il est aussi possible d'évaluer des expressions arithmétiques avec les opérateurs classique (à part le ''/'' pour la division qui est remplacé par ''div'').   
  
-<Note>Ecrivez quelques requêtes simples utilisant des littéraux et des expressions arithmétiques</Note>+<note>Ecrivez quelques requêtes simples utilisant des littéraux et des expressions arithmétiques</note>
  
 Un document XML est aussi une expression qui a comme valeur ce document. Il est possible d'indiquer qu'une fragment de document est une expression XQuery en la mettant entre { et } Un document XML est aussi une expression qui a comme valeur ce document. Il est possible d'indiquer qu'une fragment de document est une expression XQuery en la mettant entre { et }
-  * "<a>1<b>2</b></a>" +  * ''<a>1<b>2</b></a>'' 
-  * "<a x='{1+2}'>{3*4}</a>"+  * ''<a x='{1+2}'>{3*4}</a>''
  
-<Note>Ecrivez une requête qui fabrique un document XML simple</Note>+<note>Ecrivez une requête qui fabrique un document XML simple</note>
  
 ==== Séquences ==== ==== Séquences ====
-XQuery ne manipule que des séquences plate (une liste ordonnée) d'items (des littéraux ou des noeuds XML). L'évaluation d'une requête retourne une séquence. Il est possible de créer des séquences avec les opérateurs ''()'' et '',''+XQuery ne manipule que des séquences plate (une liste ordonnée) d'items (des littéraux ou des noeuds XML). L'évaluation d'une requête retourne une séquence. Il est possible de créer des séquences avec les opérateurs ''()'' et '',''http://lsis.univ-tln.fr/~bruno/enseignement/xml/xml
  
 Quelques exemples : ''()'' ''(1,2,"a",<a><b/></a>)''  Quelques exemples : ''()'' ''(1,2,"a",<a><b/></a>)'' 
Ligne 74: Ligne 82:
  
 Quelques exemples : Quelques exemples :
-  * ''fn:doc("queyras.xml")/descendant::secteur'' +  * ''fn:doc("http://bruno.lsis.univ-tln.fr/_media/enseignement/xml/queyras.xml")/descendant::secteur'' 
-  * ''fn:doc("queyras.xml")/descendant::itinéraire'' +  * ''fn:doc("http://bruno.lsis.univ-tln.fr/_media/enseignement/xml/queyras.xml")/descendant::itinéraire'' 
-  * ''fn:doc("queyras.xml")/descendant::itinéraire/nom/text()'' +  * ''fn:doc("http://bruno.lsis.univ-tln.fr/_media/enseignement/xml/queyras.xml")/descendant::itinéraire/nom/text()'' 
-  * ''fn:doc("queyras.xml")/child::guide/child::secteur/child::nom'' +  * ''fn:doc("http://bruno.lsis.univ-tln.fr/_media/enseignement/xml/queyras.xml")/child::guide/child::secteur/child::nom'' 
-  * ''fn:doc("queyras.xml")/guide/secteur/nom''+   
 +Il est aussi possible de copier le document XML exemple dans exist et d'utiliser un chemin local/ 
 +  * ''fn:doc("/db/ingemedia/queyras.xml")/guide/secteur/nom'' 
      
 <Note>Tester les exemples précédents. Trouver (i) tous les paragraphes et (ii) toutes les altitudes. Mettez ces résultats dans un élément XML ''Résultat'' </Note>   <Note>Tester les exemples précédents. Trouver (i) tous les paragraphes et (ii) toutes les altitudes. Mettez ces résultats dans un élément XML ''Résultat'' </Note>  
Ligne 167: Ligne 178:
   * Une liste d'éléments XML qui présente pour chaque secteur la moyenne des altitudes des itinéraires   * Une liste d'éléments XML qui présente pour chaque secteur la moyenne des altitudes des itinéraires
    
-==== Pour aller plus ====+==== Pour aller plus loin ====
   * La production de document XHTML est immédiate : proposez une présentation XHTML du résultat de l'une des requêtes (en réalité, il possible d'associer du CSS directement à un document XML).   * La production de document XHTML est immédiate : proposez une présentation XHTML du résultat de l'une des requêtes (en réalité, il possible d'associer du CSS directement à un document XML).
   * Il est aussi possible de produire de nombre autre formats par simple transformation : des images vectorielles (SVG), des documents bureautique (opendocument), ...     * Il est aussi possible de produire de nombre autre formats par simple transformation : des images vectorielles (SVG), des documents bureautique (opendocument), ...  
 +
 +==== Pour préparer le dernier TD ====
 +Ce travail est à rendre par groupes de 3 maximum le 28/11/2014.
 +
 +  * Trouver une source de documents XML (http://data.nantes.fr ou https://www.data.gouv.fr) pertinente. 
 +  * Présenter son intérêt dans le cadre de la réutilisation de données et donner une idée d'application
 +  * Ecrire des requêtes XQuery pour réaliser la réutilisation :
 +    * Extraire des données
 +    * Reconstruire de nouvelles données
 +  * En option vous pouvez construire des données dans un format standard :
 +    * produire un document XHTML (par exemple un tableau de présentation des données)
 +    * produire une image SVG (Un histogramme, ....)
 +
 +~~DISCUSSION~~
 +
 +---- dataentry page ----
 +type                 : Enseignement
 +level                : main
 +enseignement_tags    : Ingemedia
 +promotion            : Infocom
 +technologies_tags    : XMLM,XQuery,Zorba
 +----
 +
 +
 ---- struct data ---- ---- struct data ----
 +metadata.level       : 
 +metadata.Type        : 
 +metadata.Nom         : 
 +metadata.Enseignements : 
 +metadata.Promotions 
 +metadata.Technologies : 
 +metadata.Thèmes     : 
 +metadata.Description : 
 ---- ----