[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] sort and order xml data according to what user selects from a form


Subject: RE: [xsl] sort and order xml data according to what user selects from a form
From: "Lars Huttar" <lars_huttar@xxxxxxx>
Date: Fri, 18 Jul 2003 23:51:01 -0500

This FAQ item
http://www.dpawson.co.uk/xsl/sect2/N6461.html#d6859e950
tells how to set the sort order dynamically.
In brief, something like
   <xsl:sort order="{$order}" select="*[name()=$sortByField]"/>

This says "sort elements by their child element whose name
is the value of $sortByField".
So if $sortByField = 'size', you will be sorting publication elements
by the value of their size element child.

Let us know if you try this and are still stuck...

Lars

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Sergey
> Demidenko
> Sent: Friday, July 18, 2003 8:37 PM
> To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] sort and order xml data according to what user selects
> from a form
> 
> 
> I want to be able to sort and order my XML data according to 
> what the user
> selects from a form.
> I am quite a novice to XSL and haven't worked with forms that 
> much at all.
> So, when the user selects "size" from the menu, the XML data 
> would be sorted
> by "size"
> and when the user selects the ascending radio button, I want 
> the XML data
> order by "ascending"
> How would I acomplish this?
> 
> here is the code that I have:
> ---------------------------------------------------------------------
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:template match="/">
> <html><body>
> 
> <form id="form" method="post" action="">
>   Sort by:
>   <select id="sortby">
>       <option selected="selected">title</option>
>       <option>author</option>
>       <option>date</option>
>       <option>citation</option>
>       <option>pages</option>
>       <option>size</option>
>     </select>
>   Order of:
>   <input id="descending" name="sortorder" type="radio" 
> value="descending"
> checked="checked" />
>   <label for="descending">Descending</label>
>   <input id="ascending" name="sortorder" type="radio" 
> value="ascending" />
>   <label for="ascending">Ascending</label>
> </form>
> 
> <xsl:for-each select="catalog/publication">
> <xsl:sort select="date" order="descending" />
> ...
> here where the xml data is displayed
> ...
> </xsl:for-each>
> 
> </body></html>
> </xsl:template>
> </xsl:stylesheet>


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



Current Thread
Keywords