• Aucun résultat trouvé

Afin de déclarer une variable, il convient d'utiliser la fonction <xsl:variable />. Cette fonction accepte deux attributs : Name : c'est le nom que l'on souhaite donner à notre variable, ce nom va nous permettre de l'identifier de manière unique. Select : cet attribut optionnel accepte soit une expression XPath qui permet de sélectionner la valeur que l'on souhaite stocker dans notre variable, soit une chaîne de caractères.

La syntaxe pour déclarer une variable est donc la suivante : Code : XML

<xsl:variable name="nom_de_la_variable" select="expression XPath|chaîne de caractères" />

Pour pouvoir utiliser une variable et récupérer la valeur qu'elle contient, il convient de faire précéder son nom par le symbole "$".

Exemple

Afin d'illustrer ce que nous venons d'apprendre sur les variables, je vous propose de voir ensemble quelques exemples. Dans notre premier exemple, nous allons créer une variable qui contiendra une chaîne de caractères et nous l'afficherons dans une balise paragraphe d'une document HTML :

Code : XML

<xsl:template match="/">

<xsl:variable name="couleur" select="'rouge'" />

<html>

<title>Test des variables</title> </head>

<body>

<p><xsl:value-of select="$couleur" /></p> </body>

</html>

</xsl:template>

Comme vous pouvez le constater, dans ce template, nous déclarons une variable qui s'appelle "couleur" et qui contient la chaîne de caractères "rouge" :

Code : XML

<xsl:variable name="couleur" select="'rouge'" />

Puisque la valeur "rouge" est une chaîne de caractères, il est impératif de la mettre entre ' (guillemets simples) afin de ne pas la confondre avec une expression XPath.

Pour pouvoir afficher la valeur contenue dans la variable dans notre document HTML, il suffit simplement de faire précéder son nom par le symbole $ :

Code : XML

<xsl:value-of select="$couleur" />

Le document HTML produit par notre transformation est le suivant : Code : HTML <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Test de la fonction sort</title>

</head>

<body>

<p>rouge</p>

</body> </html>

A noter : il existe une autre façon de définir la valeur d'une variable lorsque celle-ci ne provient pas d'une expression XPath : Code : XML

<xsl:variable name="nom">chaîne de caractères</xsl:variable>

Ainsi, pour le même document HTML final, nous aurions pu écrire le template suivant : Code : XML

<xsl:template match="/">

<xsl:variable name="couleur">rouge</xsl:variable>

<html>

<head>

<title>Test des variables</title> </head>

<body>

<p><xsl:value-of select="$couleur" /></p> </body>

</html>

</xsl:template>

Pour notre second exemple, nous allons construire un template dans la valeur des variables sera alimentées par une expression XPath. Pour illustrer notre exemple, nous allons exploiter le document XML suivant :

Code : XML

<?xml version="1.0" encoding="UTF-8" ?>

<?xml-stylesheet type="text/xsl" href="transformation.xsl" ?> <repertoire>

<!-- John DOE -->

<personne sexe="masculin">

<nom>DOE</nom>

<prenom>John</prenom>

</personne>

<!-- Marie POPPINS --> <personne sexe="feminin">

<nom>POPPINS</nom>

<prenom>Marie</prenom>

</personne>

<!-- Batte MAN -->

<personne sexe="masculin">

<nom>MAN</nom>

<prenom>Batte</prenom>

</personne> </repertoire>

Dans cette exemple, nous allons déclarer 3 variables :

La variable sexe qui contiendra le sexe d'une personne. La variable nom qui contiendra le nom d'une personne. La variable prenom qui contiendra le prénom d'une personne.

Le but de notre template est alors d'afficher le sexe, le prénom et le nom de chaque personne contenue dans le document XML : Code : XML

<xsl:template match="/">

<html>

<head>

<title>Test des variables</title> </head>

<body>

<xsl:for-each select="repertoire/personne">

<xsl:variable name="sexe" select="@sexe" />

<xsl:variable name="nom" select="nom" />

<xsl:variable name="prenom" select="prenom" />

<p><xsl:value-of select="$nom"/>&#160;<xsl:value-of

select="$prenom"/> : <xsl:value-of select="$sexe"/></p> </xsl:for-each>

</body>

</html>

</xsl:template>

Dans ce template, nous parcourons l'ensemble des personnes contenues dans le document XML à l'aide de la fonction

<xsl:for-each />, puis nous déclarons 3 variables dont les valeurs sont renseignées à l'aide d'expressions XPath. Grâce à la fonction <xsl:value-of />, il est ensuite très simple d'afficher le contenu de la variable.

Documents relatifs