Bonjour, je cherche à calculer une moyenne sur base d’attributs :

A partir d’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
<?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 cherche à obtenir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<maliste>
<cours sigle="INF8430">85</cours>
<cours sigle="INF1030">76.66666666666667</cours>
<cours sigle="INF1230">81.5</cours>
<cours sigle="INF9430">39</cours>
</maliste>
J’ai notamment essayé ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<maliste>
{for $s in distinct-values(doc("Ex2.xml")//@sigle)
return
<cours sigle="$s">
{avg(for $n in {cours[current()/@sigle=@sigle]/@note}
return $n)
}
</cours>
}
</maliste>
Et ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<maliste>
{for $s in distinct-values(doc("Ex2.xml")//@sigle)
return
<cours sigle="$s">
{avg(for $n in ./@note
return $n)
}
</cours>
}
</maliste>

Bref, après plusieurs tentatives de codes différents, il me semblait que celui-ci était le plus (simple) logique :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<maliste>
{for $c in doc("Ex2.xml")/universite/etudiant/cours
return
<cours sigle="{($c/@sigle)[1]}">
{avg(for $n in $c/@note
return $n)
}
</cours>
}
</maliste>
Mais, à mon grand désespoir , il ne me retourne que ça :
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="UTF-8"?
<maliste>
   <cours sigle="INF8430">89</cours>
   <cours sigle="INF1030">69</cours>
   <cours sigle="INF1230">75</cours>
   <cours sigle="INF8430">75</cours>
   <cours sigle="INF1030">72</cours>
   <cours sigle="INF1230">73</cours>
   <cours sigle="INF9430">39</cours>
   <cours sigle="INF1030">89</cours>
   <cours sigle="INF1230">79</cours>
   <cours sigle="INF8430">91</cours>
   <cours sigle="INF1230">99</cours>
</maliste>
Quelque chose doit m’échapper, pouvez-vous m’éclairer ?

Un grand merci d'avance !

Radu