Subject: Re: [xsl] Sorting problem From: "J.Pietschmann" <j3322ptm@xxxxxxxx> Date: Wed, 03 Sep 2003 21:39:20 +0200 |
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.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Sorting problem, Cox, Todd (NIH/NCI) | Thread | Re: [xsl] Sorting problem, G. Ken Holman |
Re: [xsl] Keeping comments in an XM, G. Ken Holman | Date | Re: [xsl] Sorting problem, G. Ken Holman |
Month |