Ответ 1
Содержание.
- Терминология
- Языки и сериализация
- Технические характеристики
- Типы браузеров и содержимого (MIME)
- Поддержка браузера
- Валидаторы и определения типов документов
- Режимы Quirks, Limited Quirks и Standards.
Терминология
Одна из трудностей описания этого заключается в том, что терминология в официальных спецификациях менялась с годами, поскольку HTML был впервые представлен. Ниже приведена терминология HTML5. Кроме того, "файл" используется как общий термин для обозначения файла, документа, потока ввода, потока октетов и т.д., Чтобы избежать необходимости делать мелкие различия.
Языки и сериализация
HTML и XHTML определяются в терминах языка и сериализации.
Язык определяет словарь элементов и атрибутов и их модель содержимого, т.е. какие элементы разрешены внутри, в которых другие элементы, какие атрибуты разрешены для какого-либо элемента, а также цель и значение каждого элемента и атрибута.
Сериализация определяет, как разметка используется для описания этих элементов и атрибутов в текстовом документе. Сюда входят те теги, которые требуются, и которые могут быть выведены, и правила для этих выводов. Он описывает такие вещи, как то, как должны быть помечены элементы void (например, " > " vs "/ " > " ), и когда значения атрибутов должны быть указаны.
Технические характеристики
Спецификация 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-заголовке "контент-тип". Внутри, как только файл был разобран, браузер обрабатывает объектную модель почти таким же образом, независимо от того, был ли он первоначально предоставлен с использованием сериализации 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, XHTML, поставляемый с использованием типа содержимого XML, может быть проанализирован непосредственно так же, как и другие современные браузеры.
Когда их синтаксические анализаторы XML обнаруживают, что их входные файлы не являются хорошо сформированными XML, некоторые браузеры отображают сообщение об ошибке, а другие отображают страницу, созданную до той точки, где была обнаружена ошибка, а некоторые предлагают пользователю возможность повторите анализ файла с помощью своего парсера HTML.
Валидаторы и определения типов документов
Файлы HTML и XHTML могут начинаться с объявления типа определения документа (DTD), которое указывает язык и сериализацию, которые используются в документе. Валидаторы, такие как http://validator.w3.org/, используют эту информацию для соответствия языку и сериализации, используемым в файле, против правил, определенных в DTD. Затем он сообщает об ошибках, основанных на том, где нарушены правила в DTD, отмеченные в файле.
Не все правила сериализации и языка HTML могут быть описаны в DTD, поэтому валидаторы проверяют только подмножество всех правил, описываемых спецификациями.
HTML 4.01 и XHTML 1.0 определяют DTD с четными, переходными и Frameset, которые отличаются элементами и атрибутами языка, которые разрешены в совместимых файлах.
Валидаторы на основе HTML5, такие как validator.nu, ведут себя как браузеры, обрабатывают страницу в соответствии с типом содержимого HTTP и используют не DTD основанный на правилах, чтобы они ломали ошибки, которые не могут быть описаны DTD.
Режимы Quirks, Limited Quirks и Standards.
Браузеры не проверяют файлы, отправленные им. Они также не используют объявления DTD для определения языка или сериализации файла. Тем не менее, они используют его, чтобы угадать эпоху создания страницы и, следовательно, вероятное поведение синтаксического анализа и рендеринга, которое автор ожидал бы от браузера в то время. Соответственно, они определяют три режима синтаксического анализа и рендеринга, известные как режим Quirks, режим ограниченного выбора (или почти стандарты) и режим стандартов.
Любой файл, используемый с использованием типа содержимого XML, всегда обрабатывается в стандартном режиме. Для файлов, обработанных с помощью анализатора HTML, если нет DTD или DTD определен как очень старый, браузеры используют свой режим причуд. Вообще говоря, файлы HTML 4.01 и XHTML, обработанные как text/html, будут обрабатываться с ограниченным режимом quirks, если они содержат переходный DTD и режим стандартов, если используют строгий DTD.
Если DTD не распознается, режим определяется сложным набором правил. Одним из особых случаев является то, что публичные и системные идентификаторы опущены, а декларация - просто <! DOCTYPE html > . Это, как известно, кратчайшее объявление doctype, где текущие браузеры будут рассматривать файл как режим стандартов. По этой причине это объявление указано для HTML5-совместимых файлов.