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:tp:bd:xquery:2012 [2012/09/30 17:56]
ecoquery
enseignement:tp:bd:xquery:2012 [2013/09/16 07:34] (Version actuelle)
ecoquery
Ligne 1: Ligne 1:
 ====== TP XQuery ====== ====== TP XQuery ======
  
-===== Modalités de rendu =====+===== Environnement de travail =====
  
-  * [[http://spiralconnect.univ-lyon1.fr/spiral/spiral.html#/activities/goto_folder/1784208|Page de dépôt sur Spiral]] pour rendre le TP.+Le TP se déroulera dans un petit atelier XQuery. Pour le lancer, cliquer sur le lien suivant: [[http://liris.cnrs.fr/~ecoquery/files/atelier-xquery.jar|Interface XSLT/XQuery]]. Le cas échéant lancer le fichier la commande<code shell>java -jar atelier-xquery.jar</code>
  
-Ce TP est à réaliser seul ou en binôme (trinômes interdits). On téléchargera le fichier de réponses reponses-tp-xquery.txt. On complétera le fichier et on le renommera en ''Groupe_Nom1_Prenom1_Nom2_Prenom2_reponses-tp-xquery.txt''. Groupe est le numéro groupe de TD de M1, Nom1_Prenom1 est le nom et le prénom du premier membre du binôme, Nom2_Prenom2 est le nom et le prénom du second membre du binôme((le cas échéant)). +Cet atelier contient un ensemble de documents xml qui peuvent être chargés en double-cliquant dans le petit cadre de gauche.
-On déposera ce fichier [[http://spiralconnect.univ-lyon1.fr/spiral/spiral.html#/activities/goto_folder/1784208|sur Spiral]] le dimanche 7 octobre 2012 au plus tard.+
  
-===== Environnement de travail =====+Le cours sur XQuery n'ayant pas eu lieu dans son intégralité, il est demandé de commencer par lire ce [[:enseignement:bdav:xquery#xquery|petit résumé]]. 
  
-Le TP se déroulera dans un petit atelier XQuery. Pour le lancer, cliquer sur le lien suivant: [[http://liris.cnrs.fr/~ecoquery/files/atelier-xquery.jar|Interface XSLT/XQuery]]. Le cas échéant lancer le fichier la commande<code shell>java -jar atelier-xquery.jar</code>.+Voici quelques liens complémentaires sur XPath et XQuery: 
 +  * La [[http://www.w3.org/TR/xpath20/|définition de XPath]] par le W3C. 
 +  * La [[http://www.w3.org/TR/xquery/|définition de XQuery]] par le W3C. 
 +  * Les [[http://www.w3.org/TR/xpath-functions/|fonctions standard de XQuery/XPath]]. 
 +  * La [[http://www.w3.org/TR/html4/|spécification du html]], qui peut être utile pour certaines questions.
  
-Cet atelier contient un ensemble de documents xml qui peuvent être chargés en double-cliquant dans le petit cadre de gauche.+===== Questions ===== 
 + 
 +Avant de répondre, consulter la DTD pour la réponse attendue, donnée [[#DTDs|après la liste de questions]]. 
 +  - Donner la liste des titres de tomes dont le numéro est inférieur ou égal à 3 (Document: Collection). 
 +  - Donner la liste des titres des tomes de la série "Lanfeust de Troy" (Document: Collection). 
 +  - Donner la liste des titres de livres (Document: Ventes livres). Attention à la balise ''title'' qui devient ''titre''
 +  Donner la liste des personnages (SPEAKER) de la pièce Hamlet (Document Hamlet). Attention à la DTD. On utilisera la fonction ''distinct-values(expr)'' pour éviter les doublons. 
 +  - Donner la liste des personnages de la pièce Hamlet qui parlent dans l'acte I (ACT I) (Document Hamlet). 
 +  - Donner, pour chaque personnage, le nombre de lignes dites par ce personnage dans la pièce (Document Hamlet). 
 +  - Donner la liste des personnages dont la description via les éléments PERSONA est différente de la dénomination via SPEAKER (Document Hamlet). 
 +  - Ecrire une fonction prenant un film du document et renvoyant sa représentation via un élément ''film'' conforme à la 3<sup>eme</sup> DTD ci-dessous. Utiliser cette fonction pour transformer le premier film du document Films. 
 +  - Utiliser la fonction précédente pour afficher une liste de films dans un élément ''films''. Cette liste contiendra tous les films dont un des réalisateur a joué comme acteur (Document Films). 
 +  - Faire une présentation HTML du document Films. On triera les films par année, puis par titre. Le code suivant donne le résultat attendu si on se restreint aux films //Wall-E// et //Gran Torino//:<code xml><?xml version="1.0" encoding="UTF-8"?> 
 +<html> 
 +   <head> 
 +      <title>Des films</title> 
 +   </head> 
 +   <body> 
 +      <h1>Gran Torino (2008)</h1> 
 +      <h2>Realisateur(s)</h2> 
 +      <ul> 
 +         <li>Clint Eastwood</li> 
 +      </ul> 
 +      <h2>Acteur(s)/Actrice(s)</h2> 
 +      <ul> 
 +         <li>Clint Eastwood</li> 
 +         <li>Bee Vang</li> 
 +         <li>Christopher Carley</li> 
 +      </ul> 
 +      <h1>Wall-E (2008)</h1> 
 +      <h2>Realisateur(s)</h2> 
 +      <ul> 
 +         <li>Andrew Stanton</li> 
 +      </ul> 
 +      <h2>Scenariste(s)</h2> 
 +      <ul> 
 +         <li>Andrew Stanton</li> 
 +      </ul> 
 +   </body> 
 +</html></code> 
 + 
 +==== DTDs ==== 
 + 
 +Questions 1, 2, 3: 
 +<code xml><!ELEMENT titres (titre*)> 
 +<!ELEMENT titre (#PCDATA)></code> 
 + 
 +Questions 4, 5, 6, 7:  
 +<code xml><!ELEMENT personnages (personnage*)> 
 +<!ELEMENT personnage (#PCDATA)> 
 +<!ATTLIST personnage nb_lignes CDATA #IMPLIED></code> 
 + 
 +Questions 8, 9: 
 +<code xml><!ELEMENT film (titre,annee?,realisateur*,scenariste*,acteur*)> 
 +<!ELEMENT titre (#PCDATA)> 
 +<!ELEMENT annee (#PCDATA)> 
 +<!ELEMENT realisateur (#PCDATA)> 
 +<!ELEMENT scenariste (#PCDATA)> 
 +<!ELEMENT acteur (#PCDATA)> 
 +<!ELEMENT films (film*)></code>