Bonjour à tous !
J'ai ceci en entrée :
Que j'aimerais transformer en quelque chose de la sorte :
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 <DETAILSSS> <DETAIL LINE="1" TYP=A"> <DONNEE_A>aaa</DONNEE_A> <DONNEE_B>bbb</DONNEE_B> <DONNEE_C> <DONNEE_D>ccc</DONNEE_D> <DONNEE_E>111</DONNEE_E> </DONNEE_C> </DETAIL> <DETAIL LINE="2" TYP=A"> <DONNEE_A>abc</DONNEE_A> <DONNEE_B>bcd</DONNEE_B> <DONNEE_C> <DONNEE_D>cccaaa</DONNEE_D> <DONNEE_E>111</DONNEE_E> </DONNEE_C> </DETAIL> <DETAIL LINE="3" TYP=B"> <DONNEE_A>aaabbb</DONNEE_A> <DONNEE_B>bbbttt</DONNEE_B> <DONNEE_C> <DONNEE_D>ccczzz</DONNEE_D> <DONNEE_E>222</DONNEE_E> </DONNEE_C> </DETAIL> </DETAILSSS>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <INFO DONNEE_E=111> <LINE 1 DONNEE_A=aaa DONNEE_B=bbb/> <LINE 2 DONNEE_A=abc DONNEE_B=bcd/> </INFO> <INFO DONNEE_E=222> <LINE 3 DONNEE_A=aaabbb DONNEE_B=bbbttt/> </INFO>
Mon problème c'est que je n'arrive pas à appliquer mon template :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <xsl:key name="groups" match="/DETAILSSS/DETAIL" use="DONNEE_C/DONNEE_E" /> <xsl:apply-templates select="DETAILSSS"/> <xsl:template match="DETAILSSS"> <xsl:apply-templates select="result[generate-id() = generate-id(key('groups', DONNEE_C/DONNEE_E)[1])]"/> </xsl:template> <xsl:template match="DETAIL"> <xsl:element INFO> <xsl:attribute name="DONNEE_E"><xsl:value-of select="DONNEE_C/DONNEE_E"/></xsl:attribute> <xsl:for-each select="key('groups', DONNEE_C/DONNEE_E)"> <xsl:attribute name="DONNEE_A"><xsl:value-of select="../../DONNEE_A"/></xsl:attribute>
Bref je pense que je suis sur la bonne voie, cependant je n'arrive pas à appliquer le template, rien ne s'affiche, aucun élément INFO.
Je ne sais pas comment l'appeler en fait, ou alors ma méthode n'est pas la plus adéquate.
Auriez vous une idée ?
Merci à vous !![]()
Partager