[英]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.