Afficher du XML 1
Voici tout d'abord un autre exemple du même genre que celui de la page présécente:

<?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>
</chanson>
<chanson>
<titre>Ceremonia</titre>
<artiste>Indochine</artiste>
</chanson>
<chanson>
<titre>20 years</titre>
<artiste>Placebo</artiste>
</chanson>
</composition>

Nous allons maintenant créer un document XSL qui va afficher le fichier XML sous forme de tableau. Essayons ceci:

<?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>
<tr>
<td><xsl:value-of select="composition/chanson/titre"/></td>
<td><xsl:value-of select="composition/chanson/artiste"/></td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

On l'enregistre en .xsl et on n’oublie pas de rajouter la balise du XSL dans le fichier XML:

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

On ouvre le fichier XML et voici ce qui s’affiche :
exemple xml

Mais ??? Je voulais que toutes les chansons s’affiche moi ! Il doit y avoir un problème quelque part !
En effet, vous avez demander à ce que soit affiché le contenu d'une balise or il y en avait plusieurs. Votre navigateur n'a pas su laquelle afficher et il n'en a pas affiché ou a indiqué une erreur.

Mais comment afficher toutes les chansons?
Pour ce faire, on va utiliser une autre balise "for-each select". Ce qui signifie "pour chaque sélection". Voici le fichier XSL un peu modifié:

<?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">
<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>

Voici ce qui s'affiche:
exemple XML
C'est déjà un peu mieux, non ?
En fait, le for-each est à peu près l'équivalent de la boucle while du PHP sauf que for-each est intelligent et s'arrête automatiquement une fois qu'il a listé toutes les balises.

: Il est évident que l'on peut faire beaucoup plus esthétique en rajoutant de la couleur dans le fond de la cellule mais ce ne sont que des détails.


Trier en XSL


Le XSL permet (entre autres) de trier les données du fichier XML auquel il est associé en ordre croissant ou décroissant. L'attribut utilisé est plus qu'extrêmement simple! Le voici : order-by=-balise" ordre décroissant (-) order-by=+balise" ordre croissant (+) Il est souvent utilisée comme attribut de la balise "for-each ou "value-of select".

EXERCICE
Petit exercice plus que simple. Reprenez le fichier XSL vu précédemment et triez le titre des chansons par ordre alphabétique (ordre croissant). Il n'y a rien de plus simple. C'est parti !!!
...
...
Correction?
Le fichier XMl ne change bien évidemment pas. On modifie un peu le fichier XSL comme ceci :

<?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" order-by="+titre">
<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:
exemple XML
Avouez que ce n'était pas compliqué. C'était même simplissime.



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.3376 secondes.
Retour en haut de la page
Imprimer cette page