1

IE9 はデフォルトで MSXML6 を適用し、IE8 は MSXML3 を適用します。MSXML6 で特定の機能がデフォルトでオフになっているという事実は、特に次のようなページをロードするときに問題を引き起こします。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<root>...</root>

ここで、参照される xslt スタイルシートは、埋め込まれた JavaScript (カスタム拡張関数など) を適用します。

Jscript などのスクリプト コードで DOM xslt プロパティを設定することができます。

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

ただし、上記のファイルをロードすると、IE9 は xslt ファイルをデフォルトのプロパティ値で自動的にロードします。これにより、IE8 との大きな違いが生まれます。IE8 は問題なくページをロードしますが、MSXML6 DOM オブジェクトの既定のプロパティ "allow xslt scripting = false" が原因で、IE9 はエラーをスローします。これは真実ではありません - 以下の私の答えを見てください。したがって、質問の残りの部分は重要ではありません

IE9 で上記のファイルをロードし、xslt でスクリプトを実行できるようにするにはどうすればよいですか?

注: msdn で提案されているように、インターネット オプション/セキュリティ/カスタム レベル.../スクリプト/アクティブ スクリプト = 有効を既に試しましたが、その設定は既に正しいものでした。

特定の IE9 処理命令が利用できることを望んでいますが、そうではないと思います。しかし、IE9 xslt の読み込みと連携する特別なスタイルシート属性が存在する可能性があります。
結論として、これはメインの html ファイルでスクリプトを実行することによってのみ可能であり、自動読み込みは行われませんが、XML と XSLT は指定されたプロパティ (AllowXsltScript など) を持つ指定された DOM オブジェクトに読み込まれ、変換はブラウザに明示的に読み込まれます。

4

3 に答える 3

1

スタイルシートがhttp://home.arcor.de/martin.honnen/xslt/test2012050301.xslのhttp://home.arcor.de/martin.honnen/xslt/test2012050301.xmlで例を試してみましたが、うまくいきました私と Windows 7 の IE 9 で問題ありません。これに基づいて、IE 9 が MSXML バージョン 6 を使用してスタイルシートを実行する場合でも、スクリプトが有効になります。エラーが発生した場合は、他の理由があるか、コードに固有の何かがあるに違いありません。問題を再現できるように、最小限の完全な詳細を投稿する必要があります。

于 2012-05-03T14:37:39.443 に答える
1

JavaScript によって呼び出される組み込みのブラウザー サポート (IE9、MSXML6) を使用して、クライアント側の XSLT を実行する Web ページがあります。JavaScript は Ajax 呼び出しを使用して、XSLT スタイルシート (静的 .xsl ファイル) をサーバーから XSLT プロセッサ オブジェクト変数に読み込みます。変換される XML は、JavaScript によって作成された XML ドキュメント オブジェクト変数にあります。XML ドキュメントのコンテンツは、ページ上の textarea 要素の値に基づいています。

XSL 変換は、次のエラーを報告した IE9 を除いて、すべてのターゲット ブラウザー (Firefox、Chrome、Safari) の現在のバージョンで機能していました。

「DTD でのデフォルトの名前空間宣言属性の使用はサポートされていません。」

私は無駄にたくさんのことを試しました。最後に、首の後ろに毛が生えている予感で、アトリビュートを挿入しました。

xmlns="http://www.w3.org/1999/xhtml"

Web ページの html 要素内。変換中の XML ドキュメントではなく、XSLT 変換を呼び出した JavaScript を含む Web ページで

エラーはなくなりました。Web ページが IE9 で動作するようになりました。

(この Web ページには、XML 宣言と XHTML 1.0 Strict DOCTYPE も含まれています。)

于 2012-07-05T03:36:04.527 に答える
0

私は見当違いでした。まず、互換モードをトリガーするのは IE のセキュリティ設定ではありません。それは(欠落している)doctypeです。第 2 に、xslt8690-xslt-processing-failedでわかるように、ローカル ファイルのクワークをトリガーしない本当の理由は、ゾーンに関連しない IE9 セキュリティ設定です。

したがって、DOM 設定は何の役割も果たしません。IE が xml または xslt をロードすると、allowXsltScriptプロパティは自動的に true に設定されるようです。

于 2012-05-14T09:33:53.380 に答える