Декларация типа документа
Объявление типа документа , или DOCTYPE , — это инструкция, которая связывает конкретный документ XML или SGML (например, веб-страницу ) с определением типа документа (DTD) (например, формальным определением конкретной версии HTML 2.0 — 4.0 ). [1] В сериализованной форме документа он проявляется как короткая строка разметки , соответствующая определенному синтаксису.
Механизмы HTML разметки в современных веб-браузерах выполняют «обнюхивание» или «переключение» DOCTYPE, при этом DOCTYPE в документе служит text/html
определяет режим макета, например « режим особенностей » или «режим стандартов». text/html
сериализация HTML5 , которая не основана на SGML, использует DOCTYPE только для выбора режима. Поскольку веб-браузеры реализованы с помощью анализаторов HTML специального назначения, а не анализаторов общего назначения на основе DTD, они не используют DTD и никогда не получают к ним доступа, даже если указан URL-адрес. DOCTYPE сохраняется в HTML5 как «по большей части бесполезный, но обязательный» заголовок только для запуска «стандартного режима» в обычных браузерах. [2]
Синтаксис
[ редактировать ]Общий синтаксис объявления типа документа:
<!DOCTYPE root-element PUBLIC "/quotedFPI/" "/quotedURI/" [
<!-- internal subset declarations -->
]>
или
<!DOCTYPE root-element SYSTEM "/quotedURI/" [
<!-- internal subset declarations -->
]>
Название типа документа
[ редактировать ]Открытие <!DOCTYPE
за синтаксисом следует разделительный синтаксис [3] : 403–404 (например, пробелы, [3] : 297–298, 372 или (кроме XML) комментарии, открывающиеся и закрывающиеся двойным дефисом ASCII ), [3] : 372, 391 за которым следует имя типа документа [3] : 403–404 (т.е. имя корневого элемента, который DTD применяет к деревьям, происходящим от него). В XML корневой элемент, представляющий документ, является первым элементом документа. Например, в XHTML корневым элементом является <html>, он является первым открытым элементом (после объявления типа документа) и последним закрытым.
Поскольку синтаксис внешнего идентификатора и внутреннего подмножества не является обязательным, [3] : 403–404 имя типа документа — единственная информация, которую обязательно указывать в объявлении DOCTYPE.
Внешний идентификатор
[ редактировать ]Объявление DOCTYPE может дополнительно содержать внешний идентификатор , следующий за именем корневого элемента (и разделяющий синтаксис, например пробелы), но перед любым внутренним подмножеством. [3] : 403–404 Это начинается с ключевого слова SYSTEM
или ключевое слово PUBLIC
, [3] : 379 указание того, указано ли DTD с использованием общедоступного идентификатора, идентифицирующего его как общедоступный текст , т. е. текст, используемый несколькими компьютерными системами (независимо от того, является ли это доступным общедоступным текстом, доступным для широкой публики, или недоступным общедоступным текстом, совместно используемым только внутри организации ). [3] : 180–182 Если используется ключевое слово PUBLIC, за ним следует общедоступный идентификатор, заключенный в двойные или одинарные ASCII кавычки . Публичный идентификатор не указывает на место хранения, а скорее представляет собой уникальную фиксированную строку, предназначенную для поиска в таблице (например, в каталоге SGML ); [3] : 180 однако в некоторых (но не во всех) профилях SGML общедоступный идентификатор должен быть создан с использованием определенного синтаксиса, называемого формальным общедоступным идентификатором (FPI), который определяет владельца, а также то, доступен ли он широкой публике. [3] : 182–183
Публичный идентификатор (если присутствует) или SYSTEM
ключевое слово (в противном случае) может (а в XML должно) [4] за ним следует «системный идентификатор», который также заключен в кавычки. Хотя интерпретация системных идентификаторов в целом SGML полностью зависит от системы (и может быть именем файла, ключом базы данных, смещением или чем-то еще), [3] : 378 XML требует, чтобы они были URI . [5] Например, FPI для XHTML 1.1 равен "-//W3C//DTD XHTML 1.1//EN"
и для XHTML 1.1 доступны 3 возможных системных идентификатора в зависимости от потребностей. Одним из них является на URL-адрес. ссылка "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
. Это означает, что анализатор XML должен найти DTD специфическим для системы способом, в данном случае с помощью URL-ссылки на DTD, заключенной в двойные кавычки.
В документах XHTML объявление типа документа всегда должно явно указывать системный идентификатор. С другой стороны, в документах на основе SGML, таких как HTML, соответствующий системный идентификатор может быть автоматически выведен из данного общедоступного идентификатора. Эта ассоциация может, например, выполняться посредством файла каталога, преобразующего FPI в системный идентификатор. [6] SYSTEM
Ключевое слово (за исключением XML) также может использоваться без последующего системного идентификатора, указывающего на то, что DTD существует, но его следует вывести из имени типа документа. [3] : 378
Внутреннее подмножество
[ редактировать ]Последняя, необязательная часть объявления DOCTYPE заключена в квадратные скобки ( []
) и называется внутренним подмножеством . Его можно использовать для добавления/редактирования сущностей или добавления/редактирования поведения ключевых слов PUBLIC. [7] Возможно, но редко, включить весь DTD в документ во внутреннее подмножество, а не ссылаться на него из внешнего файла. [3] : 402 И наоборот, внутреннее подмножество иногда запрещено в простых профилях SGML, особенно для базовых анализаторов HTML, которые не реализуют полный анализатор SGML.
Если в объявление DOCTYPE включены как внутреннее подмножество DTD, так и внешний идентификатор, внутреннее подмножество обрабатывается первым, а внешнее подмножество DTD обрабатывается так, как если бы оно было включено в конец внутреннего подмножества. Поскольку более ранние определения имеют приоритет над более поздними определениями в DTD, это позволяет внутреннему подмножеству переопределять определения во внешнем подмножестве. [3] : 402–403
Пример
[ редактировать ]Первая строка страницы Всемирной паутины может выглядеть следующим образом:
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="ar" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
Это объявление типа документа для XHTML включает в себя по ссылке DTD, открытый идентификатор которого равен -//W3C//DTD XHTML 1.0 Transitional//EN
и чей системный идентификатор http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
. Распознаватель объектов может использовать любой идентификатор для поиска внешнего объекта, на который ссылаются. Ни в этом примере, ни в последующих не указано внутреннее подмножество. Корневой элемент объявлен как html
и, следовательно, это первый тег, который открывается после окончания объявления doctype в этом примере, а также в последующих. Тег HTML не является частью объявления типа документа, но он включен в примеры для ориентации.
Общие DTD
[ редактировать ]Некоторые распространенные DTD помещены в списки. W3C подготовил список DTD, обычно используемых в сети, который содержит «голый» DTD HTML5, старые DTD XHTML/HTML, DTD распространенных встроенных форматов на основе XML, таких как MathML и SVG , а также «составные» документы, которые объединяют эти DTD. форматы. [8] И W3C HTML5 , и соответствующая ему версия WHATWG рекомендуют браузерам принимать только XHTML DTD определенных FPI и отдавать предпочтение использованию внутренней логики, а не извлечению внешних файлов DTD. Кроме того, он определяет «внутреннее DTD» для XHTML, которое представляет собой просто список имен объектов HTML. [9] : §13.2
HTML 4.01 DTD
[ редактировать ]Строгий DTD не допускает презентационную разметку, аргументируя это тем, что вместо этого следует использовать каскадные таблицы стилей. Вот как выглядит Strict DTD:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
Переходный DTD допускает использование некоторых старых атрибутов PUBLIC и устаревших:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
Если фреймы используются , вместо них необходимо использовать Frameset DTD, например:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
XHTML 1.0 DTD
[ редактировать ]XHTML DTD также являются строгими, переходными и наборами фреймов.
XHTML строгое DTD. теги не Устаревшие поддерживаются, и код должен быть написан правильно в соответствии со спецификацией XML.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
XHTML Transitional DTD похож на XHTML Strict DTD, но разрешены устаревшие теги.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
XHTML Frameset DTD — единственный XHTML DTD, поддерживающий Frameset. DTD приведен ниже.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
XHTML 1.1 ОТД
[ редактировать ]XHTML 1.1 — это самая последняя завершенная версия XHTML, в которой реализована поддержка модульности XHTML . XHTML 1.1 имеет такую же строгость, как и XHTML 1.0 Strict.
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Базовые DTD XHTML
[ редактировать ]XHTML базовый 1.0
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML Basic 1.0//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
XHTML базовый 1.1
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML Basic 1.1//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">
HTML5 без DTD DOCTYPE
[ редактировать ]HTML5 использует DOCTYPE
декларация, которая очень короткая из-за отсутствия ссылок на DTD в форме URL-адреса или FPI. Все, что он содержит, — это имя тега корневого элемента документа. HTML
. [10] По словам самого проекта спецификации:
<!DOCTYPE html>
, без учета регистра.
За исключением отсутствия URI или строки FPI (строка FPI обрабатывается валидаторами с учетом регистра), этот формат (соответствие строки без учета регистра) !DOCTYPE HTML
) аналогичен синтаксису HTML 4.01 на основе SGML. DOCTYPE
. Как в HTML4, так и в HTML5 формальный синтаксис определяется буквами верхнего регистра, даже если как строчные буквы, так и сочетание строчных букв верхнего регистра также считаются допустимыми.
В XHTML5 DOCTYPE
должно соответствовать строке с учетом регистра " <!DOCTYPE html>
". Это связано с тем, что в синтаксисе XHTML все имена элементов HTML должны быть в нижнем регистре, включая корневой элемент, на который есть ссылка внутри HTML5. DOCTYPE
.
The DOCTYPE
является необязательным в XHTML5 и может быть просто опущен. [11] Однако если разметка должна обрабатываться как в формате XML, так и в формате HTML , следует использовать DOCTYPE. [12]
См. также
[ редактировать ]- Определение типа документа содержит пример
- РДФ
- XML-схема
Ссылки
[ редактировать ]- ^ HTML2 HTML3 HTML4
- ^ «Синтаксис HTML ― HTML5» . Проверено 5 июня 2011 г.
- ^ Jump up to: а б с д и ж г час я дж к л м н Гольдфарб, Чарльз Ф. (1990). Справочник по SGML . Оксфорд : Кларендон Пресс . ISBN 0-19-853737-9 .
- ^ Уолш, Норман (6 августа 2001 г.). «XML-каталоги» . Организация по развитию стандартов структурированной информации (OASIS).
- ^ Кларк, Джеймс (15 декабря 1997 г.). «Сравнение SGML и XML» . W3C . ПРИМЕЧАНИЕ-sgml-xml-971215.
- ^ «Декларация DOCTYPE» . Архивировано из оригинала 14 августа 2011 г. Проверено 9 сентября 2011 г.
- ^ «Доктайп-декларация» . msdn.microsoft.com .
- ^ «W3C QA — Рекомендуемый список объявлений Doctype, которые вы можете использовать в своем веб-документе» . www.w3.org . Проверено 22 марта 2019 г.
- ^ «Стандарт HTML» . html.spec.whatwg.org . Проверено 22 марта 2019 г.
- ^ «Синтаксис HTML ― HTML5» . Рабочая группа по технологиям веб-гипертекстовых приложений . Проверено 5 июня 2011 г.
3. Строка, соответствующая строке «DOCTYPE» в формате ASCII без учета регистра. 5. Строка, соответствующая строке «HTML» в формате ASCII без учета регистра.
- ^ «Синтаксис XHTML — HTML5» . Рабочая группа по технологиям веб-гипертекстовых приложений . Архивировано из оригинала 18 июня 2012 г. Проверено 1 сентября 2009 г.
- ^ «Полиглотская разметка: HTML-совместимые документы XHTML» . Консорциум Всемирной паутины . Проверено 17 января 2012 г.
Внешние ссылки
[ редактировать ]

- Обзор типов HTML-документов
- Рекомендуемые DTD для использования в веб-документе — информативная (не нормативная) публикация W3C Quality Assurance.
- Сетка DOCTYPE — еще одна обзорная таблица [Последнее изменение: 27 ноября 2006 г.]
- Режим причуд и переходный режим
- Настройка модели коробки