XSL XML:Exemples de mises en forme

Un article de WikiTuto.

Jump to: navigation, search
  • XML Concepts de base
  1. Historique : de SGML à XML
  2. XML:Mise en oeuvre
  3. Structure d'un document XML
  4. Support par les navigateurs
  • Prise en main d'XML CookTop
  1. XML CookTop généralités
  2. Interface
  3. Exercices
  • Prise en main d'oXygen XML Editor
  1. Généralités
  2. Interface
  3. Fonctionnalités
  4. Exercices
  • Déclarations de Type de Document
  1. Introduction
  2. Types de DTD
  3. Déclarations d'éléments
  4. Déclarations d'attributs
  5. Déclarations d'entités
  • Initiation aux Schéma XML
  1. Introduction
  2. Les premiers pas
  3. Déclarations d'éléments et d'attributs
  4. Les types de données
  5. Espaces de nom
  6. Les dérivations
  7. Diverses autres fonctionnalités
  • Mise en forme à l'aide de feuilles de style XSL
  1. Présentation
  2. Exemples de mises en forme
  • Mise en forme à l'aide de feuilles de style XSL (XSLT)
  1. Les expressions de sélection
  2. XPath
  3. Éléments XSLT
  • Fonctions XPath
  1. Fonctions XPath applicables aux nœuds
  2. Fonctions XPath applicables aux chaînes de caractèress
  3. Fonctions XPath applicables aux nombres
  4. Fonctions booléennes
  5. Autres fonctions
  • Utilisation du DOM et XSLT dynamique
  1. Insertion de code JavaScript dans une page
  2. Utilisation du DOM
  • Synchroniser des contenus multimédia avec SMIL
  1. Généralités
  2. Construction progressive d'un fichier SMIL
  3. Conclusion
  • Un format de dessin vectoriel en XML: SVG
  1. Introduction
  2. SVG de base
  3. Éléments graphiques de base
  4. Structuration: éléments de groupage et références
  5. Transformations
  6. Autres fonctionnalités
  • L'animation dans le SVG
  1. Introduction
  2. Animation de base: l'élément animate
  3. Des animations plus complexes
  • Plus loin que les formulaires HTML: XForms
  1. Généralités
  2. Fonctionnalités des formulaires XForms
  3. Dans la pratique
  4. Pour aller plus loin...
  • Quelques mots sur les Services Web
  1. Généralités
  2. Trouver un service Web
  3. Accéder à un service Web
  4. Récapitulation et inconvénients
Source : Gilles Chagnon

Sommaire

Exemple simple

Introduction

Il est possible de traiter de manière simple un fichier XML contenant une information relativement linéaire. Ainsi, l'exemple déjà présenté d'une composition de bouteille d'eau, dans le cas d'une seule bouteille, se prête facilement à une simple mise en forme HTML.

Exemple

Exemple d'un document XML lié à une feuille de style XSL simple :

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <?xml-stylesheet type="text/xsl" href="bouteille1.xsl"?>
 <bouteille>
   <marque>Cristaline</marque>
   <composition>calcium 71mg/l, magnésium 5,5mg/l, chlorure 20mg/l, nitrate 1mg/l, traces de fer.</composition>
   <source>
     <ville>St-Cyr la Source</ville>
     <departement>Loiret</departement>
   </source>
   <code_barre>3274080005003</code_barre>
   <contenance>150cl</contenance>
   <ph>7,45</ph>
 </bouteille>
 

Et voici la feuille de style XSL associée :

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/">
   <html>
     <head>
       <title>Exemple de sortie HTML</title>
       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
     </head>
     <body>
       <h1>Bouteille de marque <xsl:value-of select="bouteille/marque" /></h1>
       <h2>Composition:</h2>
       <p><xsl:value-of select="bouteille/composition" /></p>
       <h2>Lieu d'origine:</h2>
       <p>Ville de <b><xsl:value-of select="bouteille/source/ville" /></b>, dans le département <b><xsl:value-of select="bouteille/source/departement" /></b></p>
       <h2>Autres informations</h2>
       <ul>
         <li>Contenance: <xsl:value-of select="bouteille/contenance" /></li>
         <li>pH: <xsl:value-of select="bouteille/ph" /></li>
       </ul>
     </body>
   </html>
 </xsl:template>
 </xsl:stylesheet>
 

Application à un exemple

Appliquer cette dernière feuille de style au fichier XML produit un fichier HTML avec la mise en page désirée.

Voir l'exercice intitulé "Mise en forme simple à l'aide de XSL" pour un deuxième exemple.

Exercice 1. Mise en forme simple à l'aide de XSL

Exemple avec boucle

Introduction

Il arrive que la structure du document XML ne soit pas linéaire, mais fondée sur, par exemple, des boucles, ou bien comporte un nombre indéterminé de fois un même élément ; c'est d'ailleurs le plus souvent le cas.

On peut ainsi reprendre l'exemple de la bouteille d'eau, qui se présente sous la forme du fichier XML suivant :

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <?xml-stylesheet type="text/xsl" href="bouteille1.xsl"?>
 <bouteille>
     <marque>Cristaline</marque>
     <composition>
       <ion_positif>calcium 71mg/l</ion_positif>
       <ion_negatif>nitrate 1mg/l</ion_negatif>
       <ion_positif>magnésium 5,5mg/l</ion_positif>
       <ion_negatif>chlorure 20mg/l</ion_negatif>
       <autres_materiaux>fer</autres_materiaux>
     </composition>
     <source>
       <ville>St-Cyr la Source</ville>
       <departement>Loiret</departement>
     </source>
   <code_barre>3274080005003</code_barre>
   <contenance>150cl</contenance>
   <ph>7,45</ph>
 </bouteille> 
 

Cette fois-ci, il faut tenir compte d'un nombre a priori indéterminé d'éléments ion_positif, par exemple. Il suffit pour cela d'introduire dans la feuille de style un élément <xsl:for-each select="ce_qu_on_cherche_a_afficher"/>, qui permet de faire une boucle sur l'élément cherché :

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/">
   <html>
     <head>
       <title>Exemple de sortie HTML</title>
       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
     </head>
     <body>
       <h1>Bouteille de marque <xsl:value-of select="bouteille/marque" /></h1>
       <h2>Composition:</h2>
       <h3>Ions positifs</h3>
       <ul>
         <xsl:for-each select="bouteille/composition/ion_positif">
           <li><xsl:value-of select="." /></li>
         </xsl:for-each>
       </ul>
       <h3>Ions négatifs</h3>
       <ul>
         <xsl:for-each select="bouteille/composition/ion_negatif">
           <li><xsl:value-of select="." /></li>
         </xsl:for-each>
       </ul>
       <h3>Autres matériaux</h3>
       <ul>
         <xsl:for-each select="//autres_materiaux">
           <li><xsl:value-of select="." /></li>
         </xsl:for-each>
       </ul>
 <h2>Lieu d'origine</h2>
       <p>Ville de <b><xsl:value-of select="bouteille/source/ville" /></b>, dans le département <b><xsl:value-of select="bouteille/source/departement" /></b></p>
       <h2>Autres informations</h2>
       <ul>
         <li>Contenance: <xsl:value-of select="bouteille/contenance" /></li>
         <li>pH: <xsl:value-of select="bouteille/ph" /></li>
       </ul>
     </body>
   </html>
 </xsl:template>
 </xsl:stylesheet>
 

Noter : 1.la présence du caractère / à la fin de l'élément "Retour-Ligne"
. Dans le fichier HTML produit, il n'apparaît plus.

2. le réarrangement des entrées : les ions positifs sont de toutes manières affichés avant les ions négatifs.

3.la sélection des "autres matériaux" avec select="//autres_materiaux". Cela est une des manières de faire référence à un élément dans l'arbre des éléments. Nous verrons la liste de ces sélecteurs plus tard.

Exemple

On trouvera un deuxième exemple dans une variante de l'exercice précédent...

Exercice 2. Mise en forme avec réarrangement

Sources

Gilles Chagnon

Boîte à outils
Annuaire gratuitCe site est listé dans la catégorie Informatique : Aide et astuces en informatique Annuaire