TP XSLT

16.3.2 Partie 1

16.3.2.1 Fichier de travail saintex01.xml

I.                Définir une feuille de styles minimale pour formater le document XML fournit en HTML.

Feuille de styles saintexstyle01.xml

<?xml version="1.0" ?>

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

  <xsl:output method="html" version="4.0" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" doctype-system="http://www.w3.org/TR/REC-html40/loose.dtd" encoding="ISO-8859-1" />

- <xsl:template match="/">

- <html>

- <head>

  <h1 align="center">LE PETIT PRINCE</h1>

  </head>

- <body bgColor="red">

  <xsl:apply-templates />

  </body>

  </html>

  </xsl:template>

  </xsl:stylesheet>

Résultat :

 

On remarque que il n’y a pas d’espaces entre les mots, et que le texte et mis sans  forme.

 

II.             Séparer les phrases par des paragraphes, les traductions en tchèque et français par des sauts de lignes et les mots par des espaces. Pour cela, on a utilisé la feuille de styles précédente et nous l’avons complété.

 

Et on va nommer : saintexstyle02.xsl

 

<?xml version="1.0" ?>

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

  <xsl:output method="html" version="4.0" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" doctype-system="http://www.w3.org/TR/REC-html40/loose.dtd" encoding="ISO-8859-1" />

- <xsl:template match="/">

- <html>

- <head>

  <h1 align="center">LE PETIT PRINCE</h1>

  </head>

- <body bgColor="red">

  <xsl:apply-templates />

  </body>

  </html>

  </xsl:template>

- <xsl:template match="phrase">

- <p>

  <xsl:apply-templates />

  </p>

  </xsl:template>

- <xsl:template match="traduction">

- <br>

  <xsl:apply-templates />

  </br>

  </xsl:template>

- <xsl:template match="info_etudiante">

- <br>

  <xsl:apply-templates />

  </br>

  </xsl:template>

- <xsl:template match="info_enseignant">

- <br>

  <xsl:apply-templates />

  </br>

  </xsl:template>

- <xsl:template match="mot">

  <xsl:text />

  <xsl:apply-templates />

  </xsl:template>

  </xsl:stylesheet>

Résultat :

 

 

 

III.          Mettre les phases du narrateur en rouge et celles du Petit Prince en vert.

 

Voici la feuille de styles qu’on a obtenu par le biais de la dernière feuille de styles :  saintexstyle02.xsl  On a aussi modifié la couleur de fond en « blanc » car on n’allait pas pouvoir distinguer les phrases en rouge. On l’a nommé  saintexstyle03.xsl 

 

<?xml version="1.0" ?>

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

  <xsl:output method="html" version="4.0" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" doctype-system="http://www.w3.org/TR/REC-html40/loose.dtd" encoding="ISO-8859-1" />

- <xsl:template match="/">

- <html>

- <head>

  <h1 align="center">LE PETIT PRINCE</h1>

  </head>

- <body bgColor="white">

  <xsl:apply-templates />

  </body>

  </html>

  </xsl:template>

- <xsl:template match="phrase">

- <p>

  <xsl:apply-templates />

  </p>

  </xsl:template>

- <xsl:template match="traduction">

- <br>

  <xsl:apply-templates />

  </br>

  </xsl:template>

- <xsl:template match="info_etudiante">

- <br>

  <xsl:apply-templates />

  </br>

  </xsl:template>

- <xsl:template match="info_enseignant">

- <br>

  <xsl:apply-templates />

  </br>

  </xsl:template>

- <xsl:template match="mot">

  <xsl:text />

  <xsl:apply-templates />

  </xsl:template>

- <xsl:template match="phrase">

- <xsl:choose>

- <xsl:when test="@loc='narrateur'">

- <p>

- <font color="red">

  <xsl:apply-templates />

  </font>

  </p>

  </xsl:when>

- <xsl:when test="@loc='LePetitPrince'">

- <p>

- <font color="green">

  <xsl:apply-templates />

  </font>

  </p>

  </xsl:when>

- <xsl:otherwise>

- <p>

  <xsl:apply-templates />

  </p>

  </xsl:otherwise>

  </xsl:choose>

  </xsl:template>

  </xsl:stylesheet>

 

    Et le résultat :

 

 

 

 

 

 

 

 

 

 

 

 

IV.          N’afficher que la traduction en tchèque. Pour créer cette nouvelle feuille de styles on s’est servi de saintexstyle03.xsl mais on a modifié la couleur de fond pour le mettre en jaune :

 

<body bgColor="yellow">

<xsl:apply-templates />

</body>

Et pour n’afficher que la traduction tchèque, on a ajouté à la fin ceci :

<xsl:template match="traduction">

<xsl:if test="@lang='tcheque'">

  <xsl:apply-templates />

  <br />

  </xsl:if>

  </xsl:template>

 

 

 

Et donc, le résultat :

 

 

 

 

V.             Mettez en gras le mot « mouton » Pour réaliser cette feuille de styles, on a reparti de la feuille de styles saintexstyle02.xsl et on a modifié la couleur de font, cette fois on a mis du rose.

 

  <body bgColor="pink">

  <xsl:apply-templates />

  </body>

 

Pour mettre en gras le mot « mouton » on a utilisé la fonction choose et on l’a écrite à partir du nœud mot. Pour chercher dans tous les fils de mot « mouton » et on se ressert de la balise <b></b>, et on renvoie le reste du texte avec la balise <xsl :otherwise></ xsl :otherwise>. On a appelé la nouvelle feuille de styles saintexstyle05.xsl

<xsl:template match="mot">

<xsl:choose>

<xsl:when test="contains(text(),'mouton')">

  <xsl:text />

       <b>

             <xsl:apply-templates />

    </b>

       </xsl:when>

       <xsl:otherwise>

  <xsl:text />

 <xsl:apply-templates />

  </xsl:otherwise>

  </xsl:choose>

  </xsl:template>

 

Résultats :

 

 

 

 

On remarque que ="contains(text(),'mouton')"  suffit pour prendre le mot « mouton » même si le mot est suivi de ? ! …

 

VI.          Ne ramener que les traductions en français des phrases qui comporte un mot « mouton » . On s’est servi de la dernière feuille de styles saintexstyle05.xsl et on ajouté l’attribut select , on a aussi changé la couleur de graphies en couleur marron et voici la feuille de styles saintexstyle05.xsl

 

<?xml version="1.0" ?>

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

  <xsl:output method="html" version="4.0" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" doctype-system="http://www.w3.org/TR/REC-html40/loose.dtd" encoding="ISO-8859-1" />

- <xsl:template match="/">

- <html>

- <head>

- <font color="brown">

  <h1 align="center">LE PETIT PRINCE</h1>

  </font>

  </head>

- <body bgColor="pink">

  <xsl:apply-templates />

  </body>

  </html>

  </xsl:template>

- <xsl:template match="phrase">

- <p>

- <font color="brown">

  <xsl:apply-templates select="modalite/traduction[@lang='francais'][./mot[contains(text(),'mouton')]]" />

  </font>

  </p>

  </xsl:template>

- <xsl:template match="traduction">

- <br>

  <xsl:apply-templates />

  </br>

  </xsl:template>

- <xsl:template match="info_etudiante">

- <br>

- <font color="brown">

  <xsl:apply-templates />

  </font>

  </br>

  </xsl:template>

- <xsl:template match="info_enseignant">

- <br>

- <font color="brown">

  <xsl:apply-templates />

  </font>

  </br>

  </xsl:template>

- <xsl:template match="mot">

- <xsl:choose>

- <xsl:when test="contains(text(),'mouton')">

  <xsl:text />

- <b>

  <xsl:apply-templates />

  </b>

  </xsl:when>

- <xsl:otherwise>

  <xsl:text />

  <xsl:apply-templates />

  </xsl:otherwise>

  </xsl:choose>

  </xsl:template>

  </xsl:stylesheet>

 

 

 

 

 

 

 

 

 

 

Résultat :

 

 

 

 

16.3.2.2  Fichier de travail : result01.xml

I.                Définir une feuille de styles minimale à partir de celle existante pour formater le document XML fourni en HTML en tenant compte des modifications que vous avez apportés dans le document dans la partie précédente.

 

Voici la nouvelle feuille de styles resultstyle01.xsl

<?xml version="1.0" ?>

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

  <xsl:output method="html" version="4.0" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" doctype-system="http://www.w3.org/TR/REC-html40/loose.dtd" encoding="ISO-8859-1" />

- <xsl:template match="/">

- <html>

- <head>

  <h1 align="center">Resultat Biologuique</h1>

  </head>

- <body bgColor="pink">

  <xsl:apply-templates />

  </body>

  </html>

  </xsl:template>

- <xsl:template match="info_enseignant">

- <br>

  <xsl:apply-templates />

  </br>

  </xsl:template>

- <xsl:template match="DOCUMENT">

  <xsl:text />

  <xsl:apply-templates />

  </xsl:template>

  </xsl:stylesheet>

 

Résultat :

 

II.             Mettre les SV en rouge. Pour cela nous nous servons de la feuille de styles resultstyle01.xsl et nous allons y ajouter :

resultstyle02.xsl

<xsl:template match="SV">

     <font color="red">

     <xsl:apply-templates />

     </font>

     </xsl:template>

Résultat :

 

 

III.          Mettre les SN en jaune Pour cela nous nous servons de la feuille de styles resultstyle01.xsl et nous allons y ajouter :

resultstyle03.xsl

Tout d’abord on a changé la couleur de fond pour bien reconnaître les SN en jaune :

<body bgColor="green">

          <xsl:apply-templates />

</body>

En après on a juste modifié cette balise :

<xsl:template match="SN">

          <font color="yellow">

          <xsl:apply-templates />

          </font>

          </xsl:template>

Résultat :

 

 

 

IV.          Créer une feuille de styles qui n’affiche que les SN. Voici la feuille de styles : resultstyle04.xsl

 

<?xml version="1.0" ?>

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

  <xsl:output method="html" version="4.0" encoding="ISO-8859-1" />

- <xsl:template match="/">

- <html>

  <head />

- <body bgColor="green">

  <xsl:apply-templates select="//SN" />

  </body>

  </html>

  </xsl:template>

- <xsl:template match="SN">

- <font color="bleu">

- <p>

  <xsl:apply-templates />

  </p>

  </font>

  </xsl:template>

  </xsl:stylesheet>

 

Résultat :

 

V.             Créer une feuille de styles qui n’affiche que les SV. On utilisera la dernière feuille qu’on modifiera un peu, changements de la couleur de fond, de la couleur de la police et de la présentation entre crochets et sans sauts de ligne.

Feuille de styles :  resultstyle05.xsl

<?xml version="1.0" ?>

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

  <xsl:output method="html" version="4.0" encoding="ISO-8859-1" />

- <xsl:template match="/">

- <html>

  <head />

- <body bgColor="black">

  <xsl:apply-templates select="//SV" />

  </body>

  </html>

  </xsl:template>

- <xsl:template match="SV">

- <p>

- <font color="blue">

  [SV =>

  <xsl:apply-templates />

  ]

  </font>

  </p>

  </xsl:template>

  </xsl:stylesheet>

Résultat :

 

16.3.2.3  Fichier de travail : candide01.xml

I.                Définir une feuille de styles minimale à partir de celle existante pour formater le document XML fourni en HTML en tenant compte des modifications que vous avez apportés dans le document dans la partie précédente.

 

Voici la feuille de styles :  candidestyle01.xsl

<?xml version="1.0" ?>

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

  <xsl:output method="html" version="4.0" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" doctype-system="http://www.w3.org/TR/REC-html40/loose.dtd" encoding="ISO-8859-1" />

- <xsl:template match="/">

- <html>

- <head>

  <h1 align="center">CANDIDE par VOLTAIRE</h1>

  </head>

- <body bgColor="silver">

  <xsl:apply-templates />

  </body>

  </html>

  </xsl:template>

- <xsl:template match="corpusnotule">

  <xsl:text />

  <xsl:apply-templates />

  </xsl:template>

  </xsl:stylesheet>

 

Résultat :

 

II.             Mettre les adjectif en rouge. Voici la feuille candidestyle02.xsl

 

<?xml version="1.0" ?>

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

  <xsl:output method="html" version="4.0" encoding="ISO-8859-1" />

- <xsl:template match="/">

- <html>

  <head />

- <body bgColor="white">

  <xsl:apply-templates select="//item" />

  </body>

  </html>

  </xsl:template>

- <xsl:template match="item">

- <p>

- <xsl:choose>

- <xsl:when test="notuleEtiq/cat[contains(text(), 'Adj:')]">

- <font color="red">

  [ADJ =>

  <xsl:apply-templates />

  ]

  </font>

  </xsl:when>

- <xsl:otherwise>

- <font color="black">

  <xsl:apply-templates />

  </font>

  </xsl:otherwise>

  </xsl:choose>

  </p>

  </xsl:template>

- <xsl:template match="forme"><xsl:text />

  (forme: <xsl:apply-templates />

  ) </xsl:template>

- <xsl:template match="lemme"><xsl:text />

  (lemme: <xsl:apply-templates />

  ) </xsl:template>

- <xsl:template match="cat"><xsl:text />

  (cat: <xsl:apply-templates />

  ) </xsl:template>

- <xsl:template match="comp"><xsl:text />

  (comp: <xsl:apply-templates />

  ) </xsl:template>

  </xsl:stylesheet>

 

Résultat :

 

 

 

 

III.          Mettre les verbes en jaune. Ici on a repris la feuille candidestyle02.xsl qu’on a juste modifié la couleur du fond, la couleur de la police des verbes et la catégorie pour la recherche les verbes. Les changements sont :

Nouvelle feuille de styles candidestyle03.xsl

 

- <body bgColor="blue">

  <xsl:apply-templates select="//item" />

  </body>

 

- <xsl:choose>

- <xsl:when test="notuleEtiq/cat[contains(text(), 'Ver:')]">

- <font color="yellow">

  [VER => <xsl:apply-templates /> ]

  </font>

  </xsl:when>

- <xsl:otherwise>

- <font color="black">

  <xsl:apply-templates />

  </font>

  </xsl:otherwise>

  </xsl:choose>

 

 

Résultat :

 

 

IV.          Créer une feuille de styles qui n’affiche que les formes graphiques. Ici on a ajouté un titre et on a affiché que le texte. La feuille de styles est la suivante candidestyle04.xsl 

 

<?xml version="1.0" ?>

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

  <xsl:output method="html" version="4.0" encoding="ISO-8859-1" />

- <xsl:template match="/">

- <html>

- <head>

- <h1 align="center">

  <font color="blue">CANDIDE</font>

  </h1>

  </head>

- <body bgColor="silver">

  <xsl:apply-templates select="//forme" />

  </body>

  </html>

  </xsl:template>

- <xsl:template match="forme">

- <font color="blue">

  <xsl:apply-templates />

  </font>

  </xsl:template>

  </xsl:stylesheet>

Résultat :

 

V.             Créer une feuille de styles qui n’affiche que les catégories. On a ajouté des crochets pour bien séparer les catégories. Voici la feuille candidestyle04.xsl

 

<?xml version="1.0" ?>

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

  <xsl:output method="html" version="4.0" encoding="ISO-8859-1" />

- <xsl:template match="/">

- <html>

- <head>

- <h1 align="center">

  <font color="red">Les Categories dans le texte de Candide</font>

  </h1>

  </head>

- <body bgColor="pink">

  <xsl:apply-templates select="//cat" />

  </body>

  </html>

  </xsl:template>

- <xsl:template match="cat">

- <font color="red">

  [

  <xsl:apply-templates />

  ]

  </font>

  </xsl:template>

  </xsl:stylesheet>

 

Résultat :

 

VI.          Créer une feuille de styles qui affiche l’ensemble des informations textuelles du document initial. Voici la feuille de styles candidestyles06.xsl

 

 

<?xml version="1.0" ?>

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

<xsl:output method="html" version="4.0" encoding="ISO-8859-1" />

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

<h1 align="center"><font color="black">CANDIDE par VOLTAIRE</font></h1>

</head><body bgColor="gold"><xsl:apply-templates /></body></html>

</xsl:template>

 

<xsl:template match="versionxml">

<p><font color="black"><xsl:apply-templates /></font></p>

</xsl:template>

 

<xsl:template match="date">

<xsl:text /><br>Date : <xsl:apply-templates /></br></xsl:template>

<xsl:template match="encodeur">

<xsl:text /><br>Encodeur : <xsl:apply-templates /></br></xsl:template>

<xsl:template match="note">

<xsl:text /><br>Note : <xsl:apply-templates /></br></xsl:template>

 

<xsl:template match="licences">

<p><font color="black"><xsl:apply-templates /></font></p>

</xsl:template>

 

<xsl:template match="licence [@type='Licence ABU']"><xsl:text /><br>

LICENCE ABU : <xsl:apply-templates /> </br>

</xsl:template>

<xsl:template match="licence [@type='Licence Notule']"><xsl:text /><br>

LICENCE NOTULE : <xsl:apply-templates /> </br>

</xsl:template>

 

<xsl:template match="entete"><p><font color="black"><br>

<xsl:apply-templates /></br></font></p></xsl:template>

 

<xsl:template match="TITRE"><xsl:text /><br>TITRE : <xsl:apply-templates />

</br></xsl:template>

<xsl:template match="GENRE"><xsl:text /><br>GENRE : <xsl:apply-templates />

</br></xsl:template>

<xsl:template match="AUTEUR"><xsl:text /><br>AUTEUR : <xsl:apply-templates />

</br></xsl:template>

<xsl:template match="IDENT_ETUDIANTE"><xsl:text /><br>ETUDIANT :

<xsl:apply-templates /> </br></xsl:template>

<xsl:template match="MAIL"><xsl:text /><br>MAIL : <xsl:apply-templates />

</br></xsl:template>

<xsl:template match="TRAVAIL"><xsl:text /><br>TRAVAIL :

<xsl:apply-templates /> </br></xsl:template>

<xsl:template match="IDENT_ENSEIGNANT"><xsl:text /><br>ENSEIGNANT :

<xsl:apply-templates /></br></xsl:template>

<xsl:template match="UNIVERSITE"><xsl:text /><br>UNIVERSITE :

<xsl:apply-templates /></br></xsl:template>

<xsl:template match="COPISTE"><xsl:text /><br>COPISTE :

<xsl:apply-templates /></br></xsl:template>

<xsl:template match="NOTESPROD"><xsl:text /><br>NOTE :

<xsl:apply-templates /></br></xsl:template>

 

<xsl:template match="item">

<xsl:apply-templates select="//forme" />

</xsl:template>

<xsl:template match="forme">

<font color="black"><xsl:apply-templates /> </font>

</xsl:template>

 

</xsl:stylesheet>

 

Résultats :