Вопрос по internet-explorer – Почему «XSLT8690: сбой обработки XSLT» при обработке локальных xml + xslt

1

Обширные исследования не привели меня к пониманию, почему происходит следующее - я надеюсь, что сообщество 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

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

IE9 standards mode XSLT8690 error Switching to quirks mode errors Switching back to IE9 standards mode is OK now

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

quirks mode automatically page opens correctly in quirks - apparently MSXML6 is still used here in the auto quirks mode switch to IE9 standards mode is OK too Back to quirks mode errors as above ("The parameter is incorrect'")

What is causing all these peculiar differences?

Элемент xsl: output необходимо исправить, чтобы указать UTF-8 истандартный режим HTML5 doctype. Paul Sweatte
Ссылка на тип документа XHTML или HTML4, сгенерированная локальным XSLT из IE, равна заблокирован w3, поэтому использование типа документа HTML5 без ссылок URI обязательно. Paul Sweatte
Скомпилировать и выполнить ненадежную таблицу стилей на доверенной странице небезопасно (например, на странице с локального жесткого диска). Таблица стилей может содержать функцию document () или операторы xsl: include / xsl: import, которые способны загружать доверенные файлы и отправлять их обратно в ненадежный домен.XSLT Security в IE9, а также в браузерах Webkit ограничивает локальную обработку таблиц стилей доinline XSLT. Paul Sweatte
@Microsoft есть замечания по поддержке для MSXML4 а также MSXML6 это может помочь. Paul Sweatte
@ PaulSweatte, спасибо за ссылки, но я не вижу там ничего, что объясняет, почему веб-версия действует так сильно отличается от локальной версии (автоматическое управление причудами / никаких отклонений для начинающих - и откуда происходит сбой XSLT локально?). Я могу что-то упустить - в таком случае, не могли бы вы быть более конкретным? Ваш первый комментарий может пригодиться позже, но я сначала хочу понять, почему возникают различия, поскольку файлы сейчас. Наверное, это как-то связано с тем, как IE9 справляется с ситуацией. Maestro13

Ваш Ответ

1   ответ
2

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

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

Allow active content to run in files on My computer

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

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

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

Похожие вопросы