XHTML
XHTML (eXtensible HyperText Markup Language, расширяемый язык гипертекстовой разметки) — это семейство языков разметки веб-страниц, основанное на HTML, но подчиняющееся более строгим синтаксическим правилам XML. XHTML был разработан Консорциумом Всемирной паутины (W3C) как переходный этап от HTML к XML, с целью создания более чистого, предсказуемого и семантически строгого кода, который мог бы обрабатываться как обычными веб-браузерами, так и XML-парсерами.
История
Предпосылки создания
К концу 1990-х годов HTML, особенно в версиях 4.0 и 4.01, стал де-факто стандартом для создания веб-страниц. Однако его синтаксис был крайне нестрогим: браузеры были вынуждены «прощать» разработчикам ошибки (незакрытые теги, неправильную вложенность, отсутствие кавычек у атрибутов). Это приводило к фрагментации веба: одна и та же страница могла отображаться по-разному в разных браузерах. Параллельно набирал силу XML — метаязык для создания других языков разметки, требующий чёткого соблюдения синтаксиса. W3C решил объединить простоту HTML со строгостью XML.
Версии XHTML
Разработка XHTML началась в 1998 году. Первая версия, XHTML 1.0, была рекомендована W3C 26 января 2000 года. Она представляла собой реформулировку HTML 4.01 в соответствии с правилами XML. Фактически, любой корректный документ XHTML 1.0 являлся одновременно и корректным документом XML, и (с некоторыми оговорками) корректным документом HTML 4.01.
Вскоре вышла XHTML 1.1 (рекомендована 31 мая 2001 года). Эта версия была более радикальной: она отказалась от поддержки устаревших атрибутов и элементов (например, атрибутов оформления, таких как bgcolor и align), разделила язык на модули и сделала обязательным использование MIME-типа application/xhtml+xml. Это означало, что документы XHTML 1.1 не могли обрабатываться как обычный HTML, что создавало проблемы совместимости с некоторыми браузерами, особенно с Internet Explorer.
Следующей крупной вехой стал XHTML 2.0, работа над которым началась в 2002 году. Проект был амбициозным, но непрактичным: он порывал с обратной совместимостью с HTML, вводил новые, непривычные элементы и требовал от разработчиков полного переучивания. К середине 2000-х годов, когда разработчики веб-приложений столкнулись с практическими ограничениями XHTML, а сообщество начало активно продвигать HTML5, проект XHTML 2.0 был официально закрыт в 2009 году. W3C признал, что будущее веба — за HTML5.
Синтаксические отличия от HTML
Основное различие между XHTML и классическим HTML заключается в строгости синтаксиса. XHTML требует неукоснительного соблюдения следующих правил:
- Корректная вложенность тегов: Теги должны закрываться в порядке, обратном их открытию. Например,
<p><strong>Текст</strong></p>— корректно;<p><strong>Текст</p></strong>— ошибка. - Обязательное закрытие всех тегов: Все теги, включая одиночные (например,
<br>,<img>,<hr>), должны быть закрыты. В XHTML это делается с помощью косой черты перед закрывающей угловой скобкой:<br />,<img src="image.jpg" alt="Описание" />,<hr />. - Имена тегов и атрибутов в нижнем регистре: В HTML теги и атрибуты могли быть написаны в любом регистре (
<BODY>,<P>). В XHTML они должны быть только строчными (<body>,<p>). - Обязательные кавычки для значений атрибутов: В HTML кавычки вокруг значений атрибутов часто можно было опускать (например,
<img src=image.jpg>). В XHTML это обязательно:<img src="image.jpg" />. - Запрет на сокращённые атрибуты: В HTML некоторые атрибуты могли быть сокращены (например,
<input disabled>). В XHTML они должны быть записаны в полной форме:<input disabled="disabled" />. - Обязательное объявление DOCTYPE: Документ XHTML должен начинаться с корректного объявления типа документа (DOCTYPE), указывающего на версию XHTML.
Типы содержимого (MIME-типы)
Один из ключевых аспектов, определяющих, как браузер обрабатывает XHTML-документ, — это MIME-тип, который сервер отправляет в HTTP-заголовке Content-Type.
text/html: Если сервер отправляет XHTML-документ с этим типом, браузер обрабатывает его как обычный HTML. Это означает, что строгие правила XHTML не применяются, и браузер будет «прощать» синтаксические ошибки. Такой подход называется «XHTML, выдаваемый как HTML» (XHTML served as HTML). Это был самый распространённый способ использования XHTML 1.0, так как он обеспечивал совместимость со старыми браузерами, в первую очередь с Internet Explorer.application/xhtml+xml: Если сервер отправляет документ с этим типом, браузер обрабатывает его как XML. В этом случае применяются все строгие правила XHTML. При малейшей синтаксической ошибке (например, незакрытый тег) браузер отобразит сообщение об ошибке и не покажет содержимое страницы. Это делает разработку более требовательной, но гарантирует абсолютную корректность кода. Internet Explorer до версии 9 не поддерживал этот MIME-тип.
Критика и упадок
Несмотря на благие намерения, XHTML столкнулся с рядом серьёзных проблем, которые привели к его упадку:
- Отсутствие обратной совместимости: XHTML 1.1 и особенно XHTML 2.0 требовали использования MIME-типа
application/xhtml+xml, что делало их непригодными для работы в Internet Explorer, который долгое время доминировал на рынке. - Сложность и непрактичность: Строгие правила XHTML, особенно в версии 2.0, делали разработку веб-страниц более трудоёмкой, не предлагая взамен ощутимых преимуществ для конечного пользователя. Большинство веб-разработчиков предпочитали использовать XHTML 1.0, выдаваемый как HTML, что фактически сводило на нет все его преимущества.
- Рост популярности HTML5: HTML5, начавший разрабатываться группой WHATWG, а затем принятый W3C, предложил прагматичный подход: он сохранил обратную совместимость с существующим веб-контентом, но при этом ввёл множество новых семантических элементов, API и возможностей для разработки веб-приложений. HTML5 не требовал строгого синтаксиса XML, но при этом позволял использовать его (через синтаксис XHTML5).
- Необходимость в строгости: Для большинства веб-страниц строгость XML не была критически важной. Браузеры научились достаточно хорошо обрабатывать некорректный HTML. Основные проблемы производительности и безопасности веба были связаны не с синтаксисом разметки, а с другими факторами.
Наследие и современное использование
Хотя XHTML как отдельная спецификация больше не развивается (последняя версия — XHTML 5, являющаяся частью HTML5), его влияние на веб-разработку значительно. Многие правила, введённые XHTML, стали общепринятыми практиками: использование нижнего регистра для тегов, обязательное закрытие тегов, использование кавычек для атрибутов. Современные редакторы кода и линтеры часто настраиваются на проверку этих правил.
Сам термин «XHTML» сегодня чаще всего используется для обозначения синтаксиса HTML5, соответствующего правилам XML. Такой синтаксис называется XHTML5. Документы XHTML5 могут использовать MIME-тип application/xhtml+xml и обрабатываться как XML, но при этом они поддерживают все новые элементы и API HTML5. Однако на практике подавляющее большинство веб-страниц по-прежнему использует HTML-синтаксис и MIME-тип text/html.
Пример простого XHTML-документа (XHTML 1.0 Strict)
``xhtml <?xml version="1.0" encoding="UTF-8"?> <!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" xml:lang="ru" lang="ru"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Пример XHTML документа</title> </head> <body> <h1>Заголовок первого уровня</h1> <p>Это абзац текста. <br />А это перенос строки.</p> <ul> <li>Элемент списка 1</li> <li>Элемент списка 2</li> </ul> <p><img src="image.png" alt="Описание изображения" /></p> </body> </html> ``
Источники
- W3C Recommendation: XHTML 1.0 The Extensible HyperText Markup Language (Second Edition). 2000.
- W3C Recommendation: XHTML 1.1 - Module-based XHTML. 2001.
- W3C Working Group Note: XHTML 2.0. 2006 (закрыт в 2009).
- «HTML5: The Missing Manual» by Matthew MacDonald. O'Reilly Media, 2011.
- «Dive Into HTML5» by Mark Pilgrim. O'Reilly Media, 2010.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →