Зачем помещать декларацию типа документа XHTML в файлы HTML? Что это делает? - PullRequest
8 голосов
/ 15 января 2012

Интересно, сколько веб-страниц, с которыми я сталкиваюсь, являются HTML-файлами, но на них есть декларация XHTML DOCTYPE.
Почему люди делают это?Чего они надеются достичь?Почему бы не зарезервировать декларацию типа документа XHTML для реальных файлов XHTML?

Или я что-то упустил?

Редактировать : существует некоторая путаница в отношении того, что представляют собой "настоящие файлы XHTML";чтобы продемонстрировать, что разница не вызвана объявлением DOCTYPE, сравните этот файл с этот .Первый - HTML, второй - XHTML, хотя его содержимое идентично;отличаются только типы файлов.Оба отображаются нормально в совместимых браузерах, но первый анализируется с помощью синтаксического анализатора HTML, а второй - с анализатором XML.

Ответы [ 4 ]

11 голосов
/ 15 января 2012

Зачем помещать декларацию типа документа XHTML в файлы HTML?Что это делает?

Все, что делает, это сообщает валидаторам разметки, что они собираются проверять документ XHTML, а не обычный HTML-документ с корнем SGML.В нем описывается содержание , или, более конкретно, следующая разметка , но не более того.

Почему люди делают это?Чего они надеются достичь?Почему бы не зарезервировать декларацию типа документа XHTML для реальных файлов XHTML?

Или я что-то упустил?

Вид.На самом деле произошло то, что люди не знали , что простое размещение декларации типа XHTML поверх HTML-документа не превращало его автоматически в документ XHTML , хотя, по общему признанию, это былото, на что все надеялись.

Видите ли, большинство веб-серверов и / или веб-приложений там не настроены на правильную сериализацию документов XHTML как application/xhtml+xml, вместо этого они предпочитают обслуживать веб-страницы просто как text/html,(Для серверов это, как правило, из-за расширения файла .html больше, чем что-либо еще, на самом деле.) Это приводит к тому, что браузеры решают, что они получили обычный HTML-документ, и, таким образом, чушь разборов супа тегов мы все узнали илюбовь неизбежно наступает.

Обратите внимание, что это не имеет значения, даже если у вас есть метатег, подобный этому, в вашем документе XHTML:

<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />

Браузеры игнорируют это и смотрят только нафактический заголовок HTTP Content-Type, который был отправлен вместе с документом XHTML.

Что еще хуже, Internet Explorer, являющийся наиболее часто используемым браузером в последние несколько лет в период расцвета XHTML, никогда должным образом не поддерживал application/xhtml+xml MIME-тип перед окончательной версией 9: вместо анализа разметки, построения DOM и рендеринга страницы все, что нужно будет сделать, это запросить загрузку файла.Это не делает XHTML-страницу очень полезной!

Итак, угадайте, с чем нам всем пришлось жить, пока HTML5 не станет крутым?

Это, наряду с такими вещами, как IE6, становится странным на страницах с объявлением XML перед объявлением doctype также является одним из главных факторов, приводящих к падению XHTML (наряду с XHTML 1.1, который не получил широкого распространения, и отменой XHTML 2.0 в пользу HTML5).

5 голосов
/ 15 января 2012

Большинство людей используют тип документа XHTML, потому что они читают его где-то в старой книге или читают на форуме, но в остальном используют его без каких-либо технических причин, о которых они знают.Вряд ли кто-то использует его должным образом, используя его как application / xml + xhtml.Обслуживание страниц XHTML как text / html означает «теговый суп» или «неработающий HTML».Это не должно быть сделано, но браузеры обычно справляются с этим хорошо.

Вы правы, задаваясь вопросом об этом.Это сводит меня с ума.

3 голосов
/ 15 января 2012

Я предполагаю, что вы спрашиваете, почему люди подают документы XHTML в виде HTML, используя тип text/html MIME вместо application/xhtml+xml.

В основном это из-за ошибочного понимания совместимости:Многие браузеры просто не понимают MIME-тип XHTML + XML, из-за чего пользователи просто используют его как HTML, чтобы преодолеть это.Поскольку браузеры часто не жалуются на то, что они получают, и люди не склонны много исследовать, большинство людей предполагают, что браузеры просто воспринимают документ XHTML-doctyped как XHTML, даже если он был представлен как HTML.Но они не - они служат им как HTML.Поскольку два языка очень похожи, люди редко замечают разницу.

Так что нет, вы ничего не упускаете;это очень плохая практика.В наши дни, к счастью, после HTML5 он становится все менее распространенным.

2 голосов
/ 15 января 2012

Прикольная вещь в XHTML заключается в том, что, поскольку IE не понимал миметип XML (application/xhtml+xml) на пике популярности XHTML, большинство людей фактически никогда не использовали его XML-часть в качестве IE8, и поэтому меньше отказываются отображать контент .

Это означало, что миллионы сайтов думают, что используют XHTML, соответствующий стандартам, тогда как на самом деле они анализируются как искаженный / странный HTML4.

К счастью, появился HTML5 и правильно определил синтаксический анализ документов, устраняя большую часть неопределенности, которая окружала XHTML (весь этот переходный и строгий мусор).

Люди, которые добавляют пролог XML перед doctype, делают себе дополнительную медвежью услугу, так как комментарий перед doctype заставит старый IE использовать режим причуд, который, среди прочего, возвращает старую блочную модель в IE6 и ниже. Это, несомненно, способствовало массовой ненависти к IE6, так как в режиме «причуд» он имеет значительные ошибки, которые приводят к тому, что современные макеты полностью ломаются, а не просто лишаются новых функций.

Короткий ответ: в этой отрасли многие люди просто копируют и вставляют код, не понимая его.

...