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

Re: Sorting problem

Subject: Re: Sorting problem
From: "J.Pietschmann" <j3322ptm@xxxxxxxx>
Date: Wed, 03 Sep 2003 21:39:20 +0200
problem on percentage
Cox, Todd (NIH/NCI) wrote:
I am trying to do a sort based on a parameter which I can do ok with the
following sort statement:

<xsl:sort select="server_name[$sort='server_name'] | nds_name[$sort='nds_name'] |
short_name[$sort='short_name'] | total_space[$sort='total_space']"
order="{$order}" data-type="{$dtype}"/>


The above code sorts fine but I have one other sorting criteria. Based on
the used_space and total_space I figure a percent value and would like to
sort on it. The problem is I can get it to work all by its lonesome using
the following:

<xsl:sort select="format-number((number(used_space) div number(total_space))
* 100,'0')" order="{$order}" data-type="number"/>

but when I put it in with the following I get an error.

<xsl:sort select="server_name[$sort='server_name'] | nds_name[$sort='nds_name'] |
short_name[$sort='short_name'] | total_space[$sort='total_space'] | format-number((number(used_space) div number(total_space))
*100,'0')[$sort='percent']"
order="{$order}" data-type="{$dtype}"/>


That's no surprise, format-number returns a number, and you add
a predicate and use it as operand for the '|' operator, both of
which requires node sets.

There are several possiblities to solve this. One is to
use the the computed percentage as secondary sort key and
assure the first sort key sorts each entry the same way:
 <xsl:sort select="server_name[$sort='server_name'] |
                   nds_name[$sort='nds_name'] |
                   short_name[$sort='short_name'] |
                   total_space[$sort='total_space']|
                   /[$sort='percent']"
   order="{$order}" data-type="{$dtype}"/>
 <xsl:sort select="format-number((number(used_space[$sort='percent'])
    div number(total_space))*100,'0')"
   order="{$order}" data-type="{$dtype}"/>
This may be slow, depending on the sort implementation of your
processor.
Another possiblity is to use a two stage approach, first copying
the source, thereby enriching the records with a field for the
percentage, then processing the sorted intermediary result. This
requires an extension function and might use a lot of additional
memory.

J.Pietschmann




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.