以下是完整的代码:
<xsl:for-each select="/*/hundreds/hundred">
<div class="page_spacer" />
<div class="page_section" style="{./style}">
<h2><xsl:value-of select="./label"/></h2>
<div id="graphDiv{position()}"></div>
<script>
var ctx = createCanvas("graphDiv{position()}");
var graph = new BarGraph(ctx);
graph.maxValue = 30;
graph.margin = 2;
graph.colors = ["#49a0d8", "#d353a0", "#ffc527", "#df4c27"];
graph.xAxisLabelArr = ["North", "East", "West", "South"];
setInterval(function () {
graph.update([Math.random() * 30, Math.random() * 30, Math.random() * 30, Math.random() * 30]);
}, 1000);
</script>
<xsl:value-of select="./descriptiontext" />
<button onclick="javascript:window.location.href='{./viewalllink}'"><xsl:value-of select="./viewalllabel" /></button>
<br/>
<xsl:for-each select="./contendors/contendor">
<a href="/location/{./locid}" ><img class="locationthumb" src="/act/locationthumb/{./locid}"/></a>
</xsl:for-each>
</div>
</xsl:for-each>
我想要完成的是以下内容:
<div id="graphDiv{position()}"></div>
<script>
var ctx = createCanvas("graphDiv{position()}");
如果你看一下,在我的XSLT中,我将div
分配给graphDiv1
,如果它在第一个位置。在我的脚本中,我呼叫createCanvas function
。不幸的是,我需要将值graphDiv1
传递给createCanvas function
。
所以,我需要将position
放入调用script
的{{1}}。
我确定我做错了,这只是我第二天使用XSLT。
这是我的createCanvas
:
XML
答案 0 :(得分:0)
此链接可以帮助您:
http://www.ibm.com/developerworks/library/x-tiphtml/
但不是
<xsl:value-of select="value"/>
你需要这样做:
<xsl:value-of select ="position()"/>
答案 1 :(得分:0)
当您创建前面的div
元素时,您正在执行此操作(这很好):
<div id="graphDiv{position()}"></div>
大括号被称为Attribute Value Templates,意味着对它们内部的表达式进行求值以输出结果。顾名思义,这仅在属性值中有效,而在纯文本节点中无效。对于文本节点,您可以使用xsl:value-of
<script>
var ctx = createCanvas("graphDiv<xsl:value-of select="position()" />");
var graph = new BarGraph(ctx);
初看起来可能看起来“奇怪”,但请记住,XSLT并不了解javascript。就XSLT而言,它只是一段文字。您只是输出名称为script
的元素,该元素具有文本节点作为子元素,并且包含position()
的值作为该文本的一部分。