xsl-list
[Top] [All Lists]

Re: sort and order xml data according to what user selects from a form

2003-07-18 22:56:49
OK, that makes sense. But how do I use the xsl:variable/xsl:param element to
capture either $order from the menu or $sortByField from the radio button in
the form?


----- Original Message ----- 
From: "Lars Huttar" <lars_huttar(_at_)sil(_dot_)org>
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Saturday, July 19, 2003 12:51 AM
Subject: RE: [xsl] sort and order xml data according to what user selects
from a form


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(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com]On Behalf Of 
Sergey
Demidenko
Sent: Friday, July 18, 2003 8:37 PM
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
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




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