[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] FW: Medal Table


Subject: RE: [xsl] FW: Medal Table
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 14 Jan 2005 15:48:18 -0000

Grouping problems like this are easy in XSLT 2.0

<xsl:for-each-group select="Table" group-by="nation">
 <p><xsl:value-of select="current-grouping-key()"/></p>
 <xsl:for-each-group select="current-group()" group-by="medal">
   <xsl:sort select="index-of(('Gold', 'Silver', 'Bronze'), medal)"/>
   <xsl:value-of select="count(current-group()), current-grouping-key()"/>
   <xsl:if test="position()!=last()">, </xsl:if>
 </xsl:for-each-group>
</xsl:for-each-group>

not tested.

Michael Kay
http://www.saxonica.com/


> -----Original Message-----
> From: Gavin Lyons (i386) [mailto:admin@xxxxxxxx] 
> Sent: 14 January 2005 15:19
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] FW: Medal Table
> 
> 
> Hello XSL-list,
> 
> I hope someone can provide some insight and help :)
> 
> I would like and hope to output Nations by the numbers of 
> Golds first, then
> Silver and then Bronze in this order.
> 
> like this
> AUT
> 	3 Gold, 1 Silver
> JAP	
> 	3 Gold
> GBR  
> 	2 Gold, 1 Bronze
> 
> I'm just not sure the best way to tackle the problem
> 
> With thanks,
> Gavin Lyons 
> http://www.i386.com
> 
> XSL
> ---
> 	<xsl:for-each select="Table[not (nation='')]">
> 		<xsl:sort select="nation" />			
> 			<xsl:variable name="nation"><xsl:value-of
> select="nation"/></xsl:variable>
> 			<xsl:value-of select="nation"/> <br/>
> 			- Gold <xsl:value-of
> select="count(../Table[medal='Gold' and nation=$nation])"/>
> 			- Silver <xsl:value-of
> select="count(../Table[medal='Silver' and nation=$nation])"/>
> 			- Bronze <xsl:value-of
> select="count(../Table[medal='Bronze' and nation=$nation])"/>
> 	</xsl:for-each>
> 
> XML
> ---
>   <Table>
>     <athlete>Jones John</athlete>
>     <nation>GBR</nation>
>     <location>Bormio</location>
>     <date>01/29/2005</date>
>     <medal>Gold</medal>
>     <discipline>Super-G</discipline>
>     <gender>Mens</gender>
>     <lastmodified></lastmodified>
>     <editedby></editedby>
>   </Table>
>   <Table>
>     <athlete>Burt Sample</athlete>
>     <nation>FRA</nation>
>     <location>Bormio</location>
>     <date>01/29/2005</date>
>     <medal>Silver</medal>
>     <discipline>Super-G</discipline>
>     <gender>Mens</gender>
>     <lastmodified></lastmodified>
>     <editedby></editedby>
>   </Table>
> 
> 
> 
> 
>  
> 
> -- 
> No virus found in this outgoing message.
> Checked by AVG Anti-Virus.
> Version: 7.0.300 / Virus Database: 265.6.10 - Release Date: 10/01/2005
>  
> 
> -- 
> No virus found in this outgoing message.
> Checked by AVG Anti-Virus.
> Version: 7.0.300 / Virus Database: 265.6.10 - Release Date: 10/01/2005


Current Thread
Keywords