Почему "XSLT8690: сбой обработки XSLT" при обработке локального xml + xslt

Обширные исследования не привели меня к пониманию, почему происходит следующее - я надеюсь, что сообщество SO может помочь...

Я скопировал файлы, упомянутые в разделе "Почему HTML1113: перезапуск режима документа из стандартов IE9 в причуды", в локальную файловую систему и открыл XML в IE9 (указав путь D:\... в строке URL).
Удивительно, но поведение совершенно отличается от открытия веб-версии.
Теперь я могу понять, что настройки зоны "Мой компьютер", отличающиеся от настроек зоны Интернета, объясняют всплывающие окна, упомянутые ниже, но я не понимаю, почему результат отличается и почему режим причуд не выбирается автоматически, как это было сделано, когда Открытие XML в Интернете.

Когда я открываю локальный файл, я получаю следующее:

AllowScripts

что, без сомнения, вызвано настройкой локальной зоны. Далее, режим браузера IE9 (а не автоматические причуды, как раньше), и он не работает при применении XSLT:

XSLT8690

Сначала я подумал, что это вызвано базовыми настройками MSXML6 DOM, такими как AllowXsltScript не установлен в true, но я больше не уверен в этом, потому что все работает нормально при открытии веб-версии.
Так почему местный отказывает?

Еще более странно, что открытие веб-версии привело к автоматическому режиму причуд и корректному результату, но когда я переключаюсь в режим причуд для локального файла, это приводит к сбою в объекте DOM MSXML6 - на самом деле это имеет для меня больше смысла, чем отсутствие ошибки, потому что режим причуд вероятно, предлагает только MSXML3 (или должен предлагать только это - но тогда почему автоматические причуды в веб-версии были в порядке?).

Quirks1

После принятия оно меняется на

Quirks2

Теперь, при выборе режима стандартов IE9 снова, я получаю

IE9take2_console

и результат ожидаемый

IE9take2

Повторение событий при использовании локальных файлов (кроме различий в настройках зоны):

  1. Ошибка стандартного режима IE9 XSLT8690
  2. Переключение в режим причуд ошибок
  3. Теперь можно вернуться в режим стандартов IE9.

Повторение событий при открытии веб-версии (кроме различий, связанных с настройками зоны):

  1. Режим причуд автоматически
  2. страница корректно открывается в причудах - по-видимому, MSXML6 все еще используется здесь в режиме авто-причуд
  3. переключиться в режим стандартов IE9 тоже нормально
  4. Вернуться к ошибкам режима причуд, как указано выше ("Параметр неверен")

Что вызывает все эти специфические различия?

1 ответ

Решение

Этот занял у меня некоторое время, но я понял!

Комментарии Пола Свитта привели меня ко многим уже нанесенным на карту, но также и к некоторым неизведанным местам, но в конце концов я начал экспериментировать с настройками безопасности зоны IE9 My Computer напрямую через реестр, увы, но безрезультатно, пока..... Я не посмотрел на Снова всплывающее окно "Свойства обозревателя" и заметили, что есть несколько мест, где можно обновить настройки безопасности.....

Просматривая все настройки IE9, не относящиеся к зонам, я выбрал вкладку "Дополнительно" и обнаружил многообещающую непроверенную в подразделе безопасности:

Allow active content to run in files on My computer

Меняем его (в данном случае на checked) требует перезагрузки, но когда я сделал и снова открыл свой локальный XML-файл, он неожиданно начал работать как веб-файл: он открылся в quirks mode правильно. Кроме того, переключение в режим стандартов IE9 и обратно в режим "причуд" дало такое же поведение, как и в веб. Также всплывающего предупреждения о том, что "скрипты обычно безопасны", больше не было.

Так что это объясняет, почему XSLT8690 возникает ошибка: xslt, или, может быть, просто javascript там считается active content,

Конец истории?
На этот вопрос да, но я до сих пор удивляюсь, почему режим автоматических причуд в порядке, а выбранных вручную причуд - нет.
Я подозреваю, что при первом запуске xslt обрабатывается до автоматического переключения на причуды, и в это время MSXML6 больше не нужен, поскольку страница результатов уже доступна. Но когда вы открываете xml в режиме quirks, он пытается выполнить xslt в режиме quirks, и не может из-за доступного MSXML3 вместо MSXML6.

Другие вопросы по тегам