javascript - 如何让 IE9 MSXML6 执行包含 javascript 的集成 XSLT 处理?

标签 javascript xslt dom internet-explorer-9 msxml6

IE9默认应用MSXML6,IE8默认应用MSXML3。事实上,某些功能在 MSXML6 中默认情况下是关闭的,这会导致问题,尤其是在加载像

这样的页面时
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<root>...</root>

引用的 xslt 样式表应用嵌入式 javascript(例如,自定义扩展函数)。

可以在脚本代码中设置 DOM xslt 属性,例如在 Jscript 中:

var xsltDoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
xsltDoc.setProperty("AllowXsltScript", true);
xsltDoc.loadXML(xsltfile);

但是当加载上面提供的文件时,IE9 会自动加载带有默认属性值的 xslt 文件。这导致与 IE8 的显着差异:IE8 将完美加载页面,但 IE9 会抛出错误,因为默认的 MSXML6 DOM 对象属性“allow xslt scripting = false”。 这不是真的 - 请参阅下面我的回答。因此,问题的其余部分无关紧要

如何触发 IE9 加载上面的文件并仍然允许在 xslt 中运行脚本?

注意:我已经按照 msdn 上的建议尝试了 Internet 选项/安全/自定义级别.../脚本/事件脚本 = 启用,但该设置已经正确。

我希望有一个特定的 IE9 处理指令可用,但我想没有。但是也许有一个特殊的样式表属性可以配合 IE9 xslt 加载。
结论也可能是这只能通过在主 html 文件上运行脚本来实现,其中没有自动加载,但 XML 和 XSLT 被加载到具有指定属性(如 AllowXsltScript)的指定 DOM 对象中,并且输出然后将转换显式加载到浏览器中。

最佳答案

我在 http://home.arcor.de/martin.honnen/xslt/test2012050301.xml 尝试了一个例子样式表为 http://home.arcor.de/martin.honnen/xslt/test2012050301.xsl它适用于我和 Windows 7 上的 IE 9。基于该脚本即使在 IE 9 使用 MSXML 版本 6 执行样式表时也会启用。如果您遇到错误,则必须有其他原因,或者您的代码必须有某些特殊之处,您将需要发布最少但完整的详细信息,以便我们重现该问题。

关于javascript - 如何让 IE9 MSXML6 执行包含 javascript 的集成 XSLT 处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10432821/

相关文章:

asp.net - ASP.NET 客户端将单个字符串值(在代码中定义)传递给服务器的绝对最简单的方法是什么?

javascript - 一旦用户鼠标离开文本字段就运行函数

javascript - 可折叠的 CSS 和 JS 在 Angular 应用程序中不起作用

xslt - 在哪里可以找到XSLT的静态/动态代码分析工具?

java - Java XSLT 转换中 newTransformer 和 newTemplates 的区别

修复损坏的 HTML 的算法

javascript - 在 JavaScript/HTML 中访问 JSON 数组中的最小值和最大值

xslt - 如何检查元素名称是否包含特定字符串?

javascript - 使用 jquery 检查 css 的属性值

javascript - 在 GWT 中按属性获取 DOM 元素?