[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: sort

Subject: Re: sort
From: "Jonathan Perret" <jonathan@xxxxxxxxxxxx>
Date: Fri, 1 Feb 2002 18:43:35 +0100
sortering xsl
Well, that is exactly how I had understood it the first time.

Unfortunately it seems you did not understand what
I was suggesting. Perhaps I should have detailed more,
but I had only time to focus on the important issue.
The solution I gave would allow the client to input either
'person', 'person/extra' or any other path, up to depth 3,
and have the list sorted according to their selection
(just as you describe).

On the other hand, if there is only a limited number
of ways the clients may want to sort on, you can also
number them (or identify them any other way)
and enumerate them as <xsl:sort> elements :

<xsl:apply-templates>
    <xsl:sort select="person[$sortering=1]" />
    <xsl:sort select="person/extra[$sortering=2]" />
    <xsl:sort select="person/extra/other[$sortering=3]" />
    <xsl:sort select="stuff[$sortering=4]" />
</xsl:apply-templates>

This way the elements will be sorted on 'person' when
$sortering=1, on 'person/extra' when $sortering=2, etc.
Just put the number of the column the user clicked on
in $sortering.
Of course you can use descriptive strings instead of
numbers, but I chose numbers to make more explicit
the fact that the value of $sortering is not interpreted
as a path.

This is less generic than what I first suggested but if
it works for you... I hope it is clearer at least.

Cheers,
--Jonathan

----- Original Message -----
From: "Frederic Leclercq" <frederic@xxxxxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Saturday, February 02, 2002 2:27 AM
Subject: Re:  sort


> Thanks, but maybe my question was not that clear.
> I display a table and the clients can click the headers to sort the
> table. (html)
>
> But not every <td></td> is at the same level in the xml-string.... so
> some clients would like to sort (at xml level)
> <root><person></person></root>
> and other clients may want to sort on
> <root><person><extra><extra></person></root>
>
> Hope you understand me ;-)
>
> Thx in advance,
> Fred.
>
> Jonathan Perret wrote:
>
> >If the depth of the sorting-element can be bounded to e.g. 3 :
> >First, parse your sort specification (e.g., 'person.superlogin.login')
into
> >several variables - in this case it would give :
> >$sortdepth=3
> >$sortering1='person'
> >$sortering2='superlogin'
> >$sortering3='login'
> >For a simpler sort, e.g. on 'person' it would give :
> >$sortdepth=1
> >$sortering1='person'
> >$sortering2=''
> >$sortering3=''
> >This is easy to do with substring-before() and substring-after(), so I'll
> >leave it as an exercise :-)
> >
> >Then you can use the following :
> >
> > <xsl:apply-templates>
> >   <xsl:sort select="*[name()=$sortering1 and $sortdepth=1]"
> >order="{$direction}"/>
> >   <xsl:sort select="*[name()=$sortering1 and
> >$sortdepth=2]/*[name()=$sortering2]" order="{$direction}"/>
> >   <xsl:sort select="*[name()=$sortering1 and
> >$sortdepth=3]/*[name()=$sortering2]/*[name()=$sortering3]"
> >order="{$direction}"/>
> > </xsl:apply-templates>
> >



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.