2015-12-30 13 views
0

У меня проблема со средним столбцом. Я должен дать средний курс. С этим XSLT у меня есть результат NaN.Среднее значение в XSLT

Вот мой XML-файл:

<universite> 
<etudiant><name>Roger Tremblay</nom> 
<cours sigle="INF8430" note="89" /> 
<cours sigle="INF1030" note="69" /> 
<cours sigle="INF1230" note="75" /></etudiant> 
<etudiant><nom>Martin Lambert</nom> 
<cours sigle="INF8430" note="75" /> 
<cours sigle="INF1030" note="72" /> 
<cours sigle="INF1230" note="73" /></etudiant> 
<etudiant><nom>Luc Alain</nom> 
<cours sigle="INF9430" note="39" /> 
<cours sigle="INF1030" note="89" /> 
<cours sigle="INF1230" note="79" /></etudiant> 
<etudiant><nom>Olive Saint-Amant</nom> 
<cours sigle="INF8430" note="91" /> 
    <cours sigle="INF1230" note="99" /></etudiant> 
</universite> 

И мой файл XSLT:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:key name="montableau" match="cours" use="@sigle"/> 
<xsl:template match="universite"> 
<html><body> 
<table border="1"> 
    <tr bgcolor="#9acd32"> 
     <th style="text-align:left">Sigle</th> 
     <th style="text-align:left">Nombre d'étudiants</th> 
     <th style="text-align:left">Moyenne du cours</th> 
     </tr> 
    <xsl:for-each select="//cours" > 
    <xsl:sort select="@sigle" order="ascending" data-type="text" /> 
    <xsl:if test="generate-id(.)=generate-id(key('montableau',@sigle)[1])"> 
    <tr> 
    <td><xsl:value-of select="@sigle" /></td> 
    <td><xsl:value-of select="count(//cours[@sigle=current()/@sigle])" /></td> 
    <td><xsl:value-of select="sum(//cours[@note=current()/@note]) div count(//cours[@note=current()/@note])"/></td> 
     </tr> 
</xsl:if> 
</xsl:for-each> 
</table> 
</body></html> 
</xsl:template> 
</xsl:stylesheet> 

Можете ли вы помочь мне, пожалуйста? Заранее благодарю вас за помощь.

+0

Какое среднее, среднее число студентов беря курса или средней ноты? –

+0

http://stackoverflow.com/help/someone-answers –

ответ

0

Если я правильно понимаю, вы должны использовать:

<xsl:value-of select="sum(//cours[@sigle=current()/@sigle]/@note) div count(//cours[@sigle=current()/@sigle])"/> 

или более эффективно:

<xsl:value-of select="sum(key('montableau', @sigle)/@note) 
div count(key('montableau', @sigle))"/> 

вместо:

<xsl:value-of select="sum(//cours[@note=current()/@note]) div count(//cours[@note=current()/@note])"/> 
Смежные вопросы