Aller au contenu

Transformation XSLT


CyberjujuM

Sujets conseillés

Bonjour,

Je débute avec XML et XSL.

Je me sers actuellement d'XSL pour créer une grille de diffusion des épisodes d'un dessin animé, classée par jour et par heure.

Voici mon premier résultat : http://codelyoko.fr/canalj/grille.php

Avec le code suivant :

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table border="1" cellspacing="0" cellpadding="3">
<tr bgcolor="#ffffcc">
<td>Jour</td>
<td>Heure</td>
<td>Episode</td>
</tr>
<xsl:for-each select="GRILLE_PRG/PRG_S/PRG[@TTPRG='CODE LYOKO']/EPI_S/EPI/DIFF_S/DIFF">
<xsl:sort select="@DATE"/>
<xsl:sort select="@HD"/>
<tr>
<td><xsl:value-of select="@DATE"/></td>
<td><xsl:value-of select="@HD"/></td>
<td><xsl:value-of select="../../@TTEPI"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

Je voudrais maintenant améliorer le tableau et opter pour une présentation du genre

------------------------------------

Jour

------------------------------------

Heure : épisode

Heure : épisode

------------------------------------

Jour

------------------------------------

Heure : épisode

Heure : épisode

Heure : épisode

------------------------------------

etc...

C'est là que je bloque... voici ce que je suis arrivé a faire :blush::( : http://codelyoko.fr/canalj/grille2.php

Ca commence bien, sauf que je n'arrive pas a tester si j'ai déjà traité une date ou pas, du coup il y a plein de doublons... et vers le milieu/la fin de la page les heures ne correspondent plus.

Voila le code du xsl :

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table border="1" cellspacing="0" cellpadding="3">
<xsl:for-each select="GRILLE_PRG/PRG_S/PRG[@TTPRG='CODE LYOKO']/EPI_S/EPI/DIFF_S/DIFF">
<xsl:sort select="@DATE"/>
<xsl:sort select="@HD"/>
<xsl:variable name="date" select="@DATE"/>
<tr>
<td><xsl:value-of select="@DATE"/></td>
</tr>
<xsl:for-each select="../../../EPI[DIFF_S/DIFF/@DATE=$date]">
<tr>
<td><xsl:value-of select="DIFF_S/DIFF/@HD"/></td>
<td><xsl:value-of select="@TTEPI"/></td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

Je précise que je ne peux pas modifier le xml pour le rendre plus... pratique :D

Si quelqu'un peut m'éclairer un peu... merci beaucoup :):)

Modifié par CyberjujuM
Lien vers le commentaire
Partager sur d’autres sites

Il faudrait voir le xml pour se faire une idée précise mais peut être le xml devrait être modifié pour avoir un regroupement par date à ce niveau ce qui faciltera le xsl....et sans dénaturer le fait que le xml ne doive contenir que des données et pas de présentation...

Lien vers le commentaire
Partager sur d’autres sites

Le XML est celui que vous pouvez voir via affichage/source... il est super fouillis mais je ne peux pas y toucher, c'est celui de canalj ^^

Justement je comptais sur la magie du XSL pour pouvoir réorganiser un peu tout ça ;)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...