Используйте :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:call-template name="loop">
<xsl:with-param name="count" select="100"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="loop">
<xsl:param name="count" select="1"/>
<xsl:param name="limit" select="$count+1"/>
<xsl:if test="$count > 0">
<xsl:text> </xsl:text>
<xsl:value-of select="$limit - $count"/>
<xsl:call-template name="loop">
<xsl:with-param name="count" select="$count - 1"/>
<xsl:with-param name="limit" select="$limit"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
, когда это преобразование выполняется для любого XML-документа (не используется), желаемый результат: создается от 1 до 100 .
Обратите внимание : Это решение с хвостовой рекурсией и со многими процессорами XSLT будет оптимизировано, чтобы исключить рекурсию.Это означает, что вы можете использовать его с $count
, установленным на миллионы, без переполнения стека или медленного выполнения.
Не хвостовое рекурсивное решение, такое как @0xA3, сбои с переполнением стека (с саксонской 6.5.4) даже с count = 1000