XSL : Atteindre un element en boucle
Bonjour,
Je me bloque dans ce scénario que je n'arrive pas a le reproduire en XSL.
J'ai un fichier XML :
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="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:
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.