Transformation XSLT/XML/HTML

EMSIEN Messages postés 194 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 11 juin 2009 - 23 mai 2008 à 18:09
EMSIEN Messages postés 194 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 11 juin 2009 - 28 mai 2008 à 14:03
Bonjour tout le monde,

Tout d'abrd, je n'ai pas trouvé une rubrique spécial XML/XSLT..., donc puisque je suis sous JSP, j'ai posé la question ici.

J'ai un fichier Xml qui ressemble à ça :
<?xml version="1.0" encoding="ISO-8859-1"?>
<Root name="nomRoot" >
    <Operation Att1="A" Att2="B" Att3="1" />
    <Operation Att1="C" Att2="D" Att3="2" />
....
    <Operation Att1="A" Att2="B" Att3="3" />
    <Operation Att1="A" Att2="B" Att3="4" />
</Root>

Puis voici une partie de mon fichier XSLT :
...
<xsl:template match="Root">
  <xsl:for-each select="Delete">
   <center>
           ----

                  <xsl:value-of select="Att1" />
       ,
                  <xsl:value-of select="Att2" />
       ,
      
           ----

                        <xsl:value-of select="@Att3" />
           ,
     
     

 </center>
</xsl:for-each>
</xsl:template>
...

Après la transformation je récupère pour chaque element Operation un tableau HTML avec deux lignes (la première contenant Att1 et Att2, et la deuxième seulement Att3): comme ça :
 ______________________________
|    A                  |        B                        |
|______________________________|
|                            1                              |   
|______________________________|
 ______________________________

|    C                    |        D                      |

|______________________________|

|                            2                              |   

|______________________________|
 
______________________________

|    A                     |            B                 |

|______________________________|

|                              3                            |   

|______________________________|

 
______________________________


|    A                     |            B                 |


|______________________________|


|                              4                            |   


|______________________________|

mais ce que je voudrai faire, c'est que si j'ai dans mon fichier XML plusieurs lignes qui ont les même valeurs dans Att1 & Att2 qu'il me mettent tous les Att3 dans un seul tableau, au lieu de chaque tableau à part, une sorte de Group By, comme ça :
 ______________________________

|    A                  |        B                        |

|______________________________|

|                            1                              |   

|                            3                              |

|                            4                              |

|______________________________|

 ______________________________


|    C                    |        D                      |


|______________________________|


|                            2                              |   


|______________________________|

Je voudrais savoir qu'est ce que je dois changer dans mon fichier XSLT pour atteindre ce résultat ?

J'espère que j'étais clair dans ma question.

2 réponses

dj200812002 Messages postés 15 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 5 octobre 2009
27 mai 2008 à 16:35
______________________________
|    A                  |        B                        |
|______________________________|
|                            1                              |   
|                            3                              |
|                            4                              |
|______________________________|
 ______________________________
|    C                    |        D                      |
|______________________________|
|                            2                              |   
|______________________________|

pour faite ce résultat.

1- tu doit avoir deux templates. Root + une autre qui vas recevoir en paramétre le Att1 du paramétre Position().
2- la deuxiéme template elle vas chercher s'il y a un count > 0 du Position() jusqu'a la fin du paramétre Reçu.
3- dans la template Root tu a bien sur une For-each qui appéle la deuxieme template et qui test sur le count envoyé par la deuxiéme.
je sais pas exactement est ce que je suis claire dans mes explication. sinon je vais t'écrire un bout de code.
0
EMSIEN Messages postés 194 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 11 juin 2009
28 mai 2008 à 14:03
Merci pour ta réponse, mais si tu peux m'écrire le code correspondant ça sera super.
0
Rejoignez-nous