2009-05-05 119 views
0

考慮這個條件,即存在於模板被遞歸調用:條件適用於XSLT 1.0樣式,但不能用於XSLT 2.0樣式表

<xsl:if test="$i &lt;= $count"> 

我使用XSLT 2.0處理器(撒克遜-B 9.1。 0.6)。該條件似乎只在運行XSLT 1.0樣式表時才起作用。當樣式表版本設置爲2.0(它應該是)時,它停止工作。

任何想法爲什麼?

這裏的整個事情:

<xsl:template name="for.loop"> 
    <xsl:param name="i" /> 
    <xsl:param name="count" /> 

    <xsl:if test="$i &lt;= $count"> 
    ... 
    </xsl:if> 

    <!-- Repeat the loop by recursion --> 
    <xsl:if test="$i &lt;= $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> 

感謝。

回答

1

這是我的懷疑:根據是什麼數據類型$i$coun噸中,「小於」測試可以以2.0失敗(支持超過1.0的數據類型),其中在1.0的隱式轉換存在確實的正確的事。

嘗試在比較之前將數據轉換爲正確類型,例如使用number()

+0

修復它。我在第二次測試中使用了數字($ count)。奇怪爲什麼只有一個測試需要改變。 – Jonathan 2009-05-05 16:27:12