0

我正在尝试将 ASP Classic 应用程序迁移到 .Net 4.0(4.5 也可以接受)。该应用程序负责使用 Javascript 扩展函数执行 XSL 转换。ASP Classic 应用程序当前使用 MSXML 4.0 来执行转换。

当我尝试使用 XslCompiledTransform 类来处理包含 javascript 扩展的转换时,我在 .Net 中遇到了问题。它适用于简单的示例,但我们有一个相当广泛的 javascript 库,随着测试用例变得越来越复杂,我看到了错误。这些错误中最令人沮丧的是语法错误,例如 .Net 解析器似乎不喜欢函数之外的语句。

谁能告诉我哪个类用于解析和编译 javascript 扩展以及是否有完整的文档。也可以将 javascript 处理器对象替换为自定义对象(以类似于 UriResolver 的方式)。

此外,是否可以使用解析器规则让 Visual Studio 在查看文件时突出显示 javascript 语法错误。我很确定它已经为网页等中使用的 javascript 代码做到了这一点,但是 XSLT 中的语法规则似乎有所不同。

4

1 回答 1

0

AFAIR XslCompiledTransform 使用 CodeDom 编译嵌入式脚本。它的工作方式是 XslCompiledTransform 创建一个代码文件,然后将其传递给 CodeDom 进行编译。我相信 MSXML 使用的 JavaScript 引擎与 CodeDom 使用的引擎不同。因此编译问题。此外(自从我查看它已经有一段时间了)可能会发生一些额外的处理以使脚本可编译(我记得对于 C# 中的脚本,创建了一个类,并且所有函数都放在了这个类中)。请注意,由 CodeDom 创建的程序集会加载到执行转换的 appdomain 中。这可能会导致 OutOfMemory 异常,因为 CLR 不允许卸载程序集 - 我前段时间在这里写过:http://blogs.msdn.com/b/xmlteam/archive/2011/09/26/effective-xml-part-5-something-went-really-wrong-outofmemoryexception-and-stackoverflowexception-throw-when-using- xslcompiledtransform.aspx

于 2012-10-29T04:02:24.557 回答