Vous devez activer Javascript pour accéder à ce site
 

Semaine

RECHERCHE

Attribut mode

Utilisation de l'attribut « mode »

Il arrive que nous voulions définir plus d'un modèle pour un élément donné. Nous pouvons ajouter des modèles en utilisant l'attribut « mode » qui s'applique aux éléments « xsl:apply-templates » et « xsl:template ». La règle est très simple : si votre élément « xsl:apply-templates » a une valeur d'attribut pour « mode », alors seuls les éléments « xsl:template » ayant la même valeur d'attribut pour « mode » s'appliquent. On utilise souvent l'attribut « mode » pour faire des tables des matières.

Prenons, par exemple, la liste de cours suivants :

<?xml version="1.0" encoding="ISO-8859-1" ?> <universite> <cours><nom>INF 102 Introduction avancée</nom> <description>Un cours d'introduction à l'informatique pour futurs ingénieurs.</description></cours> <cours><nom>INF 101 Introduction</nom> <description>Un cours d'introduction à l'informatique pour les étudiants en éducation.</description></cours> <cours><nom>INF 103 Java</nom> <description>Un cours d'introduction au Java</description></cours> </universite>

Nous pourrions vouloir que s'affiche d'abord seulement la liste des noms de cours et que cette dernière soit suivie d'une liste détaillée comprenant le nom et la description du cours :

La liste des cours en bref:

  • INF 102 Introduction avancée
  • INF 101 Introduction
  • INF 103 Java

La liste détaillée des cours:

  • INF 102 Introduction avancée: Un cours d'introduction à l'informatique pour futurs ingénieurs.
  • INF 101 Introduction: Un cours d'introduction à l'informatique pour les étudiants en éducation.
  • INF 103 Java: Un cours d'introduction au Java

Nous pouvons obtenir ce résultat avec le document XSLT suivant qui utilise l'attribut « mode » :

<?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="universite"> <html><body> <p>La liste des cours en bref:</p> <ul> <xsl:apply-templates select="cours" mode="initial" /> </ul> <p>La liste détaillée des cours:</p> <ul> <xsl:apply-templates select="cours" mode="complet" /> </ul> </body></html> </xsl:template> <xsl:template match="cours" mode="initial"> <li><xsl:value-of select="nom" /></li> </xsl:template> <xsl:template match="cours" mode="complet"> <li><xsl:value-of select="nom" /> : <xsl:value-of select="description" /></li> </xsl:template> </xsl:stylesheet>


© Daniel Lemire, 2014. Tous droits réservés.