2011-08-09 85 views
-1

我有一個項目,我正在使用XSLT顯示db(db2)中的數據。我在做喜歡.....XSLT在變量中存儲值

<xsl:variable name="RatePerLoadedMiles1"> 
    <xsl:call-template name="ratePerLoadedMiles"> 
     <xsl:with-param name="summaryRow" select="$SummaryRow1" /> 
     <xsl:with-param name="numerator" select="$OperatingExpense1"/> 
    </xsl:call-template> 
</xsl:variable> 

現在模板存儲在簡單地存儲模板重用現有的功能和XSLT文件中的一些變量。

我的問題是 ... 當我打電話變量$RatePerLoadedMiles1是我得到一個價值迴歸或內容什麼的<xsl:variable></xsl:variable>之間?因此,如果我將它的值評估爲5.我現在是否有5個存儲或將我的變量標籤的內容,每次將評估爲5。我不太在意僅僅提供的錯誤消息,因爲它是請求。我主要關心的是上述問題。

如果它的事項我打電話像變量....

<td class="rightAligned"> 
    <xsl:copy-of select="$RatePerLoadedMiles1" /> 
</td> 

,我也用它做....

<td class="rightAligned"><!-- RPLM --> 
    <xsl:call-template name="formatAsPercent"> 
     <xsl:with-param name="numberToFormat"> 
      <xsl:call-template name="divideNumbers"> 
       <xsl:with-param name="numerator" select="$RatePerLoadedMiles1 + 
                 $RatePerLoadedMilesBefore + 
                 $RatePerLoadedMilesAfter" /> 
       <xsl:with-param name="denominator" select="3" /> 
      </xsl:call-template> 
     </xsl:with-param> 
    </xsl:call-template> 
</td> 

輸出一些額外的計算從瀏覽器...

網頁錯誤的詳細信息

用戶代理:Mozilla/4.0(兼容; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; EasyBits GO v1.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; MDDR; FDM)時間戳:2011年8月9日(星期二)14:24:01 UTC

消息:對變量或參數'RatePerLoadedMiles' 的引用無法解析。變量或參數可能未定義,或者可能不在範圍內。

行:1385字符:2代碼:0 URI: http://costanalysis:13000/costAnalysis/protected/javascript/xWireClientFull.jsb

+0

您是否運行模板?請向我們展示您的輸出。 –

+1

問號在哪裏?我看不到確切的問題。 –

+0

我用「?」更新了這個問題:)以及顯示我從瀏覽器收到的錯誤消息。 xml是在運行時生成的,所以我無法在運行時進行調試(我知道這一點)。 – Jared

回答

0

您的問題的答案是變量RatePerLoadedMiles1存儲值5(作爲@Michael Kay描述的RTF)。當引用$RatePerLoadedMiles1時,不會重新評估

如果它提供了您發佈的錯誤消息,那麼在引用它時某處顯然會忘記1,因爲錯誤消息是RatePerLoadedMiles

+0

我實際上已更改變量名稱,但沒有重新複製錯誤消息(因爲除了var名稱外,它是一樣的)。該系統對其他xsl文件有一定的依賴性,並且由於命名衝突,我收到了相同的消息,因此我試圖快速更改名稱。 – Jared

0

一個xsl:variable的內容被用作順序構造。在問題中提供的示例片段中,該變量將填充0個或多個節點或原子值的集合,如xsl:call-template指令本身所返回的那樣。

0

變量的值是(在XSLT 1.0中)一個「結果樹片段」,它在技術上是一個帶有子項的文檔節點,除了對可以使用它做什麼有限制之外。但是,如果將它用作字符串,則將有效地獲取文檔節點的字符串值,並且如果將它用作數字,則會將該字符串轉換爲數字。

但是,這與錯誤消息無關,即錯誤消息說您正在從其範圍外引用該變量。