J'ai refait mon message en plus lisible...
Je me demande, s'il ne faudrait pas modifier le use de la key en ajoutant un truc ressemblant à ancestor::NameRM.
Si quelqu'un a une petite idée, ça serait sympatoche (car je patauge un peu..)
Merci!!
Bonjour,
J'ai besoin d'un petit coup de pouce pour des histoires de cumul, s'il vous plaît..
J'ai ce fichier xml :
J'ai besoin de sommer les Val par Mat distincte pour chaque RM.
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 <xml> <Extraction> <ListeRM> <RM> <NameRM>RM1</NameRM> <Cbs> <Cb>RM1-C1</Cb> <ListeP> <Pt> <Val>20</Val> <Mat>3Y</Mat> </Pt> </ListeP> </Cbs> <Cbs> <Cb>RM1-C2</Cb> <ListeP> <Pt> <Val>35</Val> <Mat>4Y</Mat> </Pt> <Pt> <Val>40</Val> <Mat>3Y</Mat> </Pt> </ListeP> </Cbs> </RM> <RM> <NameRM>RM2</NameRM> <Cbs> <Cb>RM2-C1</Cb> <ListeP> <Pt> <Val>15</Val> <Mat>2Y</Mat> </Pt> <Pt> <Val>20</Val> <Mat>3Y</Mat> </Pt> </ListeP> </Cbs> <Cbs> <Cb>RM2-C2</Cb> <ListeP> <Pt> <Val>35</Val> <Mat>4Y</Mat> </Pt> <Pt> <Val>50</Val> <Mat>3Y</Mat> </Pt> </ListeP> </Cbs> </RM> </ListeRM> </Extraction> </xml>
J'ai cette feuille xsl :
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 <xsl:key name="key-mat" match="Pt" use=".//Mat"/> <xsl:template match="/xml/Extraction"> <xsl:for-each select="ListeRM/RM"> <xsl:variable name="NameRM" select="normalize-space(NameRM)"/> <Nom> <xsl:value-of select="$NameRM"/> </Nom> <xsl:call-template name="fct"/> </xsl:for-each> </xsl:template> <!-- ============================ --> <xsl:template name="fct"> <xsl:for-each select="Cbs/ListeP/Pt[generate-id(.) =generate-id(key('key-mat',.//Mat)[1] )]"> <Mat> <xsl:value-of select=".//Mat"/> </Mat> <Cumul> <xsl:value-of select="sum(//Pt[.//Mat=current()/.//Mat]/Val)"/> </Cumul> </xsl:for-each> </xsl:template>
J'arrive à ce résultat : En fait, ça fait abstraction du regroupement par RM :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <Nom>RM1</Nom> <Mat>3Y</Mat><Cumul>130</Cumul> <Mat>4Y</Mat><Cumul>70</Cumul> <Nom>RM2</Nom> <Mat>2Y</Mat><Cumul>15</Cumul>
Alors que je voudrai arriver à ça :
Je ne pense pas en être très loin. Il doit y avoir un problème au niveau de la définition de la key.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <Nom>RM1</Nom> <Mat>3Y</Mat><Cumul>60</Cumul> <Mat>4Y</Mat><Cumul>35</Cumul> <Nom>RM2</Nom> <Mat>2Y</Mat><Cumul>15</Cumul> <Mat>3Y</Mat><Cumul>70</Cumul> <Mat>4Y</Mat><Cumul>45</Cumul>
Ma feuille fonctionne lorsque je n'ai qu'un RM. Dés que j'ai plusieurs RM, et bien je les prends tout simplement pas en compte!
Par avance, merci beaucoup pour votre aide.
Cha
Partager