Ceci est une ancienne révision du document !


—- datatemplateentry enseignement —- type : Enseignement template : enseignement:tpl_enseignement intitule : BD & XML enseignement_tags : D21 promotion : M1 technologie_tags : SaX,StaX,DOM,JPA,Maven,Java,XML,XQuery,XSLT,JAXB theme_tags : POO, Persistence, Documents description : L’objectif de cette UE est l’étude des principaux langages permettant de décrire et de manipuler des documents XML : XML lui-même, XML Schema, Xlink, Xpath, XSLT et XQuery ainsi que leur mise en oeuvre dans des environnements informatiques permettant le déploiement d’applications web.


—- datatable —- cols : %title%, Themes, technologies header : Titre, Thèmes, Techno. sort : %title% filter : type=TP filter : enseignement=D21


—- datatable —- cols : %title%,SHORTDESCRIPTION header : Titre, Description filter : type=exemple filter : enseignement=D21


—- datatable —- cols : %title%,SHORTDESCRIPTION header : Titre, Description filter : type=quickstart filter : enseignement=D21


  • examen de TP (* Attention cette année il y aura aussi SaX *).

~~DISCUSSION~~

<html> <p>L’objectif de cet examen est de mettre en place une application de gestion de commentaires sur les équipements culturels de la ville de nantes.</p> <p>La ville de nantes donne accès à de nombreuses données ouvertes en ligne par exemple <a href=“http://data.nantes.fr/donnees/detail/localisation-des-equipements-publics-relevant-du-theme-culture-de-nantes-metropole-1/” title=“http://data.nantes.fr/donnees/detail/localisation-des-equipements-publics-relevant-du-theme-culture-de-nantes-metropole-1/” target=“_blank”>http://data.nantes.fr/donnees/detail/localisation-des-equipements-publics-relevant-du-theme-culture-de-nantes-metropole-1/</a></p> <ol> <li>Etudier le contenu des données XML fournies. Ecrire un parser SaX CompteurMediatheque qui permet de compter le nombre de médiathèques dont le code postal est passé en paramètre. Tester dans le main avec le code postal 44000.</li> <li>Ecrire une classe Java EquipementCulturel qui permet de représenter un équipement culturel et en faire une entité JPA.</li> <li>Ecrire une classe EquipementCulturelManager ayant les méthodes nécessaire pour ajouter un EquipementCulturel, en trouver un par son identifiant, et par différents critères que vous jugerez pertinents (lieu, type, distance par rapport à des coordonées, …). Ajouter une méthode méthodes main qui teste ces différentes méthodes. Vous utiliserez la base de données de votre choix. </li> <li>On souhaite permettre à des utilisateurs de donner et de modifier une note (un entier entre 0 et 5) un commentaire (du texte) pour un équipement. Ecrire les entités Utilisateur et Commentaire. Ajouter les méthodes nécessaire à EquipementCulturelManager pour créer/supprimer un Utilisateur et ajouter/modifier des notes et obtenir les notes/commentaires d’un équipement et les notes/commentaires données par un utilisateur.</li> <li>On souhaite que les utilisateurs puissent gérer les listes des équipement qu’ils ont visité et qu’ils souhaitent visiter. Modifier votre code pour permettre d’ajouter les méthodes suivantes à EquipementCulturelManager : Avisite(utilisateur, equipement) et souhaiteVisiter(utilisateur, equipement). Tester ces méthodes dans le main. </li> <li>Ecrire le parser SaX qui permet de créer les entités EquipementCulturel à partir du fichier XML.</li> <li>En vous inspirant de l’exemple suivant qui présente l’utilisation de StaX pour produire du XML ajouter une méthode à EquipementCulturelManager pour obtenir la liste des utilisateurs, de leurs commentaires, des equipements qu’ils ont visité ou qu’ils souhaitent visiter en XML :<br /> <p>XMLOutputFactory output = XMLOutputFactory.newInstance();<br />XMLStreamWriter writer = output.createXMLStreamWriter( … );<br />writer.writeStartDocument();<br />writer.setPrefix(“c”,“http://c”);<br />writer.setDefaultNamespace(“http://c”);<br />writer.writeStartElement(“http://c”,“a”);<br />writer.writeAttribute(“b”,“blah”);<br />writer.writeNamespace(“c”,“http://c”);<br />writer.writeDefaultNamespace(“http://c”);<br />writer.setPrefix(“d”,“http://c”);<br />writer.writeEmptyElement(“http://c”,“d”);<br />writer.writeAttribute(“http://c”,“chris”,“fry”);<br />writer.writeNamespace(“d”,“http://c”);<br />writer.writeCharacters(“foo bar foo”);<br />writer.writeEndElement();<br />writer.flush();</p> </li> <li>En utilisant les annotations callback de JPA (http://docs.oracle.com/cd/E24329_01/apirefs.1211/e24396/ejb3_overview_pc_callbacks.html) modifier le code précédent pour qu’un fichier log soit généré pour chaque opération sur la base de données (insertion, suppression, …).</li> </ol> <p>Vous avez déjà fini ? Un défi : Mettre le document XML d’origine dans la base de données eXist et l’interroger directement depuis XQuery.</p> <p></p> <p></p> </html>