问题摘要:我必须做出哪些更改才能使以下xslt文档有效。
以下是我试图为Gizmox WebGUI DataGrid控件修改的主题文档的简化版本。我遇到的问题是按钮元素上可怕的onclick事件属性。我已经通过这种方式尝试了代码,并使用"
代替"
作为属性引号。在任何情况下,文档都不会验证。我可以在javascript方法中完成一些工作,可能在我完成之前,但我仍然需要在这种情况下将<xsl:value-of select="@Attr.TotalPages"/>
的值作为参数传递。
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:WC="wgcontrols">
<xsl:template name="tplListDrawPaging">
<table border="0" cellpadding="0" cellspacing="0" class="List-PagingPanel" dir="{$dir}" align="center">
<tr>
<td width="150px" align="right" class="Common-FontData" dir="ltr">
<span>Go to page:</span>
<input type="text" id="{@Id}-goToPageTextBox" name="{@Id}-goToPageTextBox" style="width:35px;" />
<button type="button" onclick="var goToValue = getElementById('{@Id}-goToPageTextBox').value;
if(goToValue <= 0){goToValue = 1;}
else if(goToValue > <xsl:value-of select="@Attr.TotalPages"/>){goToValue = <xsl:value-of select="@Attr.TotalPages"/>;})
List_NavigateTo('{@Id}',goToValue);">Go</button>
</td>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:3)
你必须在表达式中escape the curly braces加倍:
<button type="button" onclick="var goToValue = document.getElementById('{@Id}-goToPageTextBox').value; if (goToValue <= 0) {{ goToValue = 1; }} else if (goToValue > {@Attr.TotalPages}) {{ goToValue = {@Attr.TotalPages}; }} List_NavigateTo('{@Id}', goToValue);">Go</button>
我肯定会将该代码置于其自己的函数中,并从onclick
处理程序调用它。