Ich glaube du solltest hier einfach dem Parameter per default einen numerischen Wertebereich zuweisen. Ist eine Murks die erst mit xslt2.0 gelöst wurde.
Versuch einfach mal
<xsl:call-template name="Schleife">
<xsl:with-param name="Anzahl" select="count(Element)" />
</xsl:call-template>
<xsl:template name="Schleife">
<xsl:param name="Zaehler" select="1" />
<xsl:param name="Anzahl" select="0" />
<xsl:if test="$Zaehler <= $Anzahl">
<xsl:value-of select="." />xsl:text	</xsl:text>
<xsl:call-template name="Schleife">
<xsl:with-param name="Zaehler" select="($Zaehler)+1" />
<xsl:with-param name="Anzahl" select="$Anzahl" />
</xsl:call-template>
</xsl:if>
</xsl:template>
Zur not test noch mit einer if abfrage zufor, ob es sich beim Paramter Zahl wirklich um eine Zahl handelt
<xsl:if test="number($Anzahl)>
<xsl:if test="$Zaehler <= $Anzahl">
<xsl:value-of select="." />xsl:text	</xsl:text>
<xsl:call-template name="Schleife">
<xsl:with-param name="Zaehler" select="($Zaehler)+1" />
<xsl:with-param name="Anzahl" select="$Anzahl" />
</xsl:call-template>
</xsl:if>
</xsl:if>
Gruss, Holge r