2015-12-30 121 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])"/>