Re: [xsl] Choosing different sorts

Subject: Re: [xsl] Choosing different sorts
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Tue, 11 Feb 2003 17:45:12 -0500
Andrew,

At 04:07 PM 2/11/2003, you wrote:
So how can I sort by a variable that hasn't been created or by a value that
needs to be calculated when the variable can't be global when the sort line
comes first?

You can't. A proper solution would require two passes: the first to generate the values on which you want to sort; the second to do the sorting.


Now, if you happen to be able to express the logic that generates the sort value in a *single* XPath expression, you could load it into the sort in its entirety. Fortunately for you, this may just be possible:

The number() function turns a Boolean true() into the value "1", false() into "0". So you could do

<xsl:sort select="(number(substring(@url, (string-length(@url) -
string-length('index.html'))+1='index.html')+1)*@weight"/>

(Translated into English: the equality test returns a Boolean which becomes 1 if true, 0 if false. 1 is added to this value, and the sum, 2 or 1, is multiplied by the @weight attribute of the context node.)

See if that works --! but if it does and you use it, do the downstream maintainer a favor, and include a comment to explain it. ;->

Cheers,
Wendell


====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================


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



Current Thread