W3docs

XHTML

XHTML — переформулировка HTML 4 в виде строгого XML. Правила корректности, DOCTYPE, xmlns и почему HTML5 вытеснил его.

XHTML (Extensible HyperText Markup Language) — это переформулировка HTML 4.01 в виде строгого приложения XML, созданная в 2000 году и опубликованная Консорциумом Всемирной паутины (W3C). Он использует тот же набор тегов, что и HTML, но соблюдает правила корректности XML: каждый тег должен быть закрыт, написан в нижнем регистре и правильно вложен.

Для новых проектов предпочтительнее использовать HTML5. XHTML 1.0 во многом вытеснен HTML5, который сохраняет дисциплину корректной разметки как необязательный полиглот-стиль, оставаясь при этом значительно более гибким и функциональным. Эта страница полезна прежде всего как справочный материал о стандарте прошлого, который вы ещё можете встретить в старых кодовых базах.

Изначальная цель состояла в том, чтобы сделать документы более строгими и предсказуемыми — так, чтобы их мог обрабатывать любой стандартный XML-процессор и использовать в широком спектре устройств и инструментов. Из-за жёстких правил один пропущенный закрывающий тег мог полностью заблокировать отображение документа при его доставке как настоящего XML.

Правила корректности

Принципиальное отличие HTML от XHTML состоит в том, что XHTML должен быть корректным XML. Ниже приведены правила, каждое из которых проиллюстрировано неверным и правильным вариантом.

Структура документа и DOCTYPE

Каждый документ XHTML должен начинаться с XHTML-объявления <!DOCTYPE> и содержать элементы <html>, <head>, <title> и <body>. Элемент <html> также должен объявлять пространство имён XML с помощью атрибута xmlns.

<!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 of the document</title>
  </head>
  <body>
    Content of the page
  </body>
</html>

Атрибут xmlns

xmlns="http://www.w3.org/1999/xhtml" — это объявление пространства имён XML. Оно сообщает XML-парсеру, что элементы документа принадлежат словарю XHTML, а не какому-либо другому языку XML. Этот атрибут обязателен на корневом элементе <html> каждого документа XHTML. URL является идентификатором, а не ссылкой, которую загружает браузер.

Варианты DOCTYPE для XHTML

XHTML 1.0 определяет три DOCTYPE, каждый из которых указывает на отдельный DTD. В приведённом выше примере используется Transitional — наиболее распространённый выбор.

  • Strict — чистая разметка без презентационных элементов. Устаревшие презентационные элементы и атрибуты (такие как font или bgcolor) не допускаются; стилизация возложена на CSS.
  • Transitional — допускает устаревшие презентационные возможности для совместимости со старым содержимым.
  • Frameset — аналогичен Transitional, но разрешает документы с <frameset>, разделяющие окно на фреймы.

Закрывайте каждый элемент

В HTML некоторые закрывающие теги можно опускать, но в XHTML каждый элемент должен быть закрыт. Пустые элементы без содержимого (например, br, hr, img) закрываются сами по себе с помощью завершающего слеша.

<!-- Wrong (HTML-style, not closed) -->
A break: <br>
An image: <img src="smile.gif" alt="Always smile">

<!-- Right (self-closed for XHTML) -->
A break: <br />
An image: <img src="smile.gif" alt="Always smile" />

Используйте нижний регистр в именах тегов и атрибутов

XML чувствителен к регистру, поэтому <P> и <p> — это разные теги. XHTML требует, чтобы все имена элементов и атрибутов были написаны в нижнем регистре.

<!-- Wrong -->
<BODY>
  <P>Some paragraph</P>
</BODY>

<!-- Right -->
<body>
  <p>Some paragraph</p>
</body>

Заключайте все значения атрибутов в кавычки

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

<!-- Wrong -->
<table width=100%>

<!-- Right -->
<table width="100%">

Правильно вкладывайте элементы

Пересечение тегов запрещено; внутренние элементы должны закрываться до закрытия внешнего родителя.

<!-- Wrong (overlapping) -->
<strong><em>This text is bold and italic</strong></em>

<!-- Right (properly nested) -->
<strong><em>This text is bold and italic</em></strong>

Запрет минимизации атрибутов

В HTML boolean-атрибуты могут стоять самостоятельно (checked). XHTML запрещает такое сокращение: каждый атрибут должен иметь значение, а для boolean-атрибутов значение повторяет имя.

<!-- Wrong (minimized) -->
<input type="checkbox" name="flower" value="rose" checked />

<!-- Right -->
<input type="checkbox" name="flower" value="rose" checked="checked" />

Предпочитайте id вместо name

В XHTML атрибут name на таких элементах, как якоря, считается устаревшим, поэтому для идентификации элементов рекомендуется использовать атрибут id.

Преимущества XHTML

  • Все теги должны быть закрыты и правильно вложены, что делает разметку последовательной и более читаемой.
  • Будучи корректным XML, документы могут надёжно обрабатываться универсальными XML-инструментами и передаваться в специализированные среды, такие как устройства для чтения шрифтом Брайля и другое вспомогательное программное обеспечение.
  • XHTML поощряет чёткое разделение структуры и презентации, работая совместно с CSS для стилизации.

XHTML и HTML

Несколько ключевых различий между ними:

  • Базовый стандарт. HTML является приложением SGML; XHTML является приложением XML.
  • Происхождение. HTML произошёл от SGML; XHTML производен от XML и HTML 4.
  • История. HTML был создан Тимом Бернерсом-Ли в начале 1990-х годов (Wikipedia); XHTML 1.0 стал рекомендацией W3C в 2000 году (Wikipedia).
  • Разбор. HTML использует снисходительный, отказоустойчивый парсер; XHTML, доставляемый как XML, требует строгого XML-парсера, отвергающего некорректные документы.

XHTML и HTML5

  • Чувствительность к регистру. XHTML чувствителен к регистру; HTML5 (как и классический HTML) — нет.
  • DOCTYPE. DOCTYPE в XHTML длинные и ссылаются на DTD; HTML5 использует короткое <!DOCTYPE html>.
  • MIME-тип. HTML5 доставляется как text/html; строгий разбор XHTML требует application/xhtml+xml.
  • Устойчивость к ошибкам. HTML5 корректно восстанавливается после многих ошибок разметки, тогда как XHTML их отвергает.
  • Статус. HTML5 является современным стандартом для всех устройств; XHTML 1.0 теперь считается устаревшим.

Практика

Практика
Каковы некоторые характеристики XHTML (Extensible Hypertext Markup Language)?
Каковы некоторые характеристики XHTML (Extensible Hypertext Markup Language)?
Практика
Какой атрибут должен присутствовать на корневом элементе html каждого документа XHTML для объявления пространства имён XML?
Какой атрибут должен присутствовать на корневом элементе html каждого документа XHTML для объявления пространства имён XML?
Was this page helpful?