Re: [xsl] Processing based on number - alternatives to recursion?

Subject: Re: [xsl] Processing based on number - alternatives to recursion?
From: David Carlisle <davidc@xxxxxxxxx>
Date: Tue, 4 Mar 2008 16:18:19 GMT
> In order to use xsl:for-each, I'd have to dispose of something
> generating a node-set based on my number, wouldn't I?

yes if you know that your input document (or stylesheet is big enough) a
common trick was to use
<xsl:for-each select="(//*)[position() &lt;= Urmel]"....
which may not be any more efficient, but is a lot shorter.


in xslt2 you can go

<xsl:for-each select="1 to xs:integer(Urmel)"> ...

which is a bit nicer (it would be nicer still if you didn't have to
explicitly cast the range to an integer, but teh default casting would
lead to a double and (unlike say the arguments to substring)) the to
operator really wants an integer,


> Or is this misguided optimization thinking in thinking that lots of
> template invocations are bad?

If you write the recursive call as a tail recursive call as you have
done, then in most (I hope) XSLT systems this will be essentially
compiled to a loop an not take up the stack space that would naturally
implied by a deeply nested set of function calls.

David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 
________________________________________________________________________

Current Thread