HTML 4, HTML 5, XHTML, типы MIME - категорический ресурс

Темы HTML по сравнению с XHTML и XHTML как текст/HTML по сравнению с XHTML как XHTML довольно сложны. К сожалению, трудно получить полное изображение, так как информация распространена главным образом по частям вокруг сети или прокладывается под землей глубоко на техническом жаргоне W3C. Кроме того, существует некоторая распространяемая дезинформация. Я предлагаю сделать это категорическим ТАК ресурс о теме, описывая самые важные аспекты:

  • HTML 4
  • HTML 5
  • XHTML 1.0 как текст/HTML, application/xml+xhtml
  • XHTML 1.1 как application/xml+xhtml

Каковы практические последствия каждого?
Что такое распространенные ошибки?
Какова важность надлежащих типов MIME для каждого?
Как различные браузеры обрабатывают их?

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

29
задан 5 revs, 3 users 63% 18 April 2010 в 22:51
поделиться

5 ответов

Содержание.

  • Терминология
  • Языки и сериализация
  • Спецификации
  • Типы парсеров браузеров и содержимого (MIME)
  • Поддержка браузера
  • Валидаторы и определения типов документов
  • Особенности, ограниченные особенности и режимы стандартов.

Терминология

Одна из трудностей описания этого явно состоит в том, что терминология в официальных спецификациях изменилась с годами с тех пор, как впервые был введен HTML. Нижеследующее основано на терминологии HTML5. Кроме того, «файл» используется как общий термин для обозначения файла, документа, входного потока, потока октетов и т. Д., Чтобы избежать необходимости делать тонкие различия.

Языки и сериализация

HTML и XHTML определяются в терминах языка и сериализации.

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

Сериализация определяет, как разметка используется для описания этих элементов и атрибутов в текстовом документе. Это включает в себя, какие теги требуются и какие могут быть выведены, а также правила для этих выводов. Он описывает такие вещи, как то, как должны быть размечены пустые элементы (например, «>» против «/>») и когда значения атрибутов должны быть заключены в кавычки.

Спецификации

Спецификация HTML 4.01 - это текущая спецификация, которая определяет как язык HTML, так и сериализацию HTML.

XML 1.0 определяет сериализацию, но оставляет определение языка другими спецификациями, которые называются «XML-приложениями»

. Используются обе спецификации XHTML 1.0 и 1.1. По сути, они используют тот же язык, что и HTML 4.01, но используют другую сериализацию, совместимую со спецификацией XML 1.0. т.е. XHTML - это приложение XML.

Спецификация HTML5 (по состоянию на 18 апреля 2010 г., черновик) описывает новый язык как для HTML, так и для XHTML. Этот язык в основном является надмножеством языка HTML 4.01, но предназначен только для обратной совместимости с существующими веб-инструментами (например, браузерами, поисковыми системами и инструментами разработки), а не с предыдущими спецификациями, в которых возникают различия. Таким образом, значения некоторых элементов иногда меняются по сравнению с более ранними спецификациями. Точно так же каждая из сериализаций обратно совместима с текущими инструментами.

Типы парсеров и содержимого браузера (MIME)

Когда текстовый файл отправляется в браузер, он анализируется в его внутренней структуре памяти (объектной модели). Для этого он использует синтаксический анализатор, который следует либо правилам сериализации HTML, либо правилам сериализации XML. Какой синтаксический анализатор он использует, зависит от того, какой тип контента он определяет, для нелокальных файлов на основе HTTP-заголовка «content-type». Внутренне, после того как файл был проанализирован, браузер обрабатывает объектную модель почти одинаково, независимо от того, была ли она изначально предоставлена ​​с использованием сериализации HTML или XHTML.

Чтобы браузер мог использовать свой синтаксический анализатор XHTML, HTTP-заголовок типа содержимого должен быть одним из типов содержимого XML.Чаще всего это либо application / xml , либо application / xhtml + xml . Любой тип содержимого, отличный от XML, будет означать, что файл, независимо от того, соответствует ли он всем языку XHTML и правилам сериализации или нет, не будет обрабатываться браузером как XHTML.

Использование типа содержимого HTTP text / html (или в большинстве резервных сценариев, когда тип содержимого отсутствует или любой другой тип, отличный от XML) заставит браузер использовать свой анализатор сериализации HTML.

Одно из ключевых различий между двумя анализаторами заключается в том, что анализатор сериализации HTML выполняет восстановление после ошибок. Если входной файл для синтаксического анализатора не соответствует правилам сериализации HTML, синтаксический анализатор восстановится способами, реконструированными из предыдущих браузеров, и продолжит построение своей объектной модели, пока не достигнет конца файла. HTML5 содержит первое нормативное определение восстановления, но ни один из основных браузеров не предоставил реализацию алгоритма, включенного в выпускной версии по состоянию на 26 апреля 2010 года.

В отличие от этого, синтаксический анализатор сериализации XML останавливается, когда обнаруживает что-либо, что он не может интерпретировать как XML (т.е. когда он обнаруживает, что файл не является правильно сформированным XML). Это требуется от парсеров по спецификации XML 1.0.

Поддержка браузера

Большинство современных браузеров поддерживают как анализатор HTML, так и анализатор XML. Однако в Microsoft Internet Explorer версии 8.0 и более ранних синтаксический анализатор XML не может напрямую создавать объектную модель для визуализации в виде HTML-страницы.Однако структура XML может быть обработана с помощью файла XSLT для создания потока, который, в свою очередь, будет проанализирован с помощью анализатора HTML для создания объектной модели, которая может быть отображена.

Начиная с версии Internet Explorer 9 Platform Preview, XHTML, предоставляемый с использованием типа содержимого XML, можно анализировать напрямую таким же образом, как и в других современных браузерах.

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

Валидаторы и определения типов документов

Файлы HTML и XHTML могут начинаться с объявления определения типа документа (DTD), которое указывает язык и сериализацию, которые используются в документе. Валидаторы, такие как http://validator.w3.org/ , используют эту информацию для сопоставления языка и сериализации, используемых в файле, с правилами, определенными в DTD. Затем он сообщает об ошибках в зависимости от того, где нарушаются правила в DTD из-за разметки в файле.

Не все правила сериализации и языка HTML могут быть описаны в DTD, поэтому валидаторы проверяют только подмножество всех правил, описанных в спецификациях.

HTML 4.01 и XHTML 1.0 определяют DTD Strict, Transitional и Frameset, которые различаются языковыми элементами и атрибутами, которые разрешены в совместимых файлах.

Валидаторы на основе HTML5, такие как validator.nu , больше похожи на браузеры, обрабатывая страницу в соответствии с типом содержимого HTTP и используя набор правил, не основанный на DTD, так что они обнаруживают ошибки, которые невозможно описать. по DTD.

Режимы Quirks, Limited Quirks и Standards.

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

Любой файл, обслуживаемый с использованием типа содержимого XML, всегда обрабатывается в стандартном режиме. Для файлов, проанализированных с помощью парсера HTML, если DTD не предоставлено или DTD определено как очень старый, браузеры используют свой режим причуд. Вообще говоря, файлы HTML 4.01 и XHTML, обрабатываемые как text / html, будут обрабатываться в ограниченном режиме причуд, если они содержат переходное DTD, и в стандартном режиме, если используется строгое DTD.

Если DTD не распознается, режим определяется сложным набором правил. В одном из особых случаев опущены общедоступный и системный идентификаторы, а объявление выглядит просто . Это, как известно, самое короткое объявление типа документа, при котором текущие браузеры будут рассматривать файл как стандартный режим. По этой причине это объявление используется для файлов, совместимых с HTML5.

38
ответ дан 28 November 2019 в 01:52
поделиться

HTML

Контроль качества

  • HTML5 все еще имеет довольно незрелые инструменты контроля качества
  • HTML 4 существует уже давно и имеет очень зрелые инструменты контроля качества.

Поддержка браузером

  • HTML 5 - Биты и части поддерживаются различными браузерами. Вам нужен Javascript для поддержки большинства вещей, основные структурные элементы (например,
    ) очень сильно падают, если Javascript недоступен. *
  • HTML 4 хорошо поддерживается

* Требуются некоторые пояснения и примеры.

2
ответ дан 28 November 2019 в 01:52
поделиться

XHTML

QA

XHTML имеет зрелые инструменты контроля качества, но более свободные DTD (например,