Bonjour,
Dans le cadre d'un cours portant sur le XML auquel je suis inscrit, je dois transformer le document suivant :
Je dois, à l'aide d'un document XSLT nommé "class.xsl", compter le nombre d’étudiants dans chaque cours et calculer la moyenne par cours. De plus,
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 <?xml version="1.0" encoding="ISO-8859-1" ?> <?xml-stylesheet href="class.xsl" type="text/xsl" ?> <université> <étudiant> <nom>Réjean Tremblay</nom> <cours sigle="INF8430" note="89" /> <cours sigle="INF1030" note="69" /> <cours sigle="INF1230" note="75" /> </étudiant> <étudiant> <nom>Martin Lambert </nom> <cours sigle="INF8430" note="75" /> <cours sigle="INF1030" note="72" /> <cours sigle="INF1230" note="73" /> </étudiant> <étudiant> <nom>Luc Alain</nom> <cours sigle="INF9430" note="39" /> <cours sigle="INF1030" note="89" /> <cours sigle="INF1230" note="79" /> </étudiant> <étudiant> <nom>Olive Saint-Amant</nom> <cours sigle="INF8430" note="91" /> <cours sigle="INF1230" note="99" /> </étudiant> </université>
je ne peux pas utiliser les éléments « xsl:key » ou la fonction XPath « key » dans ma solution.
J'ai donc rédigé le document XSLT suivant :
Je suis donc capable d'identifier les sigles des différents cours et de calculer le nombre d'étudiants par cours. Cependant, malgré plusieurs essais, je reste incapable de calculer la moyenne des différents cours.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:template match="nom"> <html><body></body></html> </xsl:template> <xsl:template match="//cours"> <xsl:if test="generate-id((//cours[@sigle=current()/@sigle])[1]) = generate-id(.)"> <p> Il y a <xsl:value-of select="count(//cours[@sigle=current()/@sigle])"/> étudiants inscrits au cours <xsl:value-of select="@sigle"/>. Leur moyenne cummulative est donc de : <xsl:value-of select="(count(//cours/@note[@sigle=current()/@sigle]))div(count(//cours[@sigle=current()/@sigle]))"/> </p> </xsl:if> </xsl:template> </xsl:stylesheet>
Ça fait plusieurs jours, que je bosse sur ce problème. Quelqu'un pourrait-il m'aider et m'enligner vers la solution?
Merci beaucoup!!
Partager