簡體   English   中英

XSL:跨XSL模板和文件傳遞Javascript變量

[英]XSL: Passing Javascript Variables across XSL Templates & Files

我目前正在使用一組用於報告的XSL模板。 我遇到的問題是我的javascript變量未更新。 我目前在頁面頂部具有include,但是在下面定義了Javascript變量。 這可能是問題嗎? 我應該在哪里定義這些變量? 是否有在XSL模板之間傳遞它們的特殊方法? 到目前為止,我還沒有使用過任何Javascript,而僅使用過XSL。 但是,我不需要執行一些計算,也需要更新變量,因此我需要弄清楚如何使變量在模板之間移動。 還是有辦法?

因此,在下面的內容中,某些正在調用的模板中存在函數調用,並且還有一條語句根據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>

就XSLT樣式表而言,您的<script>元素只是數據,它們不是可執行代碼。 您對處理模型感到困惑:執行XSLT轉換以生成HTML頁面,然后加載HTML頁面; 瀏覽器通常會觸發onLoad事件,這將導致頁面上的某些Javascript執行。 因此,您發生了兩個完全獨立的事件:正在生成HTML頁面,並且正在執行該頁面上的Javascript。

我看到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 '.'

此錯誤使您的變量不確定。 嘗試評論/修改它,我想應該沒問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM