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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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></th>
            <th>Vent</th> 
            <th></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