遵循David Carlisle blogspot exslt node-set function,我将以下内容添加到我的样式表中:
...xmlns:msxsl="urn:schemas-microsoft-com:xslt"...
<msxsl:script language="jscript" implements-prefix="exslt">
this['node-set'] = function (x) {
return x;
}
</msxsl:script>
如果我理解正确,这种在javascript中定义函数的方式(使用this
(是必要的,因为函数名称中的破折号;将其定义为function node-set(){...}
是行不通的,this['z']
等同于this.z
。
问题是此脚本被 XML Spy 中的脚本验证器拒绝。
脚本编译错误(相对于脚本开始(:
第 1 行,字符 3:语法错误
第 1 行,字符 31:预期标识符" this['node-set'] = 函数 (x( { 返回 x; } ">
当我定义function nodeset(){...}
时完全没有问题,但不知何故它不允许我使用构造this['...']
,甚至this['nodeset']
使用不带破折号的函数名称。
有人知道我应该怎么做吗?也许是大卫?:-)
我向 Altova 支持台检查了这一点,询问使用"this"时的错误,他们回答如下:
The code in question is non-standard for XSLT 1.0, using MSXML-only features.
不是一个明确的答案,但我推断这意味着XML Spy的javascript版本不支持"this"。
因此,我将在我需要的地方包含代码,只需通过在浏览器列表中打开 XML + 引用样式表来检查代码,而不用担心 XML Spy 在 xslt 编辑或保存期间提到的 javascript 错误。