Bonjour,

Je suis nouveau dans l'utilisation du XSLT et j'ai beaucoup de difficulté à faire ce dont j'ai besoin. J'ai un document XML semblable à ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="class1.xsl" type="text/xsl" ?>
<aaa>
	<bbb><nom>Pierre Tremblay</nom>
		<ddd no="1111" montant="10" />
		<ddd no="3333" montant="20" />
		<ddd no="2222" montant="30" />
	</bbb>
	<bbb><nom>Roger Lamothe</nom>
		<ddd no="1111" montant="10" />
		<ddd no="2222" montant="20" />
	</bbb>
</aaa>

Comment puis-je arriver à regrouper tous les attributs "no" indentique et faire la somme des attributs montant?

Par exemple pour me sortir un tableau semblable à ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
NO          COUNT    SUM
1111         2           20
2222         2           50
3333         1           20
J'ai essayé ceci, mais on m'affiche toujours le contenu du tag "nom". Qu'est-ce qui n'est pas correct?

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
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="aaa">
<html>
<body>
<table border="1">
<xsl:apply-templates select="*" />
</table>
</body>
</html>
</xsl:template>
 
<xsl:template match="ddd">
<xsl:if 
test="generate-id(//ddd[@no=current()/@no]) 
= generate-id(.)" >
<tr>
<td><xsl:value-of select="current()/@no" /></td> 
<td><xsl:value-of select="count(//ddd[@no=current()/@no])" /></td></tr>
</xsl:if>
</xsl:template>
 
</xsl:stylesheet>
Merci beaucoup.