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