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..:cry:)
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:
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:
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:
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:
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