Структура XHTML-документа

Влад Мержевич

Любой XHTML-файл состоит из четырех разделов — <!DOCTYPE>, контейнера <html>, заголовка (<head>) и тела документа (<body>). Последние два элемента перекочевали из HTML и ничем не отличаются от своего родоначальника (пример 2.1).

Пример 2.1. Простейший XHTML-документ

<!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">
  <head>
   <!-- Этот раздел предназначен для заголовка страницы и технической информации. -->
  </head>  
  <body>
   <!-- А здесь надо размещать все, что хочется увидеть на странице. -->
  </body>
</html>

Элемент <!DOCTYPE> сообщает браузеру о типе текущего документа и как его интерпретировать. Различают три типа документа по спецификации XHTML 1.0:

  1. Strict (Строгий);
  2. Transitional (Переходный);
  3. Frameset (С фреймами).

Элемент <!DOCTYPE> хотя и обязателен, но не является непосредственной частью XHTML-документа, поэтому для него закрывающего тега не требуется.

XHTML 1.0 Strict

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

Пример 2.2. Документ со строгой разметкой

XHTML 1.0IECrOpSaFx

<!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">
 <head>
  <title>Пример строгого документа</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 </head>
 <body>
  <p>...</p>
 </body>
</html>

XHTML 1.0 Transitional

Обычно применяется, когда правило разделения оформления и содержания выполняется не в полной мере. В этом случае допускается в коде документа использовать теги физического проектирования (например, тег <tt>) и лишь частично стили. В примере 2.3 показан вид тега <!DOCTYPE> для подобных документов.

Пример 2.3. «Переходный» документ

XHTML 1.0IECrOpSaFx

<!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">
 <head>
   <title>Пример мягкого документа</title>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 </head>
 <body>
   <p>...</p>
 </body>
</html>

XHTML 1.0 Frameset

Применяется, когда окно браузера делится на два или более фрейма (пример 2.4).

Пример 2.4. Документ с фреймами

XHTML 1.0IECrOpSaFx

<!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">
 <head>
   <title>Фреймы</title>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 </head>
 <frameset cols="100,*">
    <frame src="menu.html" name="menu" />
    <frame src="content.html" name="content" />
 </frameset>
</html>

Контейнер HTML

Тег <html> выступает главным контейнером, в котором хранятся все остальные элементы, и в коде он должен идти сразу же после <!DOCTYPE>. В <html> требуется указывать обязательный атрибут xmlns со значением http://www.w3.org/1999/xhtml. Он определяет пространство имен — так называется набор имен всех элементов и атрибутов, чтобы обеспечить их уникальность в пределах XHTML-документа.

Кодировка документа

В HTML кодировка документа задается с помощью тега <meta> расположенного внутри контейнера <head>. В XHTML же кодировка может задаваться двумя путями: аналогично HTML и с помощью команды <?xml version="1.0" encoding="UTF-8"?>, она должна располагаться в первой строке кода, перед <!DOCTYPE>. В данном случае UTF-8 обозначает кодировку текущего документа. В примере 2.5 показано, как устанавливать кодировку подобным способом.

Пример 2.5. Кодировка документа

XHTML 1.0IECrOpSaFx

<?xml version="1.0" encoding="windows-1251"?>
<!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">
  <head>
    <title>Кодировка</title>
  </head>
  <body>
    <p>Текст на русском языке в стандартной кодировке Windows.</p>
  </body>
</html>

В данном примере кодировка установлена как windows-1251.

В браузере Internet Explorer до 6 версии включительно команда <!DOCTYPE> должна обязательно стоять в первой строке кода, иначе браузер переходит в режим совместимости (quirk mode) и веб-страница может отображаться весьма причудливым образом. Поэтому для универсальности кодировку лучше указывать с помощью метатегов, как и в HTML.

Не выкладывайте свой код напрямую в комментариях, он отображается некорректно. Воспользуйтесь сервисом cssdeck.com или jsfiddle.net, сохраните код и в комментариях дайте на него ссылку. Так и результат сразу увидят.