我需要计算XML文件中每行数据的值。我认为这将是无痛的,但它不是。我从firefox获得的是我的功能没有被定义。这个文件没有从服务器加载,它是静态的,我也静态地应用了一个XSL。使用HTML我会这样做:
<html>
<head>
<script type="text/javascript">
function calcVal(price, qty){
var valIs = 0;
valIs = price * qty;
return valIs;
}
</script>
</head>
<body>
Value is: <script type="text/javascript">document.write(calcVal(100,2.6));</script>
</body>
</html>
当我把它放在XSL表中时,在<body>
:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<script type="text/javascript">
<xsl:comment>
<![CDATA[
function calcVal(price, qty){
var valIs = 0;
valIs = price * qty;
return valIs;
}
]]>
</xsl:comment>
</script>
</head>
<body>
Value is: <script type="text/javascript">document.write(calcVal(100,2.6));</script>
</body>
</xsl:template>
</xsl:stylesheet>
注意:我已经尝试过没有CDATA,将SCRIPT标记放在XSL:COMMENT中,没有XSL:COMMENT,等等,我能想到的所有变化。
我需要为每行数据多次执行此函数,所以问题是如何在XSL的剩余部分中使用此功能?
编辑我应该补充一点,IE11在我的XSL状态下计算这个值。
答案 0 :(得分:0)
你不能在Mozilla浏览器(如Firefox)中使用带有XSLT生成的HTML的document.write作为他们使用的Gecko引擎,并且它的XSLT处理器直接创建HTML结果树并呈现它,没有办法注入片段使用document.write标记。见https://developer.mozilla.org/de/docs/XSL_Transformations_in_Mozilla_FAQ#What_about_document.write.3F。 至于您使用Javascript来计算XSLT转换的HTML结果中的某些值,您也可以使用纯XPath进行计算,当然然后使用纯XSLT输出计算值,不需要输入Javascript。