Von: Keyur K [mailto:kkeyur(_at_)hotmail(_dot_)com]
Betreff: [xsl] simple conditional looping
I want to write a simple loop statement like for($i=1; $i <=
50; $i++) in my
stylesheet to generate 50 tr (table rows).
I am not sure how I can do this. I tried using
<xsl:for-each/> but it just
loops through the nodes. I cannot specifiy any conditional
test like in
<xsl:if /> .
How can I achieve this? Pl. advice.
Keyur
you might want to try a recursive template, something like:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!--
example call
-->
<xsl:template match="/">
<xsl:call-template name="for-loop">
<xsl:with-param name="i">5</xsl:with-param>
<xsl:with-param name="stopat">20</xsl:with-param>
</xsl:call-template>
</xsl:template>
<!--
forloop([i, ]stopvalue)
-->
<xsl:template name="for-loop">
<xsl:param name="stopat" select="50"/>
<xsl:param name="i" select="1"/>
<xsl:if test="$i <= $stopat">
<!-- insert output here -->
<xsl:value-of select="concat($i, ', ')"/>
<!-- / -->
<xsl:call-template name="for-loop">
<xsl:with-param name="stopat" select="$stopat"/>
<xsl:with-param name="i" select="$i + 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
both params are optional. just insert the output you want at the specified
position.
chris