<?xml version="." encoding="utf-8" standalone="yes"?> <?xml-stylesheet type="text/xsl" href="scripts/tutorialhtml.xsl"?> L3MIAGE - Langages pour le Web L3MIAGE - Langages pour le Web TP3 Des schémas et des instances Objectifs Dans ce TP, vous allez créer des documents xml à la fois bien formés et valides par rapport à des schémas donnés. Mise en place Créez un nouveau projet NetBeans de type Java Web, Web Application nommé TP3 dans votre répertoire de TPs de langages pour le web Dans le répertoire web de ce projet, créez les répertoires suivant: un répertoire xml où vous rangerez vos fichiers xml un répertoire xsd où vous rangerez vos schemas un répertoire xslt dans lequel vous rangerez les tranformations données dans les exercices ci-dessous un répertoire jeu dans lequel vous déziperez l'archive jeu.zip que l'on vous donne dans l'exercice Partie d'échec Exercices. XML Schemas météorologiques. XML Schemas météorologiques On veut modéliser le type décrit par le diagramme UML suivant : Figure.. Météorologie simple Question. Quel est le nombre de type(s) complexe(s) défini(s) par ce diagramme? unbounded /9
/9
Question. Quel est le nombre de type(s) simple(s) défini(s) par ce diagramme? unbounded Question.3 Créez un nouveau XML Schema (File -> New File-> XML -> XML schema). appelé meteo. Comme vous pouvez le voir, le document généré par NetBeans 6. contient bien les informations concernant le target namespace. Il y a trois modes de visualisation d'un XML Schema dans NetBeans 6. (Source, Schema et Design). Pour l'ensemble de notre travail dans cette UE, nous allons toujours utiliser la visualisation Source (cliquez sur le bouton Source dans la barre d'outils de l'éditeur). Question.4 Quel est le nom du vocabulaire par défaut défini dans le nouveau fichier? http://www.w3.org//xmlschema http://xml.netbeans.org/schema/meteo aucun qualified Question.5 Complétez meteo.xsd pour qu'il correspondent au diagramme UML. Question.6 Créez un document xml contraint sur ce XML Schema. Pour cela, demandez un nouveau "XML Document", qui soit "XML Schema constrained" : Figure.. Document xml contraint sur un XML Schema Figure.3. Document xml contraint sur un XML Schema En cas de problème de selection du XML Schema (cf figure ci-dessus), faites un clic bouton droit sur meteo.xsd et choisissez le menu Generate Sample XML. Cela générera un fichier XML pré-rempli (mais pas toujours correctement). Question.7 Dans le fichier généré par NetBeans, combien de préfixes sont définis? 3 Question.8 3/9
Quel est le préfixe (l'alias) du vocabulaire http://xml.netbeans.org/schema/meteo? http://www.w3.org//xmlschema http://xml.netbeans.org/schema/meteo xsi ns schemalocation Question.9 Pour un mot qui appartient au vocabulaire http://xml.netbeans.org/schema/meteo, quel préfixe doit-on employer? aucun meteo: xsi: ns: ou ns: schemalocation: Question. Vérifiez que votre document xml est valide par rapport au XML Schema On souhaite à présent modéliser le type suivant : Figure.4. Météorologie plus complexe Question. Quel est le nombre de type(s) complexe(s) défini(s) par ce diagramme? unbounded Question. Quel est le nombre de type(s) simple(s) défini(s) par ce diagramme? unbounded Question.3 Crééz un nouveau XML Schema définissant ce type Question.4 Crééz un document XML contraint sur ce XML Schema. Vérifiez qu'il est valide 4/9
Question.5 Créez un deuxième document XML contraint sur ce XML Schema. Vérifiez qu'il est lui aussi valide Maintenant que vous avez créé un XML Schema, vous pouvez avoir autant de documents XML valides par rapport à ce schema. Ces documents XML sont appelées instances. [Fermer]. Partie d'échecs. Partie d'échecs On considère un jeu d'échec à un instant donné de la partie et sa spécification XML. On rappelle qu'un jeu d'échec comprend pour les pièces blanches et les pièces noires respectivement: un roi (toujours présent, on ne peut capturer un roi) une reine deux tours deux fous deux cavaliers huit pions Toutes ces pièces se trouvent sur les cases d'un damier 8x8 comme montré sur la figure suivante, qui représente la partie du 7 février 3 entre Jek et AFG, au 3eme coup : Figure.. Représentation d'une partie d'échec à un instant donné Question. Créez un nouveau document de type "XML schema", appelé echec.xsd. Pour l'instant ce document est vide et nous allons le compléter petit à petit. Attention l'élément elementformdefault doit être égal à qualified. Question. Changez le nom du vocabulaire que nous sommes en train d'écrire. Appelez-le http://ujf-grenoble.fr/echec. Ce sera aussi le nom du vocabulaire par défaut défini à l'attribut xmlns Créez un nouvel élément racine echec dont le type est un complextype de nom Echec. Echec ne contient pour l'instant qu'un élément commentaire permettant de décrire ce que l'on est en train de représenter (exemple : AFG (noir) contre Jek (blanc), au 3eme coup, partie du 7 février 3). Question.3 De quel type est l'élément commentaire? int string boolean un type complexe que vous créez un type simple que vous créez Le commentaire que l'on souhaite insérer ici a pour but d'expliquer à l'utilisateur de quelle partie il 5/9
s'agit. Il doit donc pouvoir contenir n'importe quel caractère de l'alphabet du prologue. Il s'agit donc bien d'un type string. Question.4 Créez un nouveau document XML exemple-partie-.xml contraint sur le schéma echec.xsd. Vérifiez que le nom du vocabulaire est bien le bon et qu'il s'agit bien du vocabulaire défini par défaut. Question.5 Munissez-vous de deux outils essentiel en informatique : un papier et un crayon (ou stylo), et dessinez le diagramme de classes UML correspondant à votre XML Schema. A present, nous allons utiliser un transformation xslt pour présenter vos données organisées en xml sous forme d'un échiquier. Pour cela vous aurez besoin des fichiers images (pour représenter les pièces), ainsi que d'un ficiher de transformation xslt. Récupérez et sauvegardez dans les répertoires adequat : Le répertoire jeu.zip que vous décompresserez dans le répertoire web de votre projet. le fichier afficheechecs.xsl que vous sauvegarderez dans le répertoire xsl de votre projet. Question.6 Appliquez la transformation afficheechec.xsl sur le document XML afin de vérifier que votre exemple est conforme à ce qui a été demandé. Pour l'instant, votre document xml ne comprend qu'un commentaire. Le jolie présentation sous forme d'échiquier ne doit donc logiquement pas contenir grand chose de plus (en tout cas aucune autre donnée). Comme nous nous sommes mis d'accord sur l'organisation des données (le schéma) : Vos données devraient correspondre à nos données Notre affichage automatisé (à l'aide de la transformation XSL) devrait pouvoir utiliser vos données sans problème Voici un fragment de document XML permettant de représenter une pièce et sa position. Question.7 Comments définireriez-vous le type de l'élément nom? int string boolean un type complexe que vous créez un type simple que vous créez Dans un jeu d'échec, le nom d'une pièce doit se choisir parmi l'énumération suivante : roi reine 6/9
tour fou cavalier pion Il faut donc un type simple défini comme une restriction de type string avec l'énumération du nom des pièces. Question.8 Comments définireriez-vous le type de l'élément colonne? int string boolean un type complexe que vous créez un type simple que vous créez Les colonnes ne peuvent aller que de A à H. Il faut donc créer un type simple sur la base d'une chaîne de caractères soit à l'aide d'une expression régulière, soit à l'aide d'une énumération. Question.9 Comments définireriez-vous le type de l'élément ligne? int string boolean un type complexe que vous créez un type simple que vous créez Les lignes ne peuvent aller que de à 8. Il s'agit donc d'un sous-ensemble d'entiers, dans l'intervalle [..8]. On veut maintenant pouvoir représenter toutes les pièces d'une même couleur. Voici un fragment de document permettant de représenter toutes les pièces d'une même couleur : où nomdecouleur peut prendre soit la valeur piecesblanches soit la valeur piecesnoires. Les autres noms de balises sont évidemment les mêmes pour une couleur ou une autre. Question. Complétez votre XML Schema pour ajouter le type Piece et les types utilisés par ce type complexe. Question. Complétez le type complexe Echec. Question. A l'aide de votre OPC (Outils Papier-Crayon) dessinez le diagramme de classes UML correspondant à votre XML Schema. 7/9
Question.3 Créez un nouveau document XML exemple-couleur.xml valide par rapport à ce nouveau schéma. Question.4 Appliquez la transformation afficheechec.xsl sur le document XML afin de vérifier que votre exemple est conforme à ce qui a été demandé. Représentation des deux camps. Dans un jeu d'échec, il y a bien deux camps, qui au départ ont le même nombre de pièces. On veut pouvoir décrire la partie, par exemple comme ceci : Question.5 Créez un nouveau document xml contenant ce code et faites en sorte qu'il soit contraint par rapport à votre schema. Définissez un namespace par défaut! Question.6 Appliquez la transformation afficheechec.xsl sur le document XML afin de vérifier que votre exemple est conforme à ce qui a été demandé. Question.7 Complétez votre diagramme de classes UML correspondant à votre XML Schema à l'aide de l'opc. [Fermer] 3. TuxLetterGame File Rouge 3. TuxLetterGame File Rouge Pendant cette séance, nous allons reprendre les instances XML créées auparavant. Comme vous pouvez le voir, il faudra donc qu'avant chaque nouveau TP la partie du TP précédent correspondant à TuxLetterGame soit réalisée. Vous devriez avoir le temps nécéssaire en TP. Nous allons créer les XMLSchema validant les instances créées au dernier TP. Question 3. Ecrire le schéma correspondant à l'instance XML du dictionnaire. Penser à lire attentivement le paragraphe décrivant le dictionnaire dans le dernier TP! A ce niveau du travail, nous avons mis en place les bases pour configurer notre jeu. En effet, nous avons un dico et la configuration du jeu avec les paramètres "décor". Pensons maintenant à ce qui se passe à la fin d'un jeu! Nous allons créer une instance XML et son schéma valide permettant la sauvegarde des parties jouées dans le profil d'un joueur. Nous l'utiliserons plus tard pour afficher les performances d'un joueur. L'instance XML vous est donnée profile.xml. En remarquant les différentes cardinalités, ordre des balises ou encore les types de chaque élément, répondez aux questions suivantes: Question 3. Quelle est la particularité de l'attribut found? Il peut être de type String Il peut être de type double Il est possible de ne pas l'avoir à chaque fois Toutes les réponses sont justes 8/9
des réponses sont justes Aucune réponses est juste Réfléchissons par élimination! Peut-il être un double? Non car il y a le signe %. Par contre le reste des propositions est juste. Question 3.3 Créer une autre instance XML et le XMLSchema associé. [Fermer] Université Joseph Fourier 5 9/9