This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Adjusting sorted list
- From: Jeni Tennison <jeni at jenitennison dot com>
- To: XSL-List at lists dot mulberrytech dot com
- Date: Thu, 16 May 2002 16:35:55 +0100
- Subject: Re: [xsl] Adjusting sorted list
- Organization: Jeni Tennison Consulting Ltd
- References: <1021557877.8166.30.camel@lnxmblguru>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Andrew Timberlake wrote:
> I have the following XML:
> <a>
> <b>4</b>
> <b>9</b>
> <b>6</b>
> <b>1</b>
> <b>8</b>
> <b>6</b>
> <b>4</b>
> <b>7</b>
> </a>
>
> I am trying to generate the following ouput:
> <a>
> <b rank="1">1</b>
> <b rank="2">4</b>
> <b rank="2">4</b>
> <b rank="3">6</b>
> <b rank="3">6</b>
> <b rank="4">7</b>
> <b rank="5">8</b>
> <b rank="6">9</b>
> </a>
For interest, the XSLT 2.0 version would be:
<xsl:template match="a">
<a>
<xsl:for-each-group select="b" group-by="." />
<xsl:sort select="." />
<xsl:variable name="rank" select="position()" />
<xsl:for-each select="current-group()">
<b rank="{$rank}">
<xsl:value-of select="." />
</b>
</xsl:for-each>
</xsl:for-each-group>
</a>
</xsl:template>
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list