Use recursion... ie.
<xsl:template match="test">
<xsl:variable name="size">80</xsl:variable>
<xsl:call-template name="ratings">
<xsl:with-param name="limit" select="$size"/>
<xsl:with-param name="this" select="1"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="ratings">
<xsl:param name="limit"/>
<xsl:param name="this"/>
<xsl:text disable-output-escaping="yes"><node id="</xsl:text>
<xsl:value-of select="$this"/>
<xsl:text disable-output-escaping="yes">"></xsl:text>
<xsl:apply-templates>
<xsl:with-param name="segment"><xsl:value-of
select="$this"/></xsl:with-param>
</xsl:apply-templates>
<xsl:text disable-output-escaping="yes"></node></xsl:text>
<xsl:if test="$this < $limit">
<xsl:call-template name="ratings">
<xsl:with-param name="limit" select="$limit"/>
<xsl:with-param name="this" select="$this+1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
Philip
=)