Содержание.
- Терминология
- Языки и сериализации
- Технические характеристики
- Типы анализаторов и содержимого браузера (MIME)
- Поддержка браузера
- Валидаторы и определения типов документов
- Режимы Quirks, Limited Quirks и Standards.
Терминология
Одна из трудностей описания этого заключается в том, что терминология в официальных спецификациях менялась с годами с момента появления 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 (по состоянию на 2010-04-18, черновик) описывает новый язык для 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 содержит первое нормативное определение восстановления, но ни один из основных браузеров не поставил реализацию алгоритма, включенного в версии выпуска на 2010-04-26.
Напротив, анализатор сериализации 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, режим ограниченных Quirks (или почти стандартов) и режим стандартов.
Любой файл, обслуживаемый с использованием типа контента XML, всегда обрабатывается в стандартном режиме. Для файлов, анализируемых с использованием анализатора HTML, если DTD не предоставлен или DTD определен как очень старый, браузеры используют режим своих причуд. Вообще говоря, файлы HTML 4.01 и XHTML, обработанные как text / html, будут обрабатываться в режиме ограниченных причуд, если они содержат переходный DTD, и в режиме стандартов, если используется строгий DTD.
Если DTD не распознается, режим определяется сложным набором правил. В одном особом случае публичные и системные идентификаторы опущены, а объявление просто <! DOCTYPE html>. Известно, что это самое короткое объявление типа документа, в котором современные браузеры рассматривают файл как стандартный режим. По этой причине это объявление, указанное для файлов, совместимых с HTML5.