2

私はASCIIで書かれた数学方程式をMathML形式に変換し、次にMathML形式をOMML形式に変換するWebアプリを構築しています。そのために、XSLTProcessorを使用してMathMLをOMMLに変換するxslファイルを見つけました。私のスクリプトでは、MathMLファイルをビルドしてロードし、それを変換するために、次のコマンドを使用してxslファイルをロードするのに深刻な問題が発生しています。

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

アプリはクライアント側のみであり、個々のユーザーに使用されるため、サーバーはありません。したがって、chromeに権限の問題があることを知っています。

Origin nullは、Access-Control-Allow-Originでは許可されていません。

HTML5でFileReaderを使用しない限り、ローカルファイルシステムから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);

そして、私はまだ同じエラーを抱えています

Origin nullは、Access-Control-Allow-Originでは許可されていません。

このエラーは、アクセスされているファイルがローカルであることをChromeが検出したときに生成されませんか?そして、なぜ彼はファイルがパブリックストレージ(Dropbox)にあるときにファイルがローカルであると考えているのですか?

答えを探して2日が経ちましたが、本当にイライラしています。誰かが私に解決策を提供できますか?ありがとう:)!

4

1 に答える 1

1

アプリを file:/// からオフライン アプリとして実行する場合、XSLT ファイルがオンラインであることは問題ではありません。両方のオリジンが一致する必要があり、アプリではまだ「null」であるため、その XSLT ファイルを取得することはできません。アプリが本当にクライアント側のみである場合は、クライアントがアプリを取得したときにダウンロードするデータの一部としてその XSLT ファイルを含め、base64 でエンコードされたテキストとして保存して、解凍して Javascript で挿入したり、そのままにしておくことができます。 index.html と同じディレクトリに配置し、生成した XML にスタイルシートを相対リンクとしてロードさせます。

于 2013-03-03T14:55:43.850 に答える