Subject: RE: [xsl] Sorting Problem From: "Dev Chandramani" <devc33@xxxxxxxxxxx> Date: Wed, 12 Sep 2001 21:15:06 +0100 |
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@xxxxxxxxxxxxxxxxxxxxxx [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Jörg Heinicke Sent: 12 September 2001 20:25 To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Sorting Problem, Jörg Heinicke | Thread | Re: [xsl] Sorting Problem, Jörg Heinicke |
Re: [xsl] Fast Processor XSLt, Daniel Veillard | Date | RE: [xsl] Sorting Problem, Michael Kay |
Month |