我是 XSLT 的新手,我在这个问题上遇到了很多困难:我需要在 XSLT 中做一个类似于 while 的循环。我认为 for-each 不足以解决这个问题。
我有一个变量是 SELECT 语句的结果。它可以返回 0 或整数。如果值为0,则需要再次执行SELECT,发送另一个参数,看看值是否不同。
我只能考虑使用类似while的循环,但也许它有另一种实现方式?就像使用模板并最终调用自己一样?是否可以?
像这样的东西:
<!-- initiate TEMPLATE -->
<!-- WHILE $VALUE = 0 -->
<xsl:variable name="sql.query">
<sql:param name="SQL_QUERY">SELECT $value FROM date_table WHERE date='$date'</mx:param>
</xsl:variable>
<xsl:variable name="VALUE">
<xsl:value-of select="sql:exec-formula('generic.sql', exsl:node-set($sql.query)//sql:param)" /> <!-- this will bring the result of the SELECT in the variable -->
</xsl:variable>
<xsl:variable name="date">
<xsl:value-of select="$date-1" /> <!-- something like that, it doesn't matter -->
</xsl:variable>
<xsl:if test="$VALUE ='0'">
<!-- call template again -->
</xsl:if>
<!-- end of template -->