IE не может найти W3C XHTML DTD (ошибка 2146697204)

У меня есть шаблон, который запускает каждую страницу следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<!-- blah blah-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml">
...
</html>

что вызывает ошибку:

Невозможно отобразить страницу XML. Невозможно просмотреть ввод XML с помощью таблицы стилей. Исправьте ошибку и нажмите кнопку «Обновить» или повторите попытку позже.


Сервер не понял запрос, или запрос недействителен. Ошибка обработки ресурса 'http://www.w3.org/TR/xhtm ...

в IE, потому что W3C прекратил обслуживание DTD.

Как правильно это исправить?


person Stella Peristeraki    schedule 15.10.2009    source источник
comment
Мне жаль, что я не могу ответить на ваш вопрос, но мне просто нужно сделать здесь редакционную статью. Это пример каждого моего опыта работы с XML. Какой скрытый ужас.   -  person Jonathan Feinberg    schedule 15.10.2009
comment
@Jonathan: в XML нет ничего, что говорило бы, что он должен загрузить DTD. Также нет ничего, что говорило бы о том, что загрузка XML должна завершиться ошибкой, если он не может найти DTD. Идентификатор DTD не совпадает с его местоположением (намеренно). Если это ваш опыт работы с XML, я могу понять, что это ужас, но тогда вы не использовали инструменты, совместимые с XML (что, к сожалению, слишком часто).   -  person Abel    schedule 19.10.2009


Ответы (4)


Возможное решение

Я загрузил два файла, чтобы вы могли увидеть это в действии:

  1. В виде файла HTML: попробуйте, заголовки text/html.
  2. В файле XML попробуйте, заголовки - text/html.

первый будет работать во всех браузерах. Второй не сработает в IE (и будет работать в других), потому что он игнорирует заголовки сервера. Причина: *.xml окончание части имени файла. Это неправильное поведение IE, но нам придется с этим разобраться. Если ваше имя файла заканчивается на xml или ваш сервер отправляет его как application / xml, измените эти настройки.

Фон

Идентификатор ресурса, на который вы ссылаетесь, не является идентификатором ресурса. Это уникальный идентификатор, так сказать заполнитель. Он никогда не предназначался для загрузки в случаях обслуживания HTML (независимо от того, был ли это XHTML, как в этом случае). Это некорректный IE.

В сообщении, на которое вы ссылаетесь, предполагается, что они могут отключить ресурс. DTD все еще в сети < / em>. С другими стандартами они использовали разные подходы, когда ресурс не находится в сети в том же месте, что и идентификатор (та же проблема, с которой люди сталкиваются с пространствами имен: это не ресурс, это идентификатор).

Это не ужас XML, а просто странное поведение IE. Для работы с IE и XHTML вы должны использовать text/xml как MIME-тип. Если вы запустите его локально, вы можете получить эту ошибку. Попробуйте подать его по-другому.

ПРИМЕЧАНИЕ: прежде чем вы спросите: в спецификации XML указано, что DTD не следует загружать, а следует рассматривать как уникальный идентификатор. Только для проверки XML загрузка ресурса хороша, но стандарт говорит, что идентификатор ресурса и фактический ресурс не обязательно должны совпадать.

person Abel    schedule 15.10.2009

Я нашел сообщение, в котором говорилось, что нечто подобное было связано с проблемами с разрешением.

Возможно, вы захотите попробовать следующее в IE:

Привет, Карл, Просто догадываюсь, в чем может быть проблема .. Настройки безопасности вашего IE вызывают эту ошибку. Если вы отметите «Свойства обозревателя» -> «Безопасность», вы увидите опцию «доступ к источникам данных в разных доменах». Обычно он отключен. Пожалуйста, включите его и посмотрите, работает ли он.

С уважением, Мукул

ИСТОЧНИК: http://www.stylusstudio.com/xsllist/200412/post41070.html < / а>

Я не уверен, какие проблемы безопасности может вызвать этот вариант.

person Roberto Aloi    schedule 15.10.2009
comment
Этот параметр должен оставаться отключенным. В моем IE он отключен, и он не начинает внезапно загружать DTD и не вызывает ошибок. Проще говоря: он не должен (и не будет) загружать DTD, если считает его HTML. - person Abel; 15.10.2009

IE просто не поддерживает XHTML.

Он должен иметь это DTD в своем каталоге DTD. Браузеры не должны загружать DTD (по практическим соображениям спецификация по глупости позволяет это) .

person Kornel    schedule 19.11.2009

Для решения проблемы пользователю необходимо установить следующее обновление:

http://support.microsoft.com/kb/973687/

person Yuhong Bao    schedule 14.11.2010