在XSL中呈现JavaScript

Render JavaScript in XSL

本文关键字:JavaScript XSL      更新时间:2023-09-26

我需要一个div与以下Javascript相关联:

onclick="resize('Value1', 'Value2', 'Value3', 'Value4')"

在我的XSL中,var1, var2, var3, var4保存当前节点的字符串Value1, Value2, Value3, Value4。因此,使用xsl:attribute name='onclick',我想将JS与div关联起来。我面临的问题是因为在XSL中转义单引号以在输出页面中呈现它(这就是我的想法)。

你知道怎么做吗?

编辑:获取javascript onclick函数调用字符串的XSL代码是:

<xsl:value-of select="concat('resize(', '&apos;', $var1, '&apos;', ',', '&apos;', $var2, '&apos;', ',', '&apos;', $var3, '&apos;', ',', '&apos;', $var4, '&apos;', ')'"/>

和IE6[是的,是IE6,我的机器有IE6的XP:[]显示错误:

Expression expected. concat('resize(', ''', $var1, ''', ',', ''', $var2, ''', ',', ''', $var3...

有趣的是,属性值内的单引号似乎没有真正好的转义序列。您应该能够使用:

    <xsl:attribute name="onClick">resize('<xsl:value-of select="$var1"/>','<xsl:value-of select="$var2"/>','<xsl:value-of select="$var3"/>', '<xsl:value-of select="$var4"/>')</xsl:attribute>

至少IntelliJ喜欢这个。它有点冗长,但即使使用IE6等较旧的XSLT处理器也应该是安全的。不过,我没有IE6来检查它。顺便说一句。IE6是一种过时的技术,所以你真的应该摆脱它。