INF 6450 GESTION DE L'INFORMATION AVEC XML Télé-université, Université du Québec à Montréal CORRIGÉ DES QUESTIONS PRÉPARATOIRES À L'EXAMEN



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

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

Master d Informatique Corrigé du partiel novembre 2010

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

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

Production de documents avec XSLT. Production de documents p.1/??

<?xml version="1.0" encoding="iso " standalone="yes"?>

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

BASE DE DONNÉES XML NATIVE

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

< _155_0>

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

34. DOM (Document Object Model)

Programmation Web. Madalina Croitoru IUT Montpellier

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Formation HTML / CSS. ar dionoea

Document Object Model (DOM)

Corrigé des exercices sur les références

Devenez un véritable développeur web en 3 mois!

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

L'API DOM : Document Object Model

DOM - Document Object Model

RMI le langage Java XII-1 JMF

XML et Bases de données. Les bases de données XML natives.

Documentation CAS à destination des éditeurs

HTML, CSS, JS et CGI. Elanore Elessar Dimar

Architecture Orientée Service, JSON et API REST

Aspects techniques : guide d interfaçage SSO

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Le stockage local de données en HTML5

Un ordonnanceur stupide

Tutoriel d installation de Hibernate avec Eclipse

Master Technologies numériques appliquées à l'histoire Deuxième année

Gestion documentaire (Extraits du CCI version 1.2)

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème

BD et XML : Exercices

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

.. CSS. Damien Nouvel. Damien Nouvel (Inalco) CSS 1 / 15

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

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

SQL Parser XML Xquery : Approche de détection des injections SQL

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

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

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

Remote Method Invocation (RMI)

Programmer en JAVA. par Tama

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Notes de cours Practical BigData

Tutoriel : Feuille de style externe

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

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

Java Licence Professionnelle CISII,

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

LES TECHNOLOGIES DU WEB APPLIQUÉES AUX DONNÉES STRUCTURÉES

ACTIVITÉ DE PROGRAMMATION

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

Formation : WEbMaster

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

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

Programmation Objet Java Correction

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

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

Les structures de données. Rajae El Ouazzani

Programmation Internet Cours 4

Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Introduction à. Oracle Application Express

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Gestion Électronique de Documents et XML. Master 2 TSM

Le Modèle de Sécurité dans JAVA

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Travaux dirigés n 10

HTML. Notions générales

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

LEA.C5. Développement de sites Web transactionnels

4. SERVICES WEB REST 46

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Outils logiciels pour l'ingénierie documentaire

Utilisation d objets : String et ArrayList

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Design et implémentation d un logiciel de validation et de génération de configurations réseaux

Programmation en Java IUT GEII (MC-II1) 1

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Server-side XML. PAS FINI... mais ok pour un début. Originaux. Auteurs et version. Prérequis: Java de base, servlets, GUI et XML

Compte Rendu d intégration d application

XML : documents et outils

Initiation à html et à la création d'un site web

OpenPaaS Le réseau social d'entreprise

Projet de programmation (IK3) : TP n 1 Correction

Plateforme PAYZEN. Définition de Web-services

UE 8 Systèmes d information de gestion Le programme

Mise en œuvre des serveurs d application

Petite définition : Présentation :

Introduction au langage Java

PIVOT. Pivot/Querier Documentation technique XML/XSD/XSLT

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Premiers Pas en Programmation Objet : les Classes et les Objets

TP1. Outils Java Eléments de correction

Transcription:

INF 6450 GESTION DE L'INFORMATION AVEC XML Télé-université, Université du Québec à Montréal CORRIGÉ DES QUESTIONS PRÉPARATOIRES À L'EXAMEN Question 1. Écrivez un programme en Java qui utilise l API DOM et modifie un fichier XML de manière à ce que le préfixe «foo» soit ajouté aux noms de tous les éléments. Le fichier <element><a></a></element> deviendra donc <fooelement><fooa></fooa></fooelement>. Vous pouvez supposer que le document ne contient que des éléments, sans attributs, sans espaces de noms. import org.w3c.dom.*; import java.io.*; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; public class Question1 { /** * Cette méthode parcours récurssivement l'arbre DOM et ajoute * le préfixe à chauque élément noeud * @param node * @param i * @param prefix */ public static void traite(node node, int i, String prefix) { if (node.getnodetype()==node.element_node){ System.out.println("Nom: "+ node.getnodename()); Document doc = node.getownerdocument(); doc.renamenode(node, null, prefix+node.getnodename()); System.out.println("Nom après l'jout du prefix : "+ node.getnodename()); NodeList nl = node.getchildnodes(); if(nl!= null) { for (int k = 0; k < nl.getlength(); ++k) { traite(nl.item(k),i+2,prefix); public static void main(string[] args) throws Exception { if (args.length > 0 ){ String prefix="foo";

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = factory.newdocumentbuilder(); Document doc = parser.parse(args[0]); traite(doc,0,prefix); TransformerFactory tfact = TransformerFactory.newInstance(); Transformer transformer = tfact.newtransformer(); transformer.setoutputproperty("encoding", "ISO-8859-1"); DOMSource source = new DOMSource(doc); FileWriter fw = new FileWriter("foo.xml"); StreamResult result = new StreamResult(fw); transformer.transform(source, result); else{ System.out.println("Usage : java Question1 document.xml"); System.exit(0); Question 2. Utilisez XSLT pour faire la transformation. (Un indice: pensez à xsl:element.) <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:redirect="org.apache.xalan.xslt.extensions.redirect" extension-element-prefixes="redirect" version="1.0"> <xsl:output method="xml" version="1.0" indent="yes" encoding="iso-8859-1"/> <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="*"> <xsl:element name="{concat('foo',name(.))"> <xsl:apply-templates /> </xsl:element> </xsl:template> </xsl:stylesheet>

Question 3. Dessinez l arbre DOM du fichier XML suivant. <a xmlns="http://www.w3.org/1999/xhtml"><b type="x" /></a> Pour chaque élément et attribut, donnez son nom et son espace de noms. (Un indice : attention à l espace de noms de l attribut.) Question 4. Donnez une DTD équivalente au fichier Relax NG suivant. element p { (element c {text, element d{text*)? <!Element p(c, d*)? > <!Element c (#PCDATA) > <!Element d (#PCDATA) >

Question 5. Écrivez en RDF/XML les triplets suivants. sujet : http://www.com.com/jeanne prédicat : http://www.w3.org/1999/02/22-rdf-syntax-ns#type objet : http://www.com.com/maman sujet : http://www.com.com/maman prédicat : http://action.com/etre objet : http://www.com.com/femme sujet : http://www.com.com/enfant prédicat : http://action.com/avoir objet : http://www.com.com/maman <?xml version="1.0" encoding="iso-8859-1"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://action.com/" > <rdf:description rdf:about="http://www.com.com/jeanne"> <rdf:type rdf:resource="http://www.com.com/maman" /> </rdf:description> <rdf:description rdf:about="http://www.com.com/maman"> <etre rdf:resource="http://www.com.com/femme" /> </rdf:description> <rdf:description rdf:about="http://www.com.com/enfant"> <avoir rdf:resource="http://www.com.com/maman" /> </rdf:description> </rdf:rdf> Question 6. Définissez et expliquez les différences entre XPath, XLink, XQuery et XSLT. XPath est un langage W3C qui permet d extraire des données à partir d un document XML. Il est utilisé pour adresser les éléments dans un document XML à l aide des expressions de chemins. Le résultat d'une expression XPath peut être : un ensemble d éléments ou de nœuds, une chaîne de caractères, un nombre ou un booléen. XLink est une spécification du W3C (appelé parfois XLL pour XLink Language). Il permet de créer des liens entre des fichiers XML ou des fragments de fichiers XML (grâce à XPointer). Contrairement aux liens entre fichiers HTML, XLink permet de créer des liens liant plus de deux fichiers (liens plus sophistiqués). XQuery est un langage de W3C à la manière de SQL. Il sert à extraire des données à partir de bases de données XML. Il permet entre autres de joindre, d extraire et d interroger des documents XML. XSLT est un langage recommandé par W3C pour transformer des documents XML en d autres documents XML, HTML, etc. La différence principale entre ces langages réside dans leur rôle. XSLT est conçu comme une feuille de style qui transforme des documents XML afin qu ils soient compréhensibles sur un écran, le web, le papier, etc. XQuery, quant à lui, interroge et manipule une collection de documents XML comme SQL. XSLT et XQuery incluent XPath pour accéder aux composants des documents XML. XPath sert donc comme un support pour XSLT et XQuery. Finalement,

XLink ne permet ni d extraire ou de transformer des données XML, mais plutôt d insérer des liaisons entre ces données. Question 7. Que signifie l expression Xpath suivante? //table[@border="0" and @cellspacing="0"] //table[@border="1" and @cellspacing="1"] L union des éléments table dont la valeur de l attribut border est 0 et la valeur de l attribut cellspacing est 0 ou la valeur de l attribut border est 1 et la valeur de l attribut cellspacing est 1. Question 8. Que retourne l expression XPath suivante : //table[@border] Cette expression retourne les éléments table (descendants du nœud contexte) qui ont un attribut border. Question 9. Que retourne l expression XPath suivante : //table[@border]/@cellspacing Cette expression retourne les valeurs de l attribut cellspacing des éléments table (descendants du nœud contexte) qui ont un attribut border. Question 10. Que retourne l expression XPath suivante : //table[@border]/*/*[@style] Cette expression retourne les éléments qui ont un attribut style et qui sont à leur tour les fils des éléments table (descendants du nœud contexte) ayant un attribut border. Question 11. Que retourne l expression XPath suivante : //table[@border]/*/*[not(@style)] Cette expression retourne les éléments qui n ont pas un attribut style et qui sont, à leur tour, les fils des éléments table (descendants du nœud contexte) ayant un attribut border. Question 12. Écrivez un programme Java qui applique l expression XPath de la question précédente à un fichier chargé à partir du disque. import javax.xml.xpath.*; import javax.xml.parsers.*; import org.w3c.dom.*; public class Question12 { public static void main(string[] args) throws Exception { if (args.length > 0 ){ try{ DocumentBuilderFactory dbfact = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbfact.newdocumentbuilder();

Document document = builder.parse(args[0]); XPathFactory fact = XPathFactory.newInstance(); XPath xpath = fact.newxpath(); String results = xpath.evaluate("//table[@border]/*/*[not(@style)]", document); System.out.println(results); catch (Exception e){ e.printstacktrace(); else{ document.xml"); System.out.println("Usage : java Question12 System.exit(0); Exemple de document.xml <?xml version="1.0" encoding="iso-8859-1"?> <document> <table border="0"> <tr> <td style="color:red;">cet element ne doit pas etre retourne 1</td> <td>cet element doit etre retourne 1</td> <td>cet element doit etre retourne 2?</td> </tr> </table> <table> <tr> <td style="color:red;">cet element ne doit pas etre retourne 1</td> <td>cet element ne doit pas etre retourne 1</td> <td>cet element ne doit pas etre retourne 2?</td> </tr> </table> </document> L exécution de la commande java Question12 document.xml retourne cet element doit etre retourne 1 Question 13. Expliquez ce que fera le fichier XSLT suivant. <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" > <xsl:template match="/"> - <xsl:for-each select="@type" > <li> <xsl:value-of select="." /> </li><xsl:text> </xsl:text> </xsl:for-each>

</xsl:template> </xsl:stylesheet> Le fichier XSLT met les valeurs de l attribut type entre <li> et </li> Question 14. Écrivez une expression XPath qui compte le nombre d'éléments ayant été déclarés comme contenant du texte en langue française. Count(//*[xml:lang= fr ]) (je n ai pas encore vérifier ma réponse) Question 15. Nommez au moins trois modèles de programmation XML utilisés en Java. Voici quatre modèles avec leur notice explicative (Il suffit d en citer trois). Traitement du XML comme du texte Un fichier XML est traité comme un fichier texte. Les expressions régulières (voir le paquetage «java.util.regex» en Java) peuvent être utilisées pour parcourir le texte. Traitement événementiel Le traitement événementiel est une approche très simple pour traiter un document XML, mais qui peut être difficile pour le programmeur. En fait, une API (par exemple, API SAX) est utilisée pour lire en séquence le document XML. Chaque fois qu'une nouvelle balise ou tout autre élément significatif (instruction XML, contenu XML, etc.) est rencontré, un «événement» est généré. Traitement avec itérateurs Au lieu d attendre passivement de recevoir des événements pour les traiter, le flux XML est traité itérativement dans une simple boucle. La Streaming API for XML (StAX) permet de réaliser ce type de traitement. Traitement avec modèle en arbre Un document XML peut être vu comme un arbre avec un élément-racine contenant lui-même d autres éléments qui, à leur tour, contiennent des éléments, et ainsi de suite. Ainsi, en utilisant le traitement événementiel par exemple, une librairie peut d'abord lire le document XML et créer un modèle en arbre. Le modèle en arbre XML le plus connu et qui sert de référence est le Document Object Model (DOM).

Question 16. Définissez AJAX et expliquez pourquoi il s'agit d'une technique importante en développement web. Quel est le lien entre AJAX et DOM? AJAX, ou Asynchronous JavaScript And XML («XML et Javascript asynchrones»), est un acronyme désignant une méthode informatique de développement d'applications web. Dans une application web classique, une requête envoyée à un serveur HTTP agit en fonction de l'action et des données reçues et renvoie une nouvelle page. Ce type de fonctionnement recharge systématiquement la totalité de la page même si qu une partie de cette page est requise. Les applications utilisant les techniques AJAX, quant à elles, peuvent envoyer des requêtes au serveur HTTP pour récupérer uniquement les données nécessaires en utilisant la requête HTTP XMLHttpRequest, et en utilisant la puissance des feuilles de style (CSS) ainsi que le langage Javascript côté client pour interpréter la réponse du serveur HTTP. Les applications sont alors plus réactives. En AJAX, on utilise des scripts ECMAScript pour charger des informations à partir d un serveur donné. Les implémentations ECMAScript supportent bien l'api DOM en général. ECMAScript fait donc le lien entre AJAX et l API DOM. Question 17. Selon le fichier CSS suivant, quelle sera la couleur d un élément p? * {color: black; p {color:olive; body p {color:blue; body > p {color: red; body > p {color: green; * {color: yellow; Emplacement de p Couleur de p Explication p contenu immédiatement dans body green Les deux règles : body > p {color: red; et body > p {color: green; s appliquent mais c est la dernière qui prévaut. p contenu dans body mais blue La règle body p {color:blue; s applique. pas immédiatement Autres emplacements olive Les trios règles : * {color: black;, p {color:olive; et * {color: yellow; s appliquent, mais c est la plus spécifique qui prévaut. Question 18. Selon le modèle de boîte CSS du W3C, quelle est la hauteur (height) minimale d'un objet ayant les propriétés CSS «padding: 10px;» et «margin: 12px;»? La hauteur minimale est de zéro.

Question 19. Donnez un exemple de document XML contenant des attributs ID et des attributs IDREF. Deux solutions. 1. xml:idref='identificateur' permet de faire référence à une clef. <section xml:id='intro'> <titre>introduction à XML</titre>... </section> <section> <p> Après la section <xref xml:idref='intro'>d'introduction</xref> nous allons passer... </section> 2. Soit le fichier DTD «exemple.dtd» : <!ELEMENT x (a+, b+, c+,) > <!ELEMENT a (#PCDATA)> <!ELEMENT b (#PCDATA)> <!ELEMENT c (#PCDATA)> <!ATTLIST a mark ID #REQUIRED> <!ATTLIST b id ID #REQUIRED> <!ATTLIST c ref IDREF #REQUIRED> Ci-dessous un exemple d un fichier XML avec ID et IDREF. <!DOCTYPE x SYSTEM "exemple.dtd"> <x> <a mark="a1"/> <a mark="a2"/> <a mark="a3"/> <b id="b001" /> <c ref="a3" /> </x> Question 20. Selon le fragment de DTD suivant, qu'est-ce qu'il est permis de mettre dans un élément p? Comment nomme-t-on le concept utilisé ici? <!ENTITY % fontstyle "big small" > <!ENTITY % phrase "em cite" > <!ENTITY % in "%fontstyle; %phrase;" > <!ENTITY % In "(#PCDATA %in;)*" > <!ELEMENT p %In;> <!ELEMENT p (#PCDATA big small em site )*> Question 21.

Expliquez les expressions XPath suivantes et décrivez le résultat selon la théorie des ensembles (union, intersection et complément). //*[@s="1"] //*[@t="1"] //*[@s="1"][count(. //*[@t="1"])=count(//*[@t="1"])] //*[@s="1"][count(. //*[@t="1"])!=count(//*[@t="1"])] Expression //*[@s="1"] //*[@t="1"] //*[@s="1"][count(. //*[@t="1"])=count(//*[@t="1"])] //*[@s="1"][count(. //*[@t="1"])!=count(//*[@t="1"])] Valeur retournée L union des éléments dont la valeur des attributs s et t est égale à 1. L intersection des éléments dont la valeur de s et de t est égale à 1. Le complément des éléments dont la valeur de s est égale à 1 et la valeur de t est différente de 1. Question 22. Comment passe-t-on des paramètres à une feuille de style XSLT à partir d'un document XML? On peut passer un paramètre à une feuille de style XSLT à l aide de «xslt-param». Ci-dessous, un exemple de fichier XML (tiré du cours) dans lequel on passe deux paramètres. <?xml version="1.0" encoding="iso-8859-1"?> <?xslt-param name="couleur" value="blue"?> <?xslt-param name="taille" select="2"?> <?xml-stylesheet href="xslt.xml" type="application/xml"?> <facture> <montant>10.10</montant> <personne>jean Rochond</personne> <raison>achat d'ordinateur</raison> </facture> (Optionnel) La récupération des paramètres se fait à l aide de «xsl:param». Ci-dessous, un exemple d un fichier XSLT récupérant ces deux paramètres (l attribut select permet d associer des valeurs par défaut). <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:param name="couleur" select="red"> <xsl:param name="taille" select="1"> <xsl:template match="facture"> <html> <head> <title>facture de <xsl:value-of select="personne" /></title> </head> <body> <p style="color:{$couleur; font-size:{$tailleem">ceci est une facture pour <xsl:value-of select="personne" /> de <xsl:value-of select="montant" />$ pour: <xsl:value-of select="raison" />.</p> </body> </html> </xsl:template> </xsl:stylesheet>

Question 23. Écrivez un programme XQuery qui donne la liste des éléments distincts utilisés dans un document XML «etu.xml». distinct-values(for $s in doc("etu.xml")//* return name($s) ) Question 24. Quels sont les langages Turing-complet dans cette liste: Java, ECMAScript, CSS, XSLT, XQuery, XPath? Java, ECMAScript, XSLT et XQuery sont Turing-complet. CSS et XPath ne le sont pas.