我一直在努力解决这个问题好几个小时....帮助
首先我必须使用XSLT 1.0,我不能使用xsl:key。我必须对以下xml数据进行排序和分组
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="class2.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é>
预期结果应为
答案 0 :(得分:2)
没有xsl:key(当然不是最佳的)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="/*">
<table>
<tr>
<td>Sigle</td>
<td>Nombre d'etuidants</td>
<td>Moyenne du cours</td>
</tr>
<xsl:apply-templates select="etudiant/cours"/>
</table>
</xsl:template>
<xsl:template match="cours[not(@sigle = preceding::cours/@sigle)]">
<tr>
<td>
<xsl:value-of select="@sigle"/>
</td>
<xsl:variable name="cnt" select="count(//cours[@sigle = current()/@sigle])"/>
<td>
<xsl:value-of select="$cnt"/>
</td>
<td>
<xsl:value-of select="format-number(sum(//cours[@sigle = current()/@sigle]/@note) div $cnt, '#.0')"/>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>