2011-08-09 11 views
-1

DB(db2)のデータを表示するためにXSLTを使用するプロジェクトがあります。私は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> 

出力...ブラウザからである

Webページエラーの詳細

ユーザエージェント: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)タイムスタンプ:Tue、9 Aug 2011 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を参照すると、は再評価されません。です。

投稿したエラーメッセージが表示されている場合は、RatePerLoadedMilesと表示されているため、最後に1を最後に忘れてしまったようです。

+0

私は実際に変数名を変更しましたが、 (var名以外は同じだったので)。システムには他のxslドキュメントへの依存性があり、名前の競合のために同じメッセージが届いていたので、すぐに名前を変更しようとしていました。 – Jared

0

xsl:variableの内容は配列コンストラクタとして使用されます。質問に提供されたフラグメントの例では、変数は、xsl:call-template命令自体によって返されるように、0個以上のノードまたは原子値の集合で取り込まれます。

0

あなたの変数の値は(XSLT 1.0では)それがあなたが何をすることができるかに制限があることを除いて、技術的に子供を持つドキュメントノードである "結果ツリーの断片"です。しかし、文字列として使用すると、文書ノードの文字列値を効果的に取得し、数値として使用するとその文字列を数値に変換します。

しかし、これはエラーメッセージとは関係ありません。これは、変数がスコープ外から参照しているということです。

関連する問題