使用javascript加载XSL文件

时间:2013-03-03 11:24:08

标签: javascript xml html5 xslt

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

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

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

  

Access-Control-Allow-Origin不允许使用原点null。

我了解到我无法从本地文件系统加载xsl文件,除非我使用 FileReader HTML5 ,但这需要我使用表单输入,我不希望这样。

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

    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不允许使用原点。

当Chrome检测到正在访问的文件是本地文件时,是否产生此错误?为什么他认为文件在公共存储(Dropbox)上时是本地文件?

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

1 个答案:

答案 0 :(得分:1)

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