XHTML - это традиционное название того, что теперь формально называется синтаксисом XML HTML, в отличие от более широко используемого синтаксиса HTML, оба из которых определены стандартом HTML5. Это язык разметки, обычно используемый для HTML-страниц, которые создаются с помощью цепочки инструментов на основе XML. НЕ используйте этот тег для Facelets. Вместо этого используйте [facelets].

XHTML (еХ tensible Н YperТ внутр М arkup L anguage) является приложением XML и синтаксис HTML. Этот синтаксис доступен как альтернатива более распространенному синтаксису HTML, который ранее был основан на SGML. Это язык разметки, обычно используемый для HTML-страниц, которые используются в инструменте на основе XML как часть серверной инфраструктуры (MVC), такой как Facelets и веб-формы ASP.NET.

Первоначально XHTML 1.0 и XHTML 1.1 были определены в отдельных спецификациях от HTML 4.01, но теперь спецификация HTML5 охватывает оба синтаксиса вместе.

Синтаксис XML имеет ортогональный набор правил, который не учитывает используемые типы элементов, тогда как синтаксис HTML имеет разные правила для разных типов элементов. Например, пустые элементы в HTML, такие как<link>, <meta>, <br> а также <hr> размечены с использованием только начальных тегов в синтаксисе HTML, а <div>, <span>, <a>и т.д. всегда должны иметь отдельные начальный и конечный теги. Другие теги, например<p>, <li> <td>и т.д. имеют особые правила относительно того, когда следует использовать начальный и конечный теги. Напротив, в синтаксисе XHTML все элементы должны быть закрыты либо с помощью отдельных начальных и конечных тегов: например,<div> а также </div> или, если они не имеют содержания, используя сокращенную форму, например <div /> Эти два синтаксиса несовместимы, и инструменты XML не работают напрямую с документами, написанными в синтаксисе HTML.

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

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

Одна из распространенных проблем с XHTML связана с использованием типов документа и типов содержимого. Использование одного из доктипов XHTML 1 (теперь все устаревшие) заставляло валидаторы HTML проверять соответствие документа синтаксису XHTML, в то время как браузеры обрабатывали те же документы как находящиеся в обычном синтаксисе HTML. Браузеры не используют doctype для определения синтаксиса документа. Вместо этого они используют заголовок HTTP:content-type. Документ синтаксиса XHTML должен быть предоставлен браузеру с типом содержимого XML, обычноapplication/xhtml+xml или application/xml. Документы с обычным синтаксисом HTML должны иметь тип содержимогоtext/html. Современные валидаторы теперь, как и браузеры, используют HTTP-заголовок типа контента, чтобы определить, какой синтаксис проверять, и для обоих синтаксисов тип документа в форме<!DOCTYPE html> должен быть использован.

Для синтаксиса XML HTML требуется следующее, что является необязательным в обычном синтаксисе HTML:

  1. Атрибут корневого пространства имен XML, как в <html xmlns="http://www.w3.org/1999/xhtml">
  2. Элементы должны быть вложенными. например<b><i></b></i> это ошибка, из-за которой разбор останавливается
  3. Начальный и конечный теги всегда должны совпадать, иначе элементы должны быть закрыты автоматически. (например, используйте<input></input> или <input /> но нет <input>)
  4. Имена тегов и атрибутов должны быть в нижнем регистре (например, используйте 'onclick, notonClick`)
  5. Значения атрибутов должны быть заключены в соответствующие одинарные или двойные кавычки (например, используйте class='foo', или class="foo"не class=foo)
  6. Минимизация атрибутов запрещена (например, использование disabled="disabled" или disabled=""не disabled)

Ресурсы: