This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Sorting Problem
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] Sorting Problem
- From: "Dev Chandramani" <devc33 at yahoo dot co dot uk>
- Date: Wed, 12 Sep 2001 21:15:06 +0100
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi Joerg,
Thanks for your reply.
Basically - the second part of the problem is this :
As well is listing the unique <name> fields based on their frequency I also
want to display
a corresponding <school> field.
So if the name Smith occurs once then it is fine - I just display the
corresponding
school field with that name.
But if the name Smith occurs twice - one with <school>Oxford</school> and
one with <school>Eton</school> i want to be able to display the school field
which
I rank the highest e.g. Oxford.
Understand ?
Will your solution allow me to pull out any corresponding <school> field
aswell as
the <name> field currently ?
Regards,
Dev.
-----Original Message-----
From: owner-xsl-list@lists.mulberrytech.com
[mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of Jörg Heinicke
Sent: 12 September 2001 20:25
To: xsl-list@lists.mulberrytech.com
Subject: Re: [xsl] Sorting Problem
Hello Dev,
your first problem will be solved with the following stylesheet:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes"/>
<xsl:key name="pupils" match="pupil" use="name"/>
<xsl:template match="records">
<xsl:copy>
<xsl:apply-templates
select="pupil[count(.|key('pupils',name)[1])=1]">
<xsl:sort select="count(key('pupils',name))"
order="descending"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="pupil">
<xsl:copy>
<xsl:apply-templates select="name"/>
</xsl:copy>
</xsl:template>
<xsl:template match="name">
<xsl:copy>
<xsl:value-of select="."/>
</xsl:copy>
<number-of-occurence>
<xsl:value-of select="count(key('pupils',.))"/>
</number-of-occurence>
</xsl:template>
</xsl:stylesheet>
With your second wish I have my problems, I don't understand it. Maybe tell
us more.
Joerg
> Based on the frequency of the value in the <pupil> tag.
> Any ideas would be greatly appreciated.
> Also I want to introduce a weighting system so I can
> then add the school field to the results based on
> the weights I give each school.
>
> For example if I had the following weights with 1 being the greatest:
>
> Cambridge=1
> Oxford=2
> Eton=3
>
> I could then produce results such as :
>
> <records>
> <pupil>
> <name>Davis</name>
> <school>Cambridge</school>
> </pupil>
> <pupil>
> <name>Jones</name>
> <school>Oxford</school>
> </pupil>
> <pupil>
> <name>Smith</name>
> <school>Oxford</school>
> </pupil>
> <records>
>
> I also would like <name> fields that only occur once being ordered using
the
> weighting system as well.
>
> A tough problem I know but any advice on where to start would be greatly
> appreciated.
> Thanks in advance.
>
> Regards,
> Dev.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list