2

我正在构建一个 Web 应用程序,它将用 ascii 编写的数学方程转换为 MathML 格式,然后将 MathML 格式转换为 OMML 格式。为此,我找到了一个使用XSLTProcessor将 MathML 转换为 OMML 的 xsl 文件。在我的脚本中,我设法构建了 MathML 文件并加载它,并对其进行转换,我在加载 xsl 文件时遇到了严重问题:

    var xsltProcessor=new XSLTProcessor();
    xsltProcessor.importStylesheet("MML2OMML.XSL");

该应用程序只是一个客户端,它将用于个人用户,因此没有服务器。所以知道chrome有权限问题:

Access-Control-Allow-Origin 不允许 Origin null。

我了解到,除非我将FileReaderHTML5一起使用,否则我无法从本地文件系统加载 xsl 文件,但这需要我使用表单输入,我不想要这个。

所以我尝试使用XMLHttpRequest将文件放在我的公用文件夹中,使用以下代码:

    var request = new XMLHttpRequest();
    var url = "http://dl.dropbox.com/u/27440550/MML2OMML.XSL";
    request.open("GET",url,true);
    request.send();
    console.log(request.responseXML);

我仍然有同样的错误

Access-Control-Allow-Origin 不允许 Origin null。

Chrome检测到被访问的文件是本地文件时,不是会产生这个错误吗?为什么他认为文件在公共存储(Dropbox)上时是本地的?

已经两天了,我正在寻找答案,我真的很沮丧。有人可以为我提供解决方案吗?谢谢:)!

4

1 回答 1

1

如果您从 file:/// 将应用程序作为离线应用程序运行,那么 XSLT 文件是否在线并不重要;两个来源都必须一致,并且对于您的应用程序,它仍然是“null”,因此您将无法获取该 XSLT 文件。如果应用程序确实只是客户端,请将该 XSLT 文件作为客户端在获取应用程序时下载的数据的一部分包含在内,并将其存储为 base64 编码文本,以便您可以使用 Javascript 解压缩并注入它,或者让它坐下来在与您的 index.html 相同的目录中,然后使您生成的 XML 将样式表作为相对链接加载。

于 2013-03-03T14:55:43.850 回答