This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Repeating something "n" times.


robert@elastica.com wrote:
> You're kidding me I have to do that? It'll work but is that the way it's
> done in XSL?

It's not a bug, it's a feature.
It's a side effect of having no side effects.
It's a FAQ, even.

> This won't work in my case because my template does stuff before it
> outputs the <BR>'s and I don't want it to do that stuff again and I really
> didn't want to have to factor that code into another template because then
> I have to pass a parameter that spans two templates.

If you are not trying to be puritan with your XSLT 1.0, you can use a
result-tree-fragment-to-node-set extension function provided by your XSLT
processor, like this:

<xsl:variable name="sixNodes">
   <x/><x/><x/><x/><x/><x/>
</xsl:variable>
<xsl:for-each select="saxon:node-set($sixNodes)/*">
  ...stuff to do six times...
</xsl:for-each>

It is interesting that when this becomes implicit in XSLT 1.1, tail
recursion won't be necessary for this kind of iteration anymore. It will
also be possible to create the equivalent of arrays and hashes.

   - Mike
____________________________________________________________________
Mike J. Brown, software engineer at         My XML/XSL resources:
webb.net in Denver, Colorado, USA           http://www.skew.org/xml/


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]