## Декларация `DOCTYPE`

Браузер должен знать, на каком языке написана страница, чтобы правильно отобразить её на экране (или другом устройстве). Для этого в первой строке кода необходимо записывать конструкцию `DOCTYPE`.

`DOCTYPE` является ключевым компонентом в совместимости страниц, кроме того, выбор `DOCTYPE` влияет на поведение вашей Web-страницы в различных браузерах.

Джеффри Зельдман, «Web-дизайн по стандартам»

Очень сильно влияет! Ваша визуальная разметка, выполненная средствами CSS по стандартам W3C, может потерпеть крах на экране, если `DOCTYPE` не будет записан.

Элемент `DOCTYPE` предназначен для указания соответствия кода документа одному из стандартов W3C. Браузер, в зависимости от стандарта, по-разному интерпретирует элементы на странице.

Элемент `DOCTYPE` — это, скорее даже не элемент, а описание (декларация), имеющее свой собственный синтаксис.

Декларацию `DOCTYPE` помещают перед элементом `DOCTYPE`, она начинается с восклицательного знака и записывается прописными буквами.

Варианты `DOCTYPE` для HTML 4.01 приводятся ниже.

Предусмотрено 3 стандарта языка HTML 4.01:

- Strict (строгий)
- Transitional (переходный)
- Frameset (аналогичен Transitional, но с фреймами)

### Вариант Strict

Код не содержит элементов и атрибутов, помеченных W3C как «устаревшие» или «не одобряемые» (например: `CENTER`, `FONT`, `S`, `U`, `align`, `background`, `bgcolor`, `color`, `size`).

Декларация записывается в виде:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
              "http://www.w3.org/TR/html4/strict.dtd">

### Вариант Transitional

Код может содержать устаревшие теги, вариант введён в целях совместимости со старыми версиями HTML.

Декларация записывается в виде:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
              "http://www.w3.org/TR/html4/loose.dtd">

### Вариант Frameset

Аналогичен Transitional, но содержит также элементы для создания наборов фреймов.

Декларация записывается в виде:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
              "http://www.w3.org/TR/html4/frameset.dtd">

### Какой вариант `DOCTYPE` выбрать?

Вариант Frameset отбрасываем сразу, так как фреймы — это рудимент прошлого века, и использовать их мы не собираемся.

В переходной период, когда браузеры не на 100% поддерживают стандарты, ничего другого не остаётся для практики, как выбрать переходной стандарт Transitional.

Таким образом, код любой нашей странички должен иметь такой вид:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
              "http://www.w3.org/TR/html4/loose.dtd">
    <HTML lang="ru">
    ...
    </HTML>

Атрибут `lang` со значением `ru` определяет русский язык в качестве базового языка на страничке.

Информация о языке, определённая атрибутом `lang`, может быть использована Пользовательским Агентом (ПА) для управления представлением различными путями.

Вот некоторые ситуации, где предоставленная автором информация о языке может быть полезной:

- содействие поисковым машинам;
- содействие речевым синтезаторам;
- помощь ПА в выборе вариантов глифов для высококачественной печати;
- помощь ПА в выборе вариантов кавычек;
- помощь ПА в принятии решений о дефисах, лигатурах и пробелах;
- помощь программам проверки правописания.

Цель атрибута lang — создать ПА условия для более понятного представления содержимого на базе принятой для данного языка культурной практики.

Спецификация HTML 4.01