Afficher du XML 2
Le XSL possède beaucoup de fonctionnalités que nous allons voir tout de suite.

Filtrer les données


Le XSL permet de filtrer les données pour n'en afficher que certaines. Pour ce faire, nous utiliserons l'attribut: select="chemin_d_acces[balise='yyy']" le "=" représente l'opérateur. Les différents opérateurs utilisés en XML sont les suivants:
= égal
!= différent
> plus grand
< plus petit

Comme d'habitude, un petit exemple : Fichier XML: on garde le même fichier que le précédent. A savoir :

<?xml version="1.0"?>
<composition>
<chanson>
<titre>3 nuits par semaine</titre>
<artiste>Indochine </artiste>
</chanson>
<chanson>
<titre>The living daylights</titre>
<artiste>A-Ha</artiste>
<titre>Ceremonia</titre>
<artiste>Indochine</artiste>
</chanson>
<chanson>
<titre>20 years</titre>
<artiste>Placebo</artiste>
</chanson>
</composition>

Voici maintenant le fichier XSL qui lui est associé:

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="2" cellspacing="2">
<tr>
<td>Titre</td>
<td>Artiste</td>
</tr>
<xsl:for-each select="composition/chanson[artiste='Indochine']">
<tr>
<td><xsl:value-of select="titre"/></td>
<td><xsl:value-of select="artiste"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

Et voici le résultat de notre (dur) labeur:
exemple de XML
Comme vous avez pu le remarquer, ce n'est qu'un dérivé du tri par ordre alphabétique. Passons maintenant à un autre point.

Choisir avec le XSL


En fait, ces deux rubriques auraient pu être mises en une car c'est la même chose que nous allons faire mais d'une manière différente. Nous avons vu précédemment comment trier avec le XSL grâce à un attribut de la balise for-each. Nous allons maintenant employer une autre balise pour arriver au même résultat. Voici la balise que nous allons utiliser:
<xsl:if match =."[balise='xyy']">
...code... </xsl:if>

Exemple avec notre fichier de chansons:
Fichier XSL :

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="2" cellspacing="2">
<tr>
<td>Titre</td>
<td>Artiste</td>
</tr>
<xsl:for-each select="composition/chanson">
<xsl:if match=".[artiste='Indochine']">
<tr>
<td><xsl:value-of select="titre"/></td>
<td><xsl:value-of select="artiste"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

Quand au résultat, il est identique:
exemple de XML

Et quelle méthode dois-je utiliser?
Vous pouvez utiliser celle que vous voulez. Je vous ai expliqué les deux pour que vous les connaissiez. Il y a certaines situations où il vaut mieux utiliser plutôt l'une que l'autre. C'est à vous de juger.

N'oubliez plus d'inclure votre fichier XSL dans le document XML.


Le XML permet d'aller plus loin dans les choix. En effet, XSL possède l'équivalent de if et else. La balise correspondante est la suivante:
<xsl:choose> pour une condition vérifiée (if)
<xsl:otherwise> pour une condition fausse (else).

Voici leur syntaxe:

<xsl:choose>
<xsl:when condition=".[balise='xxx']">
...actions à effectuer...
</xsl:when>
<xsl:otherwise>
...actions à affectuer si la condition est fausse...
</xsl:otherwise>
</xsl:choose>

Comme d'habitude, voici un petit exemple. Ce fichier va canger le fond de couleur de la cellule suivant le nom du chanteur. On garde bien évidemment le même fichier XML. Voici maintenant le code du fichier XSL:

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="2" cellspacing="2">
<tr bgcolor="#019a09">
<td>Titre</td>
<td>Artiste</td>
</tr>
<xsl:for-each select="composition/chanson">
<xsl:choose>
<xsl:when test=".[artiste='Indochine']">
<tr bgcolor="#ffff00">
<td><xsl:value-of select="titre"/></td>
<td><xsl:value-of select="artiste"/></td>
</tr>
</xsl:when>
<xsl:otherwise>
<tr bgcolor="#00ff00">
<td><xsl:value-of select="titre"/></td>
<td><xsl:value-of select="artiste"/></td>
</tr>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

Voici le résultat:
exemple_XML

Le fond de ligne contenant des chansons d'Indochine est devenu jaune et, pour les autres artistes, le fond est devenu vert.

back   next

Creative Commons License
Sauf mention contraire, le contenu de cette page est sous licence Creative Commons
Page générée en 0.4491 secondes.
Retour en haut de la page
Imprimer cette page