В чем разница между HTML и XHTML? Что такое XHTML? Ошибки в XHTML и отличия XHTML от HTML

На заметку, чтобы не забыть о различии между HTML и XHTML .

И так, HTML и XHTML - это особые форматы разметки веб-страниц которые “понимает” браузер.

Далее немного теории о HTML и XHTML и список некоторых различий между ними…

HTML (от англ. HyperText Markup Language - “язык разметки гипертекста”) - стандартный язык разметки документов во Всемирной паутине. Большинство веб-страниц создаются при помощи языка HTML (или XHTML). Язык HTML интерпретируется браузером и отображается в виде документа, в удобной для человека форме.
HTML является приложением («частным случаем») SGML (стандартного обобщённого языка разметки) и соответствует международному стандарту ISO 8879. XHTML же является приложением XML.

HTML - это теговый язык разметки документов. Любой документ на языке HTML представляет собой набор элементов, причём начало и конец каждого элемента обозначается специальными пометками - тегами. Элементы могут быть пустыми, то есть не содержащими никакого текста и других данных (например, тег перевода строки
). В этом случае обычно не указывается закрывающий тег. Кроме того, элементы могут иметь атрибуты, определяющие какие-либо их свойства.

Каждый HTML-документ, отвечающий спецификации HTML какой-либо версии, должен начинаться со строки объявления версии HTML .
Если эта строка не указана, то добиться корректного отображения документа в браузере становится труднее.

XHTML (англ. Extensible Hypertext Markup Language - Расширяемый язык разметки гипертекста) - язык разметки веб-страниц, по возможностям сопоставимый с HTML, созданный на базе XML. Как и HTML, XHTML соответствует спецификации SGML, поскольку XML является её подмножеством. Вариант XHTML 1.1 одобрен в качестве Рекомендации Консорциума Всемирной паутины (W3C) 31 мая 2001 года.

Валидным (т. е. отвечающим всем правилам) XHTML-документом считается документ, удовлетворяющий технической спецификации. В идеале, все браузеры должны следовать веб-стандартам и, в соответствии с ними, валидные документы должны отображаться во всех браузерах на всех платформах. Валидация XHTML-документа рекомендована даже несмотря на то, что она не гарантирует кросс-браузерности. Документ может быть проверен на соответствие спецификации с помощью онлайновой cлужбы валидации разметки W3C. Валидация обнаружит и разъяснит ошибки в XHTML-разметке.

Различия между XHTML и HTML
- Все элементы должны быть закрыты. Теги, которые не имеют закрывающего тега
(например, или
) должны иметь на конце / (например,
).

Булевы атрибуты записываются в развёрнутой форме. Например, следует писать selected="selected"> или .

Имена тегов и атрибутов должны быть записаны строчными буквами (например, alt="" /> вместо ).

XHTML гораздо строже относится к ошибкам в коде; < и & везде, даже в URL,
должны замещаться < и & соответственно. По рекомендации W3C браузеры,
встретив ошибку в XHTML, должны сообщить о ней и не обрабатывать документ. Для
HTML браузеры должны были попытаться понять, что хотел сказать автор.
- Кодировкой по умолчанию является UTF-8 (в отличие от HTML, где кодировкой по
умолчанию является ISO 8859-1).

Для XHTML страниц рекомендуется задавать MIME-тип - application/xhtml+xml, но
это не является обязательным, более того - браузер Internet Explorer 8 и младшие
версии, не смогут обрабатывать страницу, поэтому с XHTML 1.0 традиционно
используется MIME-тип для HTML - text/html.

Также стандарт рекомендует указание перед
DTD, но это не обязательно, более того - браузер Internet Explorer воспринимает
такое указание (как и любой другой текст перед ), как признак того,
что данную страницу необходимо отображать в режиме обратной совместимости, а не
согласно стандарту. Существует три типа документов XHTML: strict, transitional и
frameset. Наиболее употребительной и универсальной из версий XHTML является
переходная (англ. transitional), поскольку она позволяет использовать iframe
(включение содержимого одной веб-страницы в другую) и атрибут target у ссылок
(для указания того, например, что ссылке необходимо открываться в новом окне).
Фреймовая версия (англ. frameset) представляет собой расширенный вариант
transitional, добавляя к нему, как следует из названия, возможность установки
frameset вместо body. DTD строгой версии XHTML (англ. strict) не содержит многих
тегов и атрибутов, описанных в DTD transitional, и признанных устаревшими.

Спасибо http://ru.wikipedia.org/

При написании кода XHTML придерживаются того же синтаксиса, который характерен для HTML. При этом разница между HTML и XHTML состоит в наборе некоторых обязательных правил.

Правила XHTML следующие.

  1. Все теги и их атрибуты должны быть набраны в нижнем регистре (строчными символами).
  2. Значения любых атрибутов необходимо заключать в кавычки.
  3. Требуется закрывать все теги, даже такие, которым не сопоставлен закрывающий тег.
  4. Должна соблюдаться правильная вложенность тегов.
  5. Нельзя использовать сокращенные атрибуты тегов.
  6. Вместо атрибута name следует указывать id .
  7. Следует определять DTD (document type definition, описание типа документа) с помощью элемента .

Теги должны быть набраны в нижнем регистре

Это правило возникло из-за того, что XHTML чувствителен к регистру символов, поэтому для него теги


и
различаются. Чтобы не возникало путаницы, синтаксис принудительно заставляет указывать все теги, а также их атрибуты в нижнем регистре. В примере 3.1 приводится неверное использование тегов.

Пример 3.1. Ошибочное написание тегов

XHTML 1.0 IE Cr Op Sa Fx

XHTML

Lorem ipsum dolor sit amet...

В данном примере теги и

Набраны прописными символами, что является ошибкой. В примере 3.2 показан корректный код.

Пример 3.2. Правильное написание тегов

XHTML 1.0 IE Cr Op Sa Fx

XHTML

Lorem ipsum dolor sit amet...

Значения любых атрибутов необходимо заключать в кавычки

Хотя в HTML также требуется заключать значения в кавычки, но их отсутствие никак не влияет на корректность кода. Так что можно сказать, что в HTML применение кавычек это лишь рекомендация. В XHTML же использование кавычек возведено в правило и любые значения атрибутов требуется указывать только в них (пример 3.3).

Пример 3.3. Использование кавычек

XHTML 1.0 IE Cr Op Sa Fx

XHTML

Чебурашка Шапокляк
1 5
4 13

В данном примере все атрибуты тега

, а также
задаются в кавычках.

Требуется закрывать все теги

В HTML теги делятся на две категории - парные теги, называемые еще контейнерами и одинарные теги. Парные теги состоят из открывающего и закрывающего тега, причем в некоторых случаях закрывающий тег можно опустить. В XHTML закрывающий тег требуется всегда и везде. В примере 3.4 показан код с ошибкой, из-за того, что отсутствует тег

.

Пример 3.4. Нет закрывающего тега

XHTML 1.0 IE Cr Op Sa Fx

XHTML

и лезет, крадучись, в самолёт,

и бомбу в брюхо ему кладёт,

Некоторые разработчики игнорируют закрывающие теги ,

, , но в XHTML их отсутствие считается ошибкой. В примере 3.5 показано корректное использование списков.

Пример 3.5. Добавление списка

XHTML 1.0 IE Cr Op Sa Fx

XHTML

  • Восток
  • Запад
  • Юг
  • Север

В данном примере каждому открывающему тегу соответствует его закрывающий тег.

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

Что касается одинарных тегов, то они должны завершаться слэшем перед закрывающей угловой скобкой, как показано в примере 3.6.

Пример 3.6. Добавление изображения

XHTML 1.0 IE Cr Op Sa Fx

XHTML

В данном примере обратите внимание на обязательный пробел, который предшествует конструкции /> .

В табл. 3.1 приведены некоторые теги HTML и их запись в XHTML-документе.

Должна соблюдаться правильная вложенность тегов

XHTML критично относится к ошибкам следующего типа: некорректная вложенность одного тега в другой и расположение тега в несоответствующем контейнере.

Правильная вложенность тегов

Каждый тег должен располагаться внутри другого тега, при этом недопустимо их «пересечение», как это показано в примере 3.7.

Пример 3.7. Ошибка с положением тегов

XHTML 1.0 IE Cr Op Sa Fx

XHTML

Lorem ipsum dolor sit amet...

В данном примере закрывающий тег предшествует тегу , хотя должно быть наоборот, что и приводит к ошибке. Стоит поменять теги местами, как код становится корректным.

Хотя валидатор кода и выдает ошибку в случае неправильного положения тегов, браузеры при этом правильно отображают веб-страницу.

Иерархия тегов

Все теги имеют строгую иерархическую систему в том смысле, что каждый тег должен находиться внутри другого тега и никак иначе. На условной вершине находится корневой элемент , а все остальные теги могут содержать внутри себя другие теги, которые называются дочерними. Соответственно дочерние теги располагаются в родительском элементе.

Необходимо знать систему подчиненности тегов и следовать ей при написании кода XHTML. В примере 3.8 показана базовая структура документа.

Пример 3.8. Структура документа

XHTML 1.0 IE Cr Op Sa Fx

Новый документ

В данном примере вначале приводится тег , внутри которого располагаются теги и . Внутри раздела хранится заголовок документа ( ) и кодировка страницы (<meta> ).</p> <h2>Нельзя использовать сокращенные атрибуты тегов</h2> <p>Сокращенным называется атрибут без присвоенного значения. В примере 3.9 приведена форма с использованием таких атрибутов.</p> <p>Пример 3.9. Ошибка при использовании атрибутов</p> <p>XHTML 1.0 IE Cr Op Sa Fx </p><p> <!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> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>XHTML

«Пустое значение», как еще называется подобная ошибка, легко исправляется, если присвоить атрибуту значение, совпадающее с названием. В табл. 3.2 приведены некоторые атрибуты и как они записываются в HTML и XHTML.

Табл 3.2. Сопоставление атрибутов в HTML и XHTML
HTML XHTML
checked checked="checked"
compact compact="compact"
disabled disabled="disabled"
ismap ismap="ismap"
multiple multiple="multiple"
nohref nohref="nohref"
noresize noresize="noresize"
noshade noshade="noshade"
nowrap nowrap="nowrap"
readonly readonly="readonly"
selected selected="selected"

В примере 3.10 показано корректное использование вышеприведенной формы.

Пример 3.10. Правильное использование атрибутов

XHTML 1.0 IE Cr Op Sa Fx

XHTML

Вместо атрибута name необходимо указывать id

Атрибут name определяется в HTML для тегов , ,