Liste des différentes valeurs d'un sous élement dans une liste
Bonjour
Depuis quelques jours je bute sur une transformation XML qui pourtant me semble classique car elle me fait penser à une rotation lignes-colonnes. Pourtant je ne trouve pas de documentation qui m'aiderait à résoudre mon problème que j'expose ci-dessous. Mais je ne recherche peut-être pas avec les bons mots-clefs.
J'aurais besoin, à partir d'un XML dont les éléments "date" contiennent des éléments prévision de températures sur différentes villes, de fabriquer un tableau HTML avec les dates en colonnes et une ligne pour chaque ligne.
C'est à dire j'ai un XML de cette forme
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
<racine>
<dates>
<date jour="jour1">
<prevision>
<ville>ville1</ville>
<temperature>15<temperature>
<vent>S-O</vent>
</prevision>
<prevision>
<ville>ville2</ville>
<temperature>13<temperature>
<vent>N-O</vent>
</prevision>
<prevision>
...
</prevision>
</date>
<date jour="jour2">
<prevision>
<ville>ville1</ville>
<temperature>18<temperature>
<vent>S-E</vent>
</prevision>
<prevision>
<ville>ville2</ville>
<temperature>15<temperature>
<vent>N</vent>
</prevision>
<prevision>
...
</prevision>
</date>
<date>
...
</date>
</dates>
</racine> |
Que je voudrais transformer en un tableau HTML de ce genre
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
<table>
<tbody>
<tr>
<th> </th>
<th colspan="2"> Jour 1 </th>
<th colspan="2"> jour 2 </th>
...
</tr>
<tr>
<th> </th>
<th>T°</th>
<th>Vent</th>
<th>T°</th>
<th>Vent</th>
...
</tr>
<tr>
<th> Ville 1 </th>
<td> 15 </td>
<td> S-O </td>
<td> 13 </td>
<td> N-O </t>
...
</tr>
<tr>
<th> Ville 2 </th>
<td> 18 </td>
<td> S-E </td>
<td> 15 </td>
<td> N </t>
...
</tr>
....
</tbody>
</table> |
Pour afficher un tableau comme ci-dessous
-------------------------------
! jour 1 ! jour 2 ! ...
-------------------------------
! t°C ! vent ! t°C ! vent ! ...
-----------------------------------------
! ville 1 ! 15 ! S-O ! 13 ! N-O ! ...
-----------------------------------------
! ville 2 ! 18 ! S-E ! 15 ! N ! ...
-----------------------------------------
! ... ! ! ! ! ! ...
-----------------------------------------
A priori, je ne connais pas le nombre de jours ni le nombre de villes.
Je n'ai pas de problème pour créer les colonnes grâce à xsl-for-each sue l'élément "date".
En revanche je n'arrive pas à créer les lignes correspondant aux villes.
Je suppose qu'il faudrait que je crée une liste contenant une seule fois chaque ville.
Je me suis orienté vers xsl:key, mais sans succès jusqu'à présent.
Quelqu'un saurait-il m'aiguiller dans la bonne direction ou vers un page traitant un sujet semblable ?
Merci
_Rainbow