xsl-list
[Top] [All Lists]

Re: Re: Sorting on call-template value?

2003-04-13 21:52:37

"Mike Brown" <mike(_at_)skew(_dot_)org> wrote in message
news:200304132051(_dot_)h3DKp915023133(_at_)chilled(_dot_)skew(_dot_)org(_dot_)(_dot_)(_dot_)
Dimitre Novatchev wrote:


Use a variable?

<xsl:variable name="sortkey">
  <xsl:call-template name="foo"/>
</xsl:variable>
<xsl:for-each select="/some/nodes">
  <xsl:sort select="string($sortkey)"/>
  ...

Obviously, this is not a solution -- a sort key must be a function of
the
current node if it is to be of any use. The value of the sort key above
would be constant for all /some/nodes and will not cause any changes in
the
order  they are represented in the node-list.


Obviously, you are much better than me at divining what he wanted, based
on
his unclear question. It sounded to me like he just wanted to use the
result
of a call-template *in* his sort key. I assumed he would be doing
something
like <xsl:sort select=". = xx:node-set($sortkey)"/>. Obviously, I was
wrong.
Obviously.

It is *obvious* when reading the original post:

"Perhaps a better way to phrase the question might be this: You can sort on
the value of functions intrinsic to XSL, such as position() or
substring-before() etc.  Is it possible to write your own "functions" as xsl
templates, and sort on the value returned from those?"

What this is all about is the possibility in XSLT 1.0 to use one's own
functions that return the sort key.

And the answer is that this is not possible with xsl:sort in XSLT 1.0, but a
generic sort template can be used as in

http://www.biglist.com/lists/xsl-list/archives/200303/msg00007.html




=====
Cheers,

Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL




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