2011-06-23 3 views
1

現在、レポートに使用されている一連のXSLテンプレートを使用しています。私が持っている問題は、私のJavaScriptの変数が更新されていないということです。私は現在、ページの上部にインクルードしていますが、Javascriptの変数はその下に定義されています。これが問題だろうか?これらの変数はどこで定義する必要がありますか? XSLテンプレート間でそれらを渡す特別な方法はありますか?今まで私はJavascriptを使用しておらず、私はXSLだけで作業してきました。しかし、いくつかの計算を実行する必要はなく、また変数を更新する必要があるので、テンプレート間で変数を移動する方法を理解する必要があります。それとも方法はありますか?XSL:XSLテンプレートとファイル間でJavascript変数を渡す

したがって、呼び出されるテンプレートの中には関数呼び出しがあり、XSL値に基づいて開始日と終了日の値を更新するステートメントもあります。問題は、印刷されているのはすべて、更新された値ではなく、初期の設定値であるということです。

正しい方向で私を指摘する助けがあれば素晴らしいでしょう。

ありがとうございます!

<xsl:param name="DisplayEmptyFields" select="true()"/> 
<xsl:template match="/"> 
<xsl:include href="./Templates/styles.xslt"/> 
<xsl:include href="./Templates/md_GeneralReportTemplates.xslt"/> 
<xsl:include href="./Templates/md_RunDetailReportTemplate.xslt"/> 

<html> 
    <head> 

      <script type="text/javascript"> 
       var d = ""; 
       var startdate = "6/7/2100 10:56:34 AM"; 
       var enddate = "6/7/2008 10:56:34 AM"; 


       var totruns = 0; 
       var passedruns = 0; 
       var failedruns = 0; 
       var date.flag = 0; 

       function ticks(){ 
        totruns++; 
       } 
       function passticks(){ 
        passedruns++; 
       } 
       function failticks(){ 
        failedruns++; 
       } 

      </script> 
      <xsl:call-template name="DefineStyles"/> 


     </head> 
     <body> 

    <xsl:call-template name="pageheader"/> 

      <xsl:apply-templates select="run"/> 
     </xsl:for-each> 

      <table xsl:use-attribute-sets="report-detail-table-format"> 
      <tr xsl:use-attribute-sets="report-header-row-table-format"> 
       <th colspan="4"> 
        Summary 
       </th> 
      </tr> 
      <tr> 
      <td><b>Total Runs: </b><script type="text/javascript">document.write(totruns);</script></td> 
      <td><b>Passed Runs: </b><script type="text/javascript">document.write(passedruns);</script></td> 
      <td><b>Failed Runs: </b><script type="text/javascript">document.write(failedruns);</script></td> 
      <td><b>Pass Rate: </b><script type="text/javascript">document.write(Math.round((passedruns/totruns*100)*Math.pow(10,2))/Math.pow(10,2));</script>%</td> 

      </tr> 
      <tr> 
      <td colspan="2"><b>Execution Start: </b><script type="text/javascript">document.write(startdate);</script></td> 
      <td colspan="2"><b>Execution End: </b><script type="text/javascript">document.write(enddate);</script></td> 

      </tr> 
      </table> 
       </body> 
       </html> 
+1

'ticks()'、 'passticks()'、 'failticks()'は、ドキュメントに書いているjs値の値を変更します。これらはどこに呼ばれていますか?このXSL/XSLTから得たHTML出力を解凍して貼り付けることはできますか? – mrk

答えて

0

私はそのvar date.flag = 0;に何か問題がある参照してください。

[2011-06-23 18:49:11] JavaScript 
Inline script compilation 
Syntax error at line 9 while loading: 
      var date.flag = 0; 
--------------------^ 
expected ';', got '.' 

このエラーは、あなたの変数は未定義になります。コメントしてください/それを修正してくださいと私はそれが大丈夫だろうと思う。

+0

Grzegorzありがとう、私はここで私の心を失っていた!それはそれをしたようだ。私はそこに置いたときは確かではない、おそらくいくつかのコピー/貼り付けスニペットのtailgaterだったが、それはそれを修正したようだ。 – Crazkanuk

1

XSLTスタイルシートに関する限り、<script>要素は単なるデータであり、実行可能なコードではありません。処理モデルについて混乱します.XSLT変換が実行されてHTMLページが生成され、HTMLページがロードされます。ブラウザは通常onLoadイベントをトリガーし、ページ上のいくつかのJavaScriptが実行されます。つまり、HTMLページが生成され、そのページ上のJavascriptが実行されます。

関連する問題