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 オブジェクトに読み込まれ、変換はブラウザに明示的に読み込まれます。