<?xml version="1.0" encoding="UTF-8" ?>
<!-- 
Feuille de style présentant les étudiants d'une école et diverses statistiques
Auteur : Matthias Colin
Version : 1.0 (19/03/2011)
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
	xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0" >

<xsl:output method="text" encoding="UTF-8" />
 
<xsl:template match="ecole">
Liste des étudiants (par nom) :
<xsl:for-each select="classe/etudiant">
	<xsl:sort select="@nom" />
	<xsl:apply-templates select="." />
</xsl:for-each>
		
Liste des étudiants (par moyenne décroissante) :
<xsl:for-each select="classe/etudiant">
	<xsl:sort select="xs:decimal(@moyenne)" order="descending" />
	<xsl:apply-templates select="." />
</xsl:for-each>
		
Liste des étudiants (par âge et nom) :
<xsl:for-each select="classe/etudiant">
	<xsl:sort select="xs:integer(@age)" />
	<xsl:sort select="@nom" />
	<xsl:apply-templates select="." />
</xsl:for-each>

Statistiques par ville :
<xsl:for-each-group select="classe/etudiant" group-by="@ville">
	<xsl:value-of select="concat(' - ', current-grouping-key(),	' : ',
		'(nb: ', count(current-group()), 
		') ; âges : (moyen: ', format-number(avg(current-group()/@age), '#.##'), 
		'),  (min: ', min(current-group()/@age),
		'),  (max: ', max(current-group()/@age), ')')" />
<xsl:text>
</xsl:text>
	<xsl:for-each select="current-group()">
		<xsl:text>	*</xsl:text>
		<xsl:apply-templates select="." />
	</xsl:for-each>
</xsl:for-each-group>

Statistiques par âge :
<xsl:for-each-group select="classe/etudiant" group-by="@age">
	<xsl:sort select="current-grouping-key()" />
	<xsl:value-of select="concat(' - ', current-grouping-key(),	' : ',
		count(current-group()), ' étudiants')" /> 
<xsl:text>
</xsl:text>
</xsl:for-each-group>		
</xsl:template>
	
<xsl:template match="etudiant">
<xsl:value-of select="concat(@nom, ' ', @prenom, ' (', @age, ' ans', ', ', @ville, ') : ', 
		@moyenne, ' (', ../@nom,')')" />
<xsl:text>
</xsl:text>
</xsl:template>

</xsl:stylesheet>
