Subject: RE: 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: 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
|