Каковы различные типы документов в HTML и что они означают?

StackOverflow https://stackoverflow.com/questions/255470

  •  05-07-2019
  •  | 
  •  

Вопрос

Как следует из названия, какие существуют типы документов и что они означают?Я заметил, что макет выглядит немного иначе в IE7, когда я переключаюсь с

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

к

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Есть ли другие и каковы последствия или последствия?

Спасибо!

Это было полезно?

Решение

А Тип документа, или Декларация типа документа связывает документ с Определение типа документа.

В Определение типа документа является стандартом XML-документа.Существует множество DTD как для документов XML, так и для документов XHTML.XML сам по себе не имеет особой схемы или особого набора правил, за исключением требования, чтобы все было правильно сформировано.Вы можете думать о DTD как о более конкретном схема документа.

Режимы рендеринга

Из-за движения стандартов большинство современных браузеров фактически имеют разные режимы рендеринга (стандартный режим, для рендеринга вашего документа и CSS в соответствии с более современными веб-стандартами и режим причуд, в котором браузер возвращает некоторые идеи рендеринга из первых дней существования Интернета).Эти режимы созданы в целях обратной совместимости.Огромный ландшафт веб-страниц, созданных в первую эпоху Интернета, отображается в соответствии с правилами своего времени, в то время как новые документы могут соответствовать новой волне стандартов.С течением времени и появлением новых форматов потенциально может быть создано соответствующее DTD.

Расхождения в браузере

В идеальном мире страница, загружаемая браузером, будет читать Doctype вверху и использовать его для поиска определения типа документа.Затем схема этого DTD будет использоваться в качестве основы для чтения остальной части документа.Таким образом, доктайпы будут необходимы для проверки документов разметки.DTD предоставит стандарт, по которому должен проверяться ваш документ.

К сожалению, это не идеальный мир.Браузеры здесь не обязательно ведут себя согласованно, а если и ведут себя, то согласованное поведение не совсем соответствует первоначальному видению Doctypes.Хотя анализ выполняется независимо от типа документа, основные браузеры, по крайней мере, проверяют тип документа, чтобы определить режим рендеринга.Если ваш Doctype отсутствует или является неполным, браузер, скорее всего, будет отображать его в режим причуд.Чтобы хорошо написанные современные документы отображались правильно, браузер должен отображать их в стандартный режим.Mozilla, Safari и некоторые последние версии Opera фактически реализуют Почти стандарты режим, который полностью посвящен переходным страницам.

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

Выбор типа документа

Для обеспечения соответствия стандартам по возможности следует использовать строгие типы документов.

При записи в XHTML, этот тип документа является распространенным:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

При записи в HTML 4.1, вместо этого распространено следующее:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

Здесь для полноты перечислены некоторые другие распространенные типы документов для XHTML и HTML 4:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">

Дебаты о строгих и переходных типах документов

Проповедники стандартов призвали веб-разработчиков прекратить использовать Transitional Doctype на новых страницах и вместо этого использовать Strict.Опять же, это тот случай, когда теория и практика сталкиваются с некоторыми трудностями при согласовании.Первоначальная надежда на переходный Doctype заключалась в том, чтобы обеспечить промежуточный этап перевода устаревших веб-сайтов на соответствие стандартам.С переходными типами документов ограничения на элементы и атрибуты буквально «менее строгие», поэтому разработчики смогут быстрее запустить свою работу в стандартном режиме и со временем постепенно устранить остающиеся различия.

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

Полезные инструменты

W3C (Консорциум Всемирной паутины) — это группа, которая играет активную роль в определении такого рода стандартов.У них есть полезный онлайн-инструмент по адресу http://validator.w3.org/ для проверки и подтверждения документов на соответствие их стандартам.Существует множество других сторонних инструментов и расширения браузера с аналогичным функционалом.

Другие советы

Браузеры плевать какой тип документа вы используете (ну, почти правда), они используют его только для одного:решить, какой режим рендеринга использовать.См., например.тот Форекс или Документация Оперы для реальных примеров того, какие алгоритмы используются для принятия решения о том, какой режим использовать (я думаю, что где-то в MSDN спрятана некоторая документация для IE...[Возможно, это правильная страница](http://msdn.microsoft.com/en-us/library/ms535242(VS.85).aspx), не знаю, извините).

Однако в большинстве браузеров есть два основных режима (некоторые браузеры имеют почти стандартный режим слишком):

  • режим причуд (используется, когда не найден «правильный» тип документа, «правильный» с точки зрения браузера):попробуйте отобразить документ так, как это сделала бы какая-нибудь старая версия IE (одно из наиболее важных отличий, т.е.больше всего влияет на рендеринг, заключается в том, что некоторые браузеры используют Ошибка модели коробки IE в этом режиме),
  • и стандартный режим (используется, когда браузер находит тип документа, который он считает правильным):попробуйте сделать так, как говорят стандарты.

Вы можете использовать (нестандартный) document.compatMode в вышеупомянутых браузерах, чтобы проверить, какой режим использовался для рендеринга текущего документа.

(Примечание по XHTML:Я предполагал, что вы предоставляете вам документы в формате HTML (text/html), если вы предоставляете документ в формате XHTML (вероятно, application/xhtml+xml) большинство браузеров сразу переходят в стандартный режим и вообще не заботятся о типе документа, AFAIK.)

КСТАТИ:рекомендация (или то, что выглядело как рекомендация) в другом ответе нарушена, переходный DTD не следует использовать в новых документах.Всегда используйте strict (термин «строгий» вводит в заблуждение, должен быть «по умолчанию» или что-то еще, не страшно), точка:

Авторы должны использовать Strict DTD, когда это возможно, но могут использовать Transitional DTD, когда требуется поддержка атрибутов и элементов представления.-- HTML 4.01:22 Определение типа переходного документа.

Мы рекомендуем авторам писать документы, соответствующие строгому DTD, а не другим DTD, определенным в этой спецификации.-- HTML 4.01:4 Соответствие:требования и рекомендации

И об этом есть много сообщений в блогах, например. пожалуйста, больше никаких переходных DOCTYPE (с 2006 года, но некоторый, У нас, очевидно, с этим пока проблемы :).

Этот пост начался с указания на то, что браузерам все равно, что вы выберете, а затем перерос в разглагольствования о том, как выбрать правильный DTD, интересно…Но если вы собираетесь потратить (/тратить?) время и энергию на выбор DTD, вы можете также выбрать правильный (то есть с точки зрения стандарта HTML 4.01).

Или, вы можете игнорировать все это и вместо этого использовать следующее: скоро в любом случае:

<!doctype html>

(Этот ответ к "любой причине не использовать HTML 5 doctype?" был как-то связан с последней частью.)

Вот официальное объяснение различных DTD от W3C:

http://www.w3.org/QA/2002/04/valid-dtd-list.html

Вы также можете найти следующее полезное:

http://www.freedivs.com/tutorials/Choosing%20a%20DOCTYPE/

Вокруг доктайпов существует много дезинформации.Путаница возникает из-за того, что doctypes изначально предназначались для одной цели (идентифицировать DTD, т.е.используемая HTML-версия), но в реальных браузерах используются для совершенно несвязанных целей.

Объявления Doctype используются только для одна вещь в современных браузерах это переключение между причуды режим рендеринга и стандарты режим рендеринга для CSS.Так что, по сути, это CSS, а не HTML.

Рендеринг в режиме Quirks обратно совместим с некоторыми старыми ошибками рендеринга в старых браузерах и в основном полезен для устаревшего контента, который вы не хотите исправлять.Новый контент всегда должен использовать стандартный режим, поскольку он отображается более корректно и единообразно в браузерах.(При использовании стандартного режима между браузерами все еще существуют различия в рендеринге, но в режиме совместимости они намного хуже.)

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

  • Если в документе нет типа документа, причуды выбран режим.
  • Если в документе есть непризнанный тип документа, стандарты выбран режим.Это означает, что вы можете написать случайный тип документа, например <!DOCTYPE Chris> и он будет работать отлично.
  • Официальные типы документов W3C без правильный URL (вторая строка в теге) выбирает причуды режим.Все остальные типы документов выбирают стандартный режим.(Редактировать:конечно, это сложнее, и в разных браузерах даже различается, какой из распознаваемых типов документов запускает режим совместимости.Се обзор hsivonens, ссылка из другого ответа.)

Исторически доктайпы предназначались для указания того, какая версия и подмножество HTML использовались.HTML4 определяет несколько версий, где «переходный» допускает ряд элементов и атрибутов, которые (например, FONT) не разрешены в «строгом».Браузер теоретически может обрабатывать «строгие» документы, отличные от «переходных».Однако ни один браузер на самом деле не делает этого.

Редактировать:Сканлифф отмечает, что в IE8 будет еще один режим рендеринга — режим «стандартов IE8».Однако AFAIK этот режим запускается не типом документа, а метатегом.

По сути, тип документа определяет, насколько сумасшедшим будет IE.

Если вы не установите XHTML или «строгий», вы будете жить в мире обид, когда дело касается IE (даже если вы установите его, вы все равно будете ненавидеть IE, но это делает его намного лучше).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top