2011-07-08 12 views
8

ある場合IE9とChromeは、XSLとXMLをレンダリングしない:XMLがローカルであるとXSLは、私は、次のXML持つリモートサーバー上

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="http://www.test.com/AuditTrail.xsl"?> 

とXSLを:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <html> 
     <head><title>Test</title></head> 
    </html> 
</xsl:stylesheet> 

これはIE8でうまく動作しますが、 IE9やChromeでは使用できません。 XMLソースファイルがローカルマシン上にある場合、IE9がリモートサーバーからXSLをロードすることを禁止しているようです。 ブラウザのセキュリティ設定を邪魔することなく、IE9とChromeでローカルのXMLファイルにリモートXSLファイルを適用する方法はありますか? XMLレポートを生成し、ブラウザに表示し、リモートサーバーでホストされているスタイルシートで変換されたデスクトップアプリケーションがあります。

答えて

7

これはローカルで動作しますか? XMLとXSLTの両方にいくつかのエラーがあるので、私はそうは思わない。

ChromeはローカルXMLとXSLT処理をブロックします。それはセキュリティ上の理由から問題です。いくつかの回避策については、Chrome Bug Reportをご覧ください。

IE9は、ローカルXMLとリモートXSLTの混在のサポートを無効にしました。また、セキュリティ上の理由から!

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="http://www.test.com/AuditTrail.xsl"?> 
<hello/> 

とあなたのXSLTは、いくつかのXSLTテンプレート持っている必要があります:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 
    <html> 
    <head><title>Test</title></head> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 

での

あなたのXMLには、少なくとも1つのルート要素を持っている必要があります(私はそのためのリンクを持っていません)この修正はIE8とFirefoxで動作します。
Chromeでは、XMLとXSLTをウェブサーバー上に配置する必要があります。 IE9では、どちらもWebサーバー上に置く必要があります。

+0

@TomのようなJavaScriptソリューションに切り替える可能性があります。 jqueryトランスフォーム。これは、XSLTを書き直すことなく動作するはずです(テストしませんでした)[Example here](http://stackoverflow.com/questions/2042178/chrome-and-safari-xslt-using-javascript/2042441#2042441) – therealmarv

+0

My xml xsltにはルート要素とテンプレートがあります。私はちょうどヘッダを表示したかったので、すべて残しておきました。あなたの答えは、これがセキュリティ上の制限(ウェブとローカル)によるものだと確信しています。そのため、XMLとそれが変換される方法を変更しないで動作させる方法はありません。 – TJF

+1

いくつかの(悪い)解決策がありますが、あなたのプログラムがこのXMLを変換する方法を変更し、ブラウザのXSLTに依存せず、レポートを表示する場合は独自のXSLTライブラリを使用することをお勧めします。ここでいくつかの悪い解決策があります: - あなたのIEをIE8にダウングレードします。 - Firefoxで試してみてください。 - この[Chromium Bug Comment](http://code.google.com/p/chromium/issues/detail?id=70088#c12) – therealmarv

3

は、我々は

は私が最も簡単な方法は、ダウンロードすると思い リモートサーバー上でホストされている スタイルシートで形質転換 は、XMLレポートを生成し、ブラウザで にそれらを表示するデスクトップアプリケーションを、持っていますユーザーのローカルハードディスク(そのアプリケーションを使用している)上のHTTPプロトコルを介してスタイルシートの保存/キャッシュ(最後のコピー)を行ってから、完全に合法的なクライアント側変換を実行することができます。

関連する問題