XSLT JavaScript:尝试使用包含破折号的名称定义函数时出错

xslt javascript: error when trying to define function with a name including a dash

本文关键字:定义 函数 出错 破折号 包含 JavaScript XSLT      更新时间:2023-09-26

遵循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 错误。