Master d Informatique Corrigé du partiel novembre 2011 Année 2011-12

Documents pareils
Master d Informatique Corrigé du partiel novembre 2010

Programmation des Applications Réparties. Parsers XML DOM et SAX

Corrigé des exercices sur les références

Synchro et Threads Java TM

Programme Compte bancaire (code)

Package Java.util Classe générique

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Programmation Objet Java Correction

Java Licence Professionnelle CISII,

Projet de programmation (IK3) : TP n 1 Correction

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

La base de données XML exist. A. Belaïd

Chapitre 10. Les interfaces Comparable et Comparator 1

TD3: tableaux avancées, première classe et chaînes

Programmer en JAVA. par Tama

Programmation par les Objets en Java

Programmation avec des objets : Cours 7. Menu du jour

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Un ordonnanceur stupide

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

XML et Java Vue Balisée en XML. Programmation avancée NFP 121. XML pourquoi faire? Structuration des données. Titre Auteur Section Paragraphe

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Notes de cours Practical BigData

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Une introduction à Java

Serveur d'archivage 2007 Installation et utilisation de la BD exist

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TD2 Programmation concurrentielle

MapReduce et Hadoop. Alexandre Denis Inria Bordeaux Sud-Ouest France ENSEIRB PG306

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Premiers Pas en Programmation Objet : les Classes et les Objets

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

Remote Method Invocation (RMI)

Threads. Threads. USTL routier 1

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Tp 1 correction. Structures de données (IF2)

Java 1.5 : principales nouveautés

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

BASE DE DONNÉES XML NATIVE

OpenPaaS Le réseau social d'entreprise

Flux de données Lecture/Ecriture Fichiers

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

7 Développement d une application de MapReduce

Cours 1: Java et les objets

Plan du cours. Historique du langage Nouveautés de Java 7

Auto-évaluation Programmation en Java

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Programmation Par Objets

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

RMI le langage Java XII-1 JMF

Design patterns. Design patterns - définition. Design patterns - avantages

Interfaces graphiques avec l API Swing

Utilisation d objets : String et ArrayList

TP1 : Initiation à Java et Eclipse

Exercices sur les interfaces

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Langage Java. Classe de première SI

Classe Interne, Anonyme & Enumération

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Introduction : les processus. Introduction : les threads. Plan

PROGRAMMATION PAR OBJETS

Introduction au langage Java

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

as Architecture des Systèmes d Information

INF 321 : mémento de la syntaxe de Java

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

TP, première séquence d exercices.

COMPARAISONDESLANGAGESC, C++, JAVA ET

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Les architectures 3-tiers Partie I : les applications WEB

Objets et Programmation. origine des langages orientés-objet

Paris Airports - Web API Airports Path finding

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Architecture Orientée Service, JSON et API REST

TP Programmation Java / JDBC / Oracle

Java DataBaseConnectivity

Java Licence Professionnelle CISII,

Gestion distribuée (par sockets) de banque en Java

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

Programmation Orientée Objet application au langage Java Version Novembre 2007

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Par Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.

Initiation à JAVA et à la programmation objet.

LOG4430 : Architecture logicielle et conception avancée

Développement Web - Object Relational Mapping and Hibernate

TD/TP PAC - Programmation n 3

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication

Développement Logiciel

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Transcription:

Universités d Aix-Marseille I & II Technologies XML Master d Informatique Corrigé du partiel novembre 2011 Année 2011-12 Exercice 1 : Documents XML et Applications XML (3 points) 1. Un document XML correspondant aux informations données est : <?xml version="1.0" encoding="utf-8"?> <rss nom="l Equipe.fr Actu Sport" date="mercredi 02 Novembre 2011 à 15h31"> <desc>suivez... sportifs.</desc> <item sport="tennis" cat="atp" lieu="bale" date="wed, 02 Nov 2011 15:29:00"> <titre>murray forfait!</titre> <desc>alors qu il avait... forfait...</desc> <item sport="moto" cat="moto-gp" lieu="valence" date="wed, 02 Nov 2011 15:18:00"> <titre>la dernière de Capirossi</titre> <desc>après 22 ans... dimanche...</desc> <item sport="foot" cat="euro" lieu="cro" date="wed, 02 Nov 2011 15:12:00"> <titre>lovren convoqué</titre> <desc>la Croatie... a fait appel...</desc> <item sport="voile" cat="vabre" date="wed, 02 Nov 2011 15:00:00"> <titre>c est parti!</titre> <desc>le départ... le départ...</desc> </rss> 2. Une DTD correspondant à ce document XML est : <!ELEMENT rss (desc, item*) > <!ATTLIST rss nom CDATA #REQUIRED date CDATA #REQUIRED > <!ELEMENT item (titre,desc) > <!ATTLIST item cat CDATA #REQUIRED lieu CDATA #IMPLIED sport CDATA #REQUIRED date CDATA #REQUIRED > <!ELEMENT titre (#PCDATA) > <!ELEMENT desc (#PCDATA) > 1

Exercice 2 : Requêtes XPath (4 points) 1. //programme[@channel= C1.telerama.fr ] 2. //channel[display-name= TF1 ]/@id 3. //programme[category= série humoristique and@channel= C1.telerama.fr ]/credits/actor 4. //programme[@start<20111104120000 and @stop>20111104120000] 5. //programme[following-sibling : :programme/title= Meteo ] 6. //programme[@channel=preceding : :channel[display-name= TF1 ]/@id] Exercice 3 : Transformations XSLT (6 points) 1. La feuille de style suivante permet un affichage XHTML des programmes : <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <head><title>présentation des programmes</title></head> <body> <ul> <xsl:for-each select="tv/programme"> <li> Titre : <xsl:value-of select="title"/><br/> Canal de diffusion : <xsl:value-of select="@channel"/><br/> Description : <xsl:value-of select="desc"/><br/> Durée : <xsl:value-of select="length"/> <xsl:value-of select="length/@units"/> <br/> </li> </xsl:for-each> </ul> </body> </html> </xsl:template> </xsl:stylesheet> 2. On veut remplacer le code Canal de diffusion : <xsl:value-of select="@channel"/><br/> de sorte à afficher le nom de la chaîne et pas son identifiant. Plusieurs solutions peuvent être envisagées, nous en présentons une. Ceci consiste à utiliser une requête XPath avec l axe preceding commeonl afaitdanslaquestion5del exercice2.onobtientlenouveau code suivant : 2

Cha^ıne de diffusion : <xsl:variable name="identifiant" select="@channel"/> <xsl:value-of select="preceding::channel[@id=$identifiant]/display-name"/> <br/> 3. On ajoute la template suivante : <xsl:template name="translate"> <xsl:param name="date"/> <xsl:value-of select="substring($date,7,2)"/> <xsl:choose> <xsl:when test="substring($date,5,2)= 01 "> <xsl:value-of select=" Janvier "/> <xsl:when test="substring($date,5,2)= 02 "> <xsl:value-of select=" Février "/> <xsl:when test="substring($date,5,2)= 03 "> <xsl:value-of select=" Mars "/> <xsl:when test="substring($date,5,2)= 04 "> <xsl:value-of select=" Avril "/> </xsl:choose> <xsl:value-of select="substring($date,1,4)"/> <xsl:text> à </xsl:text> <xsl:value-of select="substring($date,9,2)"/> <xsl:text>h</xsl:text> <xsl:value-of select="substring($date,11,2)"/> <xsl:text>m</xsl:text> <xsl:value-of select="substring($date,13,2)"/> </xsl:template> Pou utiliser cette template, on modifie le programme xsl précédent en remplaçant <xsl:value-of select="@start"/> par : <xsl:call-template name="translate"> <xsl:with-param name="date" select="@start"/> </xsl:call-template> On fait de même avec @stop. Exercice 4 : API SAX (4 points) 3

1. Une solution possible est la classe suivante. Notez que les import sont les mêmes que ceux utilisés pour la classe vue en cours, tout comme la fonction converttofileurl et la classe MyErrorHandler. public class SaxParserHTML extends DefaultHandler { private static String urltoparse; // Utilises pour stocker la valeur des attributs private String canal = new String(); // Utilise pour savoir s il faut ou non recopier le texte // sur la sortie standard (voir title) private int output; public SaxParserHTML () { super(); this.output=0; static public void main(string[] args) { [comme SimpleSaxParser] // debut du document public void startdocument() throws SAXException { System.out.println( "<html> <head> <title>programme TV</title> </head> <body> Liste des programmes : <ul>"); // debut de l element public void startelement(string namespaceuri, String localname, // local name String rawname, // qualified name Attributes atts) 4

{ throws SAXException // recuperation du nom de l element String eltname = localname; if ("".equals(eltname)) eltname = rawname; // namespaceaware = false // Traitement des elements programme // Nouvel element programme! On ecrit le debut, et on // stocke les attributs if ("programme".equals(eltname)) { System.out.println("<li>"); for (int i=0; i <atts.getlength(); i++) { // recuperation du nom de l attribut et de // sa valeur String attname = atts.getqname(i); if ("".equals(attname)) attname = atts.getqname(i); // on enregistre la valeur du canal if ("canal".equals(attname)) canal = atts.getvalue(i); // Traitement des elements title if ("title".equals(eltname)) { System.out.print("Titre : "); // Activation de la recopie du texte output = 1; // Pour les noeuds textes public void characters (char[] ch, int start, int length) { if (output) { String text = new String (ch, start, length); System.out.print(text); // fin d element public void endelement(java.lang.string uri, java.lang.string localname, java.lang.string rawname) throws SAXException { // Recuperation du nom de l element 5

String eltname = localname; if ("".equals(eltname)) eltname = rawname; // Traitement des elements programme // L element title a ete traite, on peut afficher les attributs if ("programme".equals(eltname)) { System.out.println("Canal de diffusion : ",canal," <br/>"); System.out.println("</li>"); // Traitement des elements title if ("title".equals(eltname)) { // Desactivation de la recopie du texte output = 0; // fin du document public void enddocument() throws SAXException { System.out.println("</ul> </body> </html>"); [... comme SimpleSaxParser... ] 2. Pour ce traitement, on ajoute deux champs à la classe. Le premier, nommé date, et de type String, permet de stocker la valeur de ce second argument. Le second est un booléen nommé select, initialisé à faux, qui indique si l élément programme en cours de traitement est ou non sélectionné. Dans la procédure startelement, dans le cas correspondant au traitement d un élément programme, on compare la valeur des attributs start et stop au champ date, pour déterminer si le programme doit ou non être sélectionné. On met à jour la valeur du booléen select en fonction. Si le programme est sélectionné, on le traite comme précédemment, sinon on ne fait rien. Dans cette même procédure, pour le traitement des éléments title, si le booléen select est faux, on ne fait rien, sinon on fait comme avant. De la même façon, dans la procédure endelement, si le booléen select est faux, on ne fait rien, sinon on fait comme avant. Dans tous les cas, on finit cette procédure en mettant ce booléen à la valeur faux. 3. Cette opération est possible, bien que l expression XPath associée utilise un axe ascendant. Pour cela, on ajoute à la classe un champ contenant une table d association (identifiant, nom de chaîne). Cette table est construite lors du parcours des premiers éléments channel du document, et utilisée lors du traitement des éléments programmes. 6