Почему "XSLT8690: сбой обработки XSLT" при обработке локального xml + xslt
Обширные исследования не привели меня к пониманию, почему происходит следующее - я надеюсь, что сообщество SO может помочь...
Я скопировал файлы, упомянутые в разделе "Почему HTML1113: перезапуск режима документа из стандартов IE9 в причуды", в локальную файловую систему и открыл XML в IE9 (указав путь D:\...
в строке URL).
Удивительно, но поведение совершенно отличается от открытия веб-версии.
Теперь я могу понять, что настройки зоны "Мой компьютер", отличающиеся от настроек зоны Интернета, объясняют всплывающие окна, упомянутые ниже, но я не понимаю, почему результат отличается и почему режим причуд не выбирается автоматически, как это было сделано, когда Открытие XML в Интернете.
Когда я открываю локальный файл, я получаю следующее:
что, без сомнения, вызвано настройкой локальной зоны. Далее, режим браузера IE9 (а не автоматические причуды, как раньше), и он не работает при применении XSLT:
Сначала я подумал, что это вызвано базовыми настройками MSXML6 DOM, такими как AllowXsltScript
не установлен в true, но я больше не уверен в этом, потому что все работает нормально при открытии веб-версии.
Так почему местный отказывает?
Еще более странно, что открытие веб-версии привело к автоматическому режиму причуд и корректному результату, но когда я переключаюсь в режим причуд для локального файла, это приводит к сбою в объекте DOM MSXML6 - на самом деле это имеет для меня больше смысла, чем отсутствие ошибки, потому что режим причуд вероятно, предлагает только MSXML3 (или должен предлагать только это - но тогда почему автоматические причуды в веб-версии были в порядке?).
После принятия оно меняется на
Теперь, при выборе режима стандартов IE9 снова, я получаю
и результат ожидаемый
Повторение событий при использовании локальных файлов (кроме различий в настройках зоны):
- Ошибка стандартного режима IE9 XSLT8690
- Переключение в режим причуд ошибок
- Теперь можно вернуться в режим стандартов IE9.
Повторение событий при открытии веб-версии (кроме различий, связанных с настройками зоны):
- Режим причуд автоматически
- страница корректно открывается в причудах - по-видимому, MSXML6 все еще используется здесь в режиме авто-причуд
- переключиться в режим стандартов IE9 тоже нормально
- Вернуться к ошибкам режима причуд, как указано выше ("Параметр неверен")
Что вызывает все эти специфические различия?
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.