Подтвердить что ты не робот

Каковы различные доктрины в html и что они означают?

Как гласит название, каковы различные доктрины и что они означают? Я заметил, что макет выглядит немного по-другому в 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">

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

Спасибо!

4b9b3361

Ответ 1

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

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

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

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

Несоответствия браузера

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

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

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

Выбор Doctype

В целях соблюдения стандартов соблюдайте строгие Doctypes, когда это возможно.

При записи в XHTML этот Doctype является общим:

<!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 заключалась в том, чтобы предоставить половину дома для перехода на устаревшие веб-сайты на соответствие стандартам. С переходными доктринами ограничение на элементы и атрибуты буквально "менее строги", поэтому разработчики смогут быстрее выполнить свою работу в стандартном режиме и постепенно прекратить выдающиеся различия во времени.

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

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

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

Ответ 2

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

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

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

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

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

BTW: рекомендация (или, что похоже на рекомендацию) в другом ответе нарушена, transitional DTD не должен использоваться на новых документах. Всегда используйте строгую (термин "строгий" как бы вводит в заблуждение, должен быть "по умолчанию" или что-то еще не страшное), период:

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

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

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

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

Или вы можете игнорировать все это и использовать вместо этого скоро равно:

<!doctype html>

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

Ответ 5

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

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

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

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

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

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

Изменить: scunliffe указывает, что IE8 будет иметь еще один режим рендеринга, режим "IE8 стандартов". Однако AFAIK этот режим не запускается doctype, а метатегом.

Ответ 6

В принципе, doctype определяет, каким будет сумасшедший IE.

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