У меня есть цикл for в одном из моих файлов xslt, который раньше работал:
<xsl:template name="for.loop">
<xsl:param name="i" />
<xsl:param name="count" />
<xsl:if test="$i <= $count">
<colspec colname="{concat('c',$i)}"/>
</xsl:if>
<xsl:if test="$i <= $count">
<xsl:call-template name="for.loop">
<xsl:with-param name="i">
<xsl:value-of select="$i + 1"/>
</xsl:with-param>
<xsl:with-param name="count">
<xsl:value-of select="$count"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
Как вы можете видеть, этот шаблон в основном является структурой цикла for, обслуживающей создание "Colspec""узлы модели таблицы Cals.Параметр, который я передаю ему, это просто индекс существа, который должен быть 1 и счетчиком, что означает, сколько узлов "Colspec" должно быть создано.
Затем я называю этот шаблон следующим образом:
<xsl:variable name="value">
<xsl:value-of select="number($colsCount)+number($multiRowCellCount2)"/>
</xsl:variable>
<xsl:attribute name="cols">
<xsl:value-of select="$value"/>
</xsl:attribute>
<xsl:call-template name="for.loop">
<xsl:with-param name="i">1</xsl:with-param>
<xsl:with-param name="count"><xsl:value-of select="$value"/></xsl:with-param>
</xsl:call-template>
Странно то, что я достиг точки, где "$ value" равно 9, атрибут 9 назначен правильно для "@cols", но узлы "Colspecs" были созданы 89 раз!Однако, когда я пробую другой документ, когда «$ value» равно 5, оба параметра «@cols» и #of «Colspecs» верны.
Я заблудился здесь, почему цикл for будет повторяться 89раз, когда фактический счет просто 9?