Jump to content

Recommended Posts

Posted (edited)

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 :):)

Edited by CyberjujuM
Posted

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...

Posted

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 ;)

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...