Bonjour,

Je me bloque dans ce scénario que je n'arrive pas a le reproduire en XSL.

J'ai un fichier XML :

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="UTF-8"?>
<?xml-stylesheet href="releve_style2.xsl" type="text/xsl"?>
<releve filiere="RT" niveau="4">
    <etudiant numInscription="E2006-12" nom="scott">
        <module code="INFO33" titre="programmation">
            <controle date="2006-11-11" note="12"/>
            <controle date="2006-12-11" note="16"/>
        </module>
        <module code="RES22" titre="Réseaux">
            <controle date="2006-11-12" note="10"/>
            <controle date="2006-12-12" note="11"/>
        </module>
    </etudiant>
    <etudiant numInscription="E2006-14" nom="tiger">
        <module code="INFO33" titre="programmation">
            <controle date="2006-11-11" note="13"/>
            <controle date="2006-12-11" note="8"/>
        </module>
        <module code="RES22" titre="Réseaux">
            <controle date="2006-11-12" note="18"/>
            <controle date="2006-12-12" note="14"/>
        </module>
    </etudiant>
</releve>
Je souhaite faire un rendu HTML en XSL de la forme suivante :

- Code module : INFO33
- Titre module : programmation

un tableau à 2 colonnes (Nom étudiant / Moyenne)
Nom étudiant | Moyenne
Scott 14
Tiger 10.5

Ma feuille de style est la suivante :

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
 
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="html"/> 
	<xsl:template match="/"> 
        <html>
            <head>
                <title>Relevés des notes</title>
            </head>
            <body>
 
	<xsl:for-each select="releve"> 
			<xsl:for-each select="etudiant"> 
				<xsl:for-each select="module"> 
					<li>Code module : <xsl:value-of select="@code"/> </li>
					<li>Titre module : <xsl:value-of select="@titre"/> </li>
				</xsl:for-each> 
				<table border="1" width="60%">
					<tr>
						<td width="70%" bgColor="yellow" align="center"><b>Nom etudiant</b></td>
						<td width="30%" bgColor="yellow" align="center"><b>Moyenne</b></td>
					</tr>
					<xsl:for-each select="/"> 
					<tr>
						<td><xsl:value-of select="@nom"/> </td>
						<td><xsl:value-of select="sum(module/controle/@note)"/> </td>
					</tr>
					</xsl:for-each> 
				</table>
			</xsl:for-each>
		<br/><br/>
 
	</xsl:for-each> 
 
            </body>
        </html>
	</xsl:template>
</xsl:stylesheet>
Ma question : Je ne vois pas comment je peux avoir les élément Module non double avec le Étudiant de chaque module et je n'arrive pas à imaginer comment je doit procéder dans la boucle pour à la fois regrouper les module et voir le niveau supérieur qui est Étudiant pour avoir ces infos.

Merci d'avance.