javascript - 嵌入 XSLT 时出现 Jscript 错误 - 对象不支持此属性或方法
问题描述
我编写了一个 JavaScript 函数,它在 Node.js 中运行时通过了所有输入的测试。但是,当它嵌入到 XSLT 模板(使用 MS XML 解析)中时,它现在会导致运行时错误。下面的错误信息:-
COM+ Msg = Microsoft JScript runtime error
Object doesn't support this property or method
line = 47, col = 5 (line is offset from the start of the script block).
Error returned from property or method call.
错误消息中的行号对应于 JScript 函数的右括号。
下面的代码: -
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://www.stylusstudio.com/file-utilities">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<msxsl:script language="JScript" implements-prefix="user">
<![CDATA[
function TrimmedString(inString) {
var stringArray = inString.split(' ');
var keyword;
/*logic omitted here assigns phrase to trim before in inString - assigned to keyword, blank if phrase doesn't exist*/
if (keyword !== '') {
var outString = "";
for (var i = 0; i < stringArray.length; i++) {
if (i !== 0) {
outString += " ";
}
else if (stringArray[i].indexOf(keyword) == -1) {
outString += stringArray[i];
}
else {
break;
}
}
return TrimmedString(outString.toString());
}
else {
return inString.trim();
}
}
]]>
</msxsl:script>
<xsl:template match="/">
<xsl:value-of select="user:TrimmedString(string(/XML_ParentNode/XML_ChildNode/@AttributeContainingString))"/>
</xsl:template>
</xsl:stylesheet>
当错误第一次出现时,我删除了 string.includes() 的所有实例并将它们替换为 string.indexOf() !== -1,我还替换了嵌入式 JScript 中的所有 ES6 特定功能。这似乎解决了突出显示到特定行的问题,但现在它触发了最后一个括号,我没有想法。该消息也令人困惑,因为输入参数始终是一个字符串,并且下面使用的所有方法都是字符串对象类型的相当普通的方法。
XSLT 运行时不支持这里的方法吗?当我在 Node.js 上将其作为独立代码进行测试时,脚本本身很好。
谢谢,本
解决方案
@Bravo 在评论中指出尝试从 return 命令中删除 .trim() 。因此,当嵌入到 XSLT 模板中时,似乎不支持此方法。谢谢!
推荐阅读
- rpm-spec - 如何在 rpm 规范中自动创建许多子包
- android - 我得到了 java.lang.IllegalStateException: 更新 androidX 库时没有活动错误
- java - 反向单链表
- amazon-web-services - Alexa 请求客户联系访问被拒绝
- ansible - RubyEncoder CLI 模式安装期间的问题
- ruby-on-rails - Webmock + HTTParty:带有真实响应的存根请求
- node.js - https.createServer 错误:SSL_CTX_use_certificate:ca md 太弱
- angular7 - 角度 7 中的 agm-marker 未显示标签值
- javascript - 如何将 BigQuery Struct Schema 字符串转换为 Javascript 对象?
- c# - 项目不能作为插槽的父项