RE: [xsl] Generic sort using multiple columns

Subject: RE: [xsl] Generic sort using multiple columns
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Mon, 27 Oct 2003 08:58:43 -0000
I think that when it gets to this level of complexity, you should
seriously consider generating a stylesheet containing xsl:sort elements
to reflect the chosen sort order. If you're running client side, the
extra processing cost probably won't be noticeable.

Michael Kay
 
> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Kyle Himmerick
> Sent: 27 October 2003 05:48
> To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Generic sort using multiple columns
> 
> 
> Hello,
> I need to allow users to sort data by multiple columns (primary, 
> secondary, tertiary etc).
> 
> I'm trying to keep it as generic as possible.  For example, the user 
> might choose to sort by column 1 asc, column 2 desc and 
> column 3 asc.  
> I'll handle this as a list control where they can change the 
> sort order 
> on each column (ie 1st click sorts column asc, 2nd click sorts column 
> desc, 3rd click removes sort without affecting any other columns that 
> may be sorted).  So precedence will be in the order the 
> elements appear 
> (or left to right when displayed).
> 
> I am already doing a dynamic sort using:
> 
> <xsl:for-each select="DATA">
>   <xsl:sort select="*[name()=$orderby]" order="{$order}" 
> data-type="{$ordertype}"/>
>   <xsl:apply-templates select="."/>
> </xsl:for-each>
> 
> My web page is passing in these three variables orderby, order and 
> ordertype.  This works well but does not meet my above requirement.
> 
> I can fight with constructing parameters to be passed into the 
> stylesheet, but I'm stuck as to how I can actually apply them.
> 
> sample xml format:
> <LIST>
> <DATA>
>   <firstName>Kyle</firstName>
>   <phone>123.313.1234</phone>
>   <job>grunt</job>
> </DATA>
> <DATA>
>   <firstName>Joe</firstName>
>   <phone>312.123.1234</phone>
>   <job>boss</job>
> </DATA>
> </LIST>
> 
> maybe
> $asc = 'firstName, job'
> $desc = 'phone'
> 
> - or -
> 
> $orderby=firstName, phone, job
> $order=asc,desc,asc
> $type=text,number,text
> 
> Has anyone seen this done or have any ideas? 
> 
> Thanks for your help.
> -Kyle
> 
> 
>  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