xsl-list
[Top] [All Lists]

Re: Choosing different sorts

2003-02-11 15:45:12
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)*(_at_)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(_at_)mulberrytech(_dot_)com
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



<Prev in Thread] Current Thread [Next in Thread>