[XSLT]Problèmes pour regrouper selon l'attribut
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:
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:
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:
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.