XSL: передача переменных Javascript через шаблоны и файлы XSL - PullRequest
1 голос
/ 23 июня 2011

В настоящее время я работаю с набором шаблонов XSL, которые используются для составления отчетов. У меня проблема в том, что мои переменные JavaScript не обновляются. В настоящее время у меня есть включения в верхней части страницы, но переменные 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>

Ответы [ 2 ]

1 голос
/ 24 июня 2011

Что касается таблицы стилей XSLT, ваши элементы <script> - это просто данные, а не исполняемый код. Вы запутались в модели обработки: XSLT-преобразование выполняется для создания HTML-страницы, а затем HTML-страница загружается; браузер обычно вызывает событие onLoad, которое вызывает выполнение некоторого Javascript на странице. Таким образом, происходит две совершенно разные вещи: генерируется HTML-страница и выполняется Javascript на этой странице.

0 голосов
/ 23 июня 2011

Я вижу, что с этим что-то не так 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 '.'

Эта ошибка делает ваши переменные неопределенными. Попробуйте прокомментировать / изменить его, и я думаю, что все должно быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...