15
Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Embed Size (px)

Citation preview

Page 1: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 1

Extensible Mark up Language

Langage de transformation et langage d'interrogation

Page 2: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 2

Exercice 1 Copyright (c) 2004-2006 Gilles Chagnon

<?xml version="1.0" encoding="ISO-8859-1" ?> <recette>

<entete> <auteur>Casimir</auteur> <titre>Recette du Gloubi-Boulga</titre><remarque>Pour une personne</remarque>

</entete> <procedure> Remplir un saladier avec de la confiture de fraises, du chocolat râpé, des bananes écrasées, de la moutarde forte, des saucisses de Toulouse écrasées tièdes mais crues. Mélanger vigoureusement jusqu'à obtenir une bouillie marron-clair. Il est normal qu'il y ait des grumeaux. Les proportions sont environ égales pour tous les ingrédients, mais il est possible de varier selon les goûts de chacun. </procedure>

</recette>

Créer une feuille de style XSL permettant à partir de cette fiche recette de produire une page HTML qui :a pour titre le contenu de la balise titre ; commence par un titre <h1> ayant comme contenu le contenu de l'élément titre ; donne ensuite le nom de l'auteur de la recette ; affiche ensuite le mot Remarque : puis le contenu de l'élément remarque ; affiche Procédure en niveau <h2> ; dans un paragraphe, présente la procédure à suivre.

Page 3: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 3

Corrigé exercice 1

<?xml version="1.0" encoding="ISO-8859-1" ?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/"><html>

<head><title><xsl:value-of select="//titre"/></title>

</head><body>

<h1><xsl:value-of select="//titre"/></h1><p><b>Auteur:</b> <xsl:value-of select="//auteur"/></p><p><b>Remarque:</b> <xsl:value-of select="//remarque"/></p>

<h2>Procédure</h2><p><xsl:value-of select="//procedure"/></p>

</body></html>

</xsl:template>

</xsl:stylesheet>

Page 4: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 4

Exercice 2 Copyright (c) 2004-2006 Gilles Chagnon

<?xml version="1.0" encoding="ISO-8859-1" ?> <recette>

<entete> <auteur>Casimir</auteur> <titre>Recette du Gloubi-Boulga</titre> <remarque>Pour une personne</remarque>

</entete> <procedure>

<texte> Remplir un saladier avec les ingrédients... </texte> <liste>

<item>confiture de fraises</item> <item>chocolat râpé</item> <item>bananes écrasées</item> <item>moutarde forte</item> <item>saucisses de Toulouse écrasées tièdes mais crues</item>

</liste> <texte> Mélanger vigoureusement jusqu'à obtenir une bouillie marron-clair. Il est normal qu'il y ait des

grumeaux. </texte> <texte> Les proportions sont environ égales pour tous les ingrédients, mais il est possible de varier selon les

goûts de chacun. </texte> </procedure>

</recette>

Reprendre l'exercice précédent, mais cette fois-ci en affichant dans la procédure une liste des ingrédients, puis les opérations à pratiquer.

Remarque : Il est également possible de réarranger par ordre alphabétique la liste des ingrédients, mais cela n'est

possible qu'en appelant des commandes XSL évoluées.

Page 5: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 5

Corrigé exercice 2

<?xml version="1.0" encoding="ISO-8859-1" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"<xsl:output method="html" version="html4.01" encoding="ISO-8859-1" doctype-public="-//W3C//DTD HTML 4.01//EN"

doctype-system="http://www.w3.org/TR/html4/strict.dtd"/>

<xsl:template match="/"><html><head>

<title><xsl:value-of select="//titre"/></title></head><body><h1><xsl:value-of select="//titre"/></h1><p><b>Auteur:</b> <xsl:value-of select="//auteur"/></p><p><b>Remarque:</b> <xsl:value-of select="//remarque"/></p><h2>Procédure</h2><h3>Ingrédients:</h3><ul>

<xsl:for-each select="//item"><!--<xsl:sort select="." data-type="text" lang="fr" order="ascending"/>--><li><xsl:value-of select="."/></li>

</xsl:for-each></ul><h3>Opérations:</h3><ol>

<xsl:for-each select="//texte"><li><xsl:value-of select="."/></li></xsl:for-each></ol><!--<p><xsl:value-of select="//procedure"/></p>--></body>

</html></xsl:template></xsl:stylesheet>

Page 6: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 6

Exercice 2 bis

• Produire le fichier XML de l’exercice 2 en structurant automatiquement le ficher XML de l’exercice 1

Page 7: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 7

Exercice 3 Copyright (c) 2004-2006 Gilles Chagnon

<?xml version="1.0" encoding="ISO-8859-1" ?>

<systeme_solaire>

<etoile><nom>Soleil</nom><type_spectral>G2</type_spectral><age unit="milliard d'annees">5</age>

</etoile>

<planete type="tellurique"><nom>Mercure</nom><distance unit="UA">0.4</distance><masse unit="masse terrestre">0.06</masse><diametre unit="diamètre terrestre">0.4</diametre>

</planete>

<planete type="tellurique"><nom>Vénus</nom><distance unit="UA" >0.7</distance><masse unit="masse terrestre">0.8</masse><diametre unit="diamètre terrestre">0.9</diametre>

</planete>

<planete type="tellurique"><nom>Terre</nom><distance unit="km" >149600000</distance><masse unit="kg">5.98e24</masse><diametre unit="km">12756</diametre><satellite>1</satellite>

</planete>

<planete type="tellurique"><nom>Mars</nom><distance unit="UA" >1.5</distance><masse unit="masse terrestre">0.1</masse><diametre unit="diamètre terrestre">0.5</diametre><satellite>2</satellite>

</planete>

<planete type="gazeuse" anneau="yes"><nom>Jupiter</nom><distance unit="UA" >5.2</distance><masse unit="masse terrestre">318</masse><diametre unit="diamètre terrestre">11</diametre><satellite>16</satellite>

</planete>

<planete type="gazeuse" anneau="yes"><nom>Saturne</nom><distance unit="UA" >9.6</distance><masse unit="masse terrestre">95</masse><diametre unit="diamètre terrestre">9.4</diametre><satellite >18</satellite>

</planete>

<planete type="gazeuse" anneau="yes"><nom>Uranus</nom><distance unit="UA" >19.2</distance><masse unit="masse terrestre">14.5</masse><diametre unit="diamètre terrestre">4</diametre><satellite >15</satellite>

</planete>

<planete type="gazeuse" anneau="yes"><nom>Neptune</nom><distance unit="UA" >30.1</distance><masse unit="masse terrestre">17.2</masse><diametre unit="diamètre terrestre">3.8</diametre><satellite >8</satellite>

</planete>

<planete type="Kuiper"><nom>Pluton</nom><distance unit="UA" >39.4</distance><masse unit="masse terrestre">0.002</masse><diametre unit="diamètre terrestre">0.2</diametre><satellite >1</satellite>

</planete>

</systeme_solaire>

A l'aide d'une boucle <xsl:for-each>, présenter les données sous la forme d'une liste donnant pour chaque planète son nom, sa distance par rapport au Soleil, sa masse et son diamètre, Ajouter à la distance, la masse et le diamètre les unités employées en récupérant la valeur de l'attribut unit pour chacun de ces éléments.Effectuer pour chaque planète un test sur l'élément satellite. S'il existe, afficher le nombre de satellitesNe plus afficher les informations sur la Terre, Classer les planètes par ordre croissant de masse ; A l'aide d'un élément <xsl:choose>, faire un test sur le type de planète et afficher suivant le cas :

"Planète de type tellurique" si la planète est de type... tellurique ;

"Planète pleine de gaz!" si la planète est de type gazeuse ;

"Autre type de planète" dans les cas restants.

Page 8: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 8

<liste_agents><agent matricule="13256" groupe="I24">

<nom>Hery</nom><prenom>Jean-Francois</prenom><date-naissance>19571007</date-naissance><lieu-naissance>Angers</lieu-naissance><nr>28</nr><embauche>19810901</embauche><enfants nombre="4">

<enfant prenom="Emmanuel" date-naissance="19831218"/><enfant prenom="Antoine" date-naissance="19871105"/><enfant prenom="Marc" date-naissance="19910621"/><enfant prenom="Joanne" date-naissance="19910621"/>

</enfants><photo>jfh.jpg</photo>

</agent><agent matricule="11720" groupe="I24">

<nom>Laleuf</nom><prenom>Jean-Claude</prenom><date-naissance>19530901</date-naissance><lieu-naissance>Paris</lieu-naissance><nr>29</nr><embauche>19800415</embauche><enfants nombre="3">

<enfant prenom="Francois" date-naissance="19840708"/><enfant prenom="Laurent" date-naissance="19881010"/><enfant prenom="Stephane" date-naissance="19940525"/>

</enfants><photo>jcl.jpg</photo>

</agent></liste_agents>

Exercice 4

Page 9: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 9

À publier comme ceci…

Page 10: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 10

Ou comme ça…

Page 11: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 11

Et encore comme ça !

Page 12: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 12

<?xml version="1.0"><poeme>

<vers> belle marquise,</vers><vers> vos beaux yeux </vers><vers> me font </vers><vers> mourir </vers><vers> d’amour </vers>

</poeme>

Exercice 5exprimer en XML les autres façons dont Monsieur Jourdain peut tourner son poème

Page 13: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 13

<?xml version="1.0"?><poeme>

belle marquise,vos beaux yeuxme fontmourird’amour

</poeme>

Exercice 6 (le même, en moins structuré, à publier en HTML)

Page 14: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 14

Exercice 7 : le même, à publier en prose

<?xml version="1.0"?><poeme>

belle marquise,vos beaux yeuxme fontmourird’amour

</poeme>

Page 15: Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Langage de transformation et langage d'interrogation

Cours MIAGE Henry Boccon-Gibod 15

Fin du module