Различия между XHTML и HTML. Что такое XHTML? Ошибки в XHTML и отличия XHTML от HTML

XHTML (от англ. Extensible Hypertext Markup Language - модульный язык разметки гипертекста) - расширяемое семейство всех языков и модулей разметки страниц на основе XML , только с расширением и повторением возможностей HTML 4 .

Версии XHTML

XHTML 1.0 одобрена консорциумом Всемирной паутины еще 26 января 2000 года. Уже 1 августа 2002 года была опубликована вторая измененная редакция спецификации.

XHTML 1.0 (аналогично HTML 4 ) состоит из трех типов документов:

  1. XHTML-1.0-Strict - позволяет исключить полное использование элементов и атрибутов, которые задают графическое отображение в виде элементов font или атрибута bgcolor . Относится к самому предпочтительному типу документов.
  2. XHTML-1.0-Transitional - допускает использование любых элементов и атрибутов с графическим отображением, но указанные элементы рекомендованы к использованию только в случае крайней необходимости. Как вариант - для максимального облегчения миграции документов из HTML 3.2 на XHTML.
  3. XHTML-1.0-Frameset - добавляет к возможностям второго типа документа (XHTML-1.0-Transitional ) еще использование фреймов.

XHTML 1.1 - версия, содержащая XHTML 1.1 Модульный, в котором авторам разрешено импортировать любые дополнительные свойства в разметку.

Для XHTML Basic и XHTML MP характерны:

  • XHTML Основной , в котором из-за специальной облегченной версии XHTML не могут использоваться полные наборы элементов XHTML. Как правило, применяется для миниатюрных устройств, таких как, к примеру, мобильные телефоны.
  • XHTML мобильного профиля , основанному на XHTML Основной , но с добавлением специфических элементов.

XHTML 2.0

Последняя версия XHTML, которая так и не достигла полноценного статуса рекомендации. Деятельность разработчиков этой версии была остановлена в конце 2010 года, при этом все ресурсы скомбинировали в общую рабочую группу HTML 5 . Результаты наработок в декабре 2010 года напечатаны в виде отчета работающей группы.

Недостатки XHTML

Обзор всех источников и опыта работы профессионалов дает возможность собрать все причины, по которым использование XHTML можно назвать нецелесообразным. Основной толчок к определению этих причин дал обзор XTML 5 . Он позволил выделить 12 причин, из-за которых не рекомендуется пользоваться XHTML. 4. HTML - более оптимизированная разметка под любые поисковые системы, по сравнению с XHTML, ведь в нем пишется меньше кода. 5. Заинтересованным в актуальной защите авторских прав людям HTML намного тяжелее парсить - автоматически копировать, так как XHTML как раз и предназначен для максимальной простоты парсинга. 6. Гарантия надежности при автоматическом копировании XML-документа. Этому свидетельствует факт завершения работы в случае нахождения ошибки. 7. Internet Explorer версий 6 и 7 не поддерживают application/xhtml+xml . 8. Большинство HTML документов не индексируются многими поисковыми системами так, как XML . 9. Верстать HTML намного удобнее, легче, и проще. 10. Скрипты XHTML Document.write не работают, только простая переписка, использующая DOM-функции. 11. Используя DOM-функции, нужно опускать все названия элементов в нижний регистр. Такой же процедуры нужно придерживаться в отношении селекторов в стилях. 12. XHTML-формат не поддерживает функциональные программы document.body , document.images и document.forms . 13. Невозможность содержания всех элементов в прежнем виде, так как любой значок “>” может нарушить готовую структуру. А если его экранировать с помощью “>” или путем заключения в блоки CDATA, можно сломать HTML браузеры. 14. Не реальность автоматического распространения фоновых цветов body в XHTML на все окно. 15. Ожидание нового усовершенствованного и более популярного стандарта HTML 5 , с помощью которого заменится изученный HTML 4 -формат.

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

Определенным ограничением HTML является и то, что он относится к формальным языкам, в том смысле, что теги и их иерархическая структура жестко описаны в спецификации. Поэтому популярность набирает XML, с помощью которого можно создавать собственные теги и формировать их структуру. Разница между HTML и XML состоит не только в тегах, но и правилах написания кода. Браузер при работе с HTML «закрывает глаза» на разные мелкие огрехи и недочеты в структуре или тому, что не корректно указан атрибут. С XML такие фокусы не проходят, поэтому браузер выдаст ошибку о том, что документ неверно сформирован.

Чтобы научить разработчиков «правильному» мышлению, изменить их стиль написания кода, а также сократить разрыв между HTML и XML, и был разработан XHTML, как промежуточный этап между ними.

XHTML (EXtensible HyperText Markup Language, расширяемый язык разметки гипертекста) предназначен для замены HTML и считается его более строгой версией. Вообще, W3C определяет XHTML как последнюю версию HTML, которая постепенно его вытеснит. Так ли это будет обстоять на самом деле, покажет только время.

Если рассуждать о некотором идеальном коде веб-страницы, то его можно сравнить с программой, которая не будет скомпилирована до тех пор, пока все ошибки не исправлены. Браузер выступает в роли компилятора и не отображает документ, если он не соответствует спецификации. XHTML, сохраняя все особенности HTML, вносит более строгие правила создания страниц, чтобы приблизиться к «идеальному» коду. Это позволяет делать сайты независимыми от устройства отображения и браузера. Иными словами, сайт будет корректно показываться во всех современных браузерах и платформах вроде компьютеров, смартфонов, КПК, нетбуках и др.

На деле все обстоит более приземленно. Разработчики браузеров не могут позволить себе, чтобы их детище работало только с «правильным» кодом. А все из-за того, что большая часть сайтов в мире просто не будет отображаться в таком браузере. Виноваты в таком положении вещей и разработчики и пользователи. Первые не обеспечили должную поддержку спецификации в своих браузерах, а вторые не потрудились ей следовать.

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

Расширяемый язык разметки гипертекста (XHTML) — это быстрый способ ссылаться на несколько рекомендаций по языку, которые широко используются на устройствах с поддержкой Интернета для просмотра веб-страниц. Хотя он назван в честь своего предшественника, языка гипертекстовой разметки (), он фактически основан на расширяемом языке разметки (XML), который является очень избирательной частью стандартного обобщенного языка разметки (SGML).
По сути, все они являются потомками SGML. Хотя HTML является прямым приложением SGML, XHTML — это то, что называется пространством имен, или набор определений для XML-документа, который помогает избавиться от двусмысленности, когда в любой заданной ситуации используется более чем один словарь XML.

Язык возник из-за нескольких ограничений HTML и разнообразных способов реализации HTML. Примерно в то время, когда HTML обновился до версии 4, он начал ослабевать, при правильном использовании многими интерпретаторами HTML, компьютерными программами, которые анализируют HTML-документы на отформатированной, просматриваемой веб-странице. Поскольку появились мобильные устройства и другие платформы для просмотра веб-страниц, было необходимо лучшее решение. XML — это гораздо более строгая реализация SGML чем HTML, и в одном экземпляре могут использоваться различные пространства имён XML. Поэтому около 2000 года консорциум World Wide Web (W3C) разработал и сделал XHTML одной из своих рекомендаций для решения некоторых из этих возникающих проблем.

Во всех смыслах и целях в большинстве случаев XHTML имитирует HTML, но поскольку первый использует пространство имён XML, его можно проанализировать любым интерпретатором XML, а HTML ограничивается только интерпретаторами HTML. XHTML в действительности воссозданный HTML под более ограничительным подмножеством XML SGML. Таким образом, более свежий язык сразу мог быть интерпретирован существующими веб-браузерами, а также стал доступен и для других платформ. Также важно помнить о том, что он должен соответствовать расширяемому аспекту прошивки XHTML. Он не только даёт возможность читать больше программ и платформ, но также он расширяется, позволяя использовать в своих документах другие пространства имён XML.

Благодаря возможности XHTML включать другие пространства имён XML в документ, его можно расширить несколькими способами, чтобы представить больше, чем просто форматирование страницы. Например, математический язык разметки (MathML) может быть включен в эти документы для отображения математических формул и обозначений. Изображения также могут быть встроены с использованием пространства имён масштабируемой векторной графики (SVG) в документе этого типа. Таким образом, XHTML также может быть включен в другой XML-документ.

Поскольку XHTML на самом деле просто HTML, уточнённый в соответствии с правилами XML, он предлагает три определения типа документа (DTD), которые дублируют те, что указаны в версии HTML версии 4. DTD — это подробное описание элементов языка разметки, включая, когда, где и как его можно использовать, а также любые связанные атрибуты. Но в более поздних версиях XHTML были установлены XML-схемы, ещё один, более надёжный способ описания XML-документа, который ещё больше расширил XHTML. В свою очередь были разработаны различные урезанные версии XHTML, которые затем могут быть использованы для конкретных целей, многие из которых вращаются вокруг мобильных вычислительных платформ.

XHTML Расшифровывается как ExtensibleHypertext Markup Language и на русском — Расширяемый язык разметки гипертекста. Обратите внимание не расширенный, а расширяемый. Это значит, что данный язык

Пополняется (расширяется) до сих пор. Так что такое XHTML ? Основным отличием XHTML от того же HTML является способ обработки документа (интернет-странички). Стоит ввести еще одно определение. Парсер - программа или часть программы, которая выполняет синтаксический анализ. Также его еще называют синтаксический анализатор. Если еще проще, то данная программа выполняет анализ всего строения страницы, всего кода страницы. В HTML при нахождении ошибки, во время анализа она исправлялась, что требовало дополнительного времени - браузеру нужно было понять, что автор (разработчик) хотел написать. Например, при ошибке в каком-либо теге, он просто выводился с остальным текстом.

Еще одно отличие заключается в том, что все элементы должны быть закрыты, а одиночные теги должны после символов иметь знак /, например:
. Про тэги я напишу отдельную большую статью, также напишу про каждый тэг отдельно. Кодировка в XHTML - UTF-8 (наиболее распространенная сейчас), в HTML же использовалась ISO 8859-1.

Что такое Модуляризация XHTML?

Модуляризация XHTML это разделение XHTML 1.0, относительно HTML 4, на коллекцию абстрактных модулей, которые предоставляют специфические типы функциональности. Эти абстрактные модули реализованы в данной спецификации с использованием языка XML Document Type Definition/Определения Типа Документа, но ожидается появление реализации с использованием Схемы XML.
Правила определения абстрактных модулей и реализации их с использованием ОТД также определены в данном документе.


xhtml

Эти модули могут комбинироваться друг с другом и с другими модулями для создания поднабора и расширения типов документа XHTML, которые можно квалифицировать как членов семейства типов документов XHTML.

Для чего нужна Модуляризация XHTML?

Модель форматирования

Предыдущие версии HTML пытались определить части такой модели, которые требовались от пользовательского агента (ПА) для использования при форматировании документа. С появлением , W3C начал процесс отделения представления от структуры. XHTML 1.0 поддерживает это разделение, и данный документ продолжает движение от HTML и его потомков в этом направлении. Соответственно, данный документ не выдвигает никаких требований к модели форматирования, ассоциированной с представлением документов, размеченных с помощью типов документов Семейства XHTML.


xhtml

Наоборот, данный документ рекомендует, чтобы авторы содержимого полагались на механизмы определения стилей, такие как CSS, при определении модели форматирования для своего содержимого.
Если ПА поддерживают механизмы стилей, то документы будут сформатированы так, как ожидается.
Если ПА не поддерживают механизмы стилей, то документы будут сформатированы так, как определяет сам ПА. Это позволяет ПАгентам Семейства XHTML поддерживать сложные (так и просится — навороченные; А.Р.) модели форматирования на тех устройствах, где это возможно, и изменять модели форматирования на тех устройствах, где это допустимо

При написании кода 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 для тегов , ,