Чем отличается html от xhtml. Язык разметки XHTML. Правильная вложенность тегов

Теперь, когда вы уже представляете, как строить динамические страницы с применением PHP и MySQL, настало время исследовать усовершенствования языка разметки HTML, формирующего основу веб-страниц. В этой главе мы поговорим о языке разметки XHTML, его требованиях, и о том, почему применение этого языка требует дополнительных усилий при создании страниц. Не забывайте, что для создания высококачественных веб-страниц из PHP-сценариев код разметки должен соответствовать стандартам. Содержимое страниц на языке XHTML можно представить себе как готовый продукт, получаемый в результате работы функций PHP и базы данных. Мы также рассмотрим проверку корректности выходной XHTML-разметки сценариев для устранения каких-либо ошибок.

Аббревиатура XHTML происходит от названия eXtensible HyperText MarkupLanguage(расширяемыйязыкразметкигипертекста).XHTML– это язык разметки, близкий к HTML, но с более строгими синтаксическими правилами, связанными с требованиями XML. Язык HTML был основан на языке SGML, обладавшем значительной гибкостью, но достаточно сложном, а XML – это облегченный вариант SGML, простой в работе за счет незначительной потери гибкости. Синтаксически XHTML очень близок к HTML, теги в нем тоже задаются с помощью символов угловых скобок (< и> ), но требования к оформлению тегов гораздо строже. XHTML-документы, соответствующие синтаксическим требованиям, называютсяправильно сформированными (wellformed), а XHTML-документы, соответствующие не только синтаксическим требованиям, но и требованиям к оформлению структуры доку-

мента, изложенным в DTD (Document Type Description – описание типа документа), – корректными (valid).

Язык разметки XHTML

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

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

Самый простой способ продемонстрировать различия – это показать HTML-документ, а затем его эквивалент на языке XHTML. Сначала взглянем на корректный документ HTML 4.0:

Простой документ HTML

Привет, МИР!

Кто-нибудь слышит меня?

На языке XHTML этот же документ выглядит так:

Простой документ XHTML

Привет, МИР!
Кто-нибудь слышит меня?

Что здесь изменилось?

1. В самом начале можно увидеть новое XML-объявление, идентифицирующее документ как XML 1.0, использующий кодировку символов UTF-8. Это объявление может быть опущенопри условии , что документ использует кодировку UTF-8 (или ASCII, которая является подмножеством UTF-8).

2. Несколько изменилось объявление DOCTYPE .

3. Теперь все элементы разметки HTML записываются символами нижнего регистра. Это требование спецификации языка XTML.

4. Элемент html теперь содержит атрибутxmlns (определяющий пространство имен XHTML, о чем мы поговорим ниже в этой же главе) иxml:lang , дополняющий атрибутlang для XML-процессоров.

5. Тег
теперь записывается как
с символом слэша (/ ) перед закрывающей угловой скобкой – тем самым указывается, что данный элемент является «пустым» и не имеет парного закрывающего тега.

6. Появился новый закрывающий тег

, дополняющий тег

Который находится в первой строке тела документа. Язык XHTML не позволяет использовать открывающие теги без соответствующих им закрывающих тегов, а пустые элементы обязательно должны следовать нотации
. Данный документ слишком короток, чтобы отобразить большинство требований, заметим только, что открывающие и закрывающие теги должны следовать правилу симметрии, например так можно писать:Это жирный курсив , а так нельзя:Это жирный курсив – . При соблюдении подобных требований документы приобретают явную и предсказуемую структуру, становясь доступными для обработки и модификации в любых программах.

Есть еще несколько ограничений, о которых мы поговорим позже, но самые важные – те, что перечислены здесь.

Почему XHTML

Язык разметки XHTML был создан организацией World Wide Web Consortium (W3C) по целому ряду причин, включая следующие:

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

Разработчики, использующие Dynamic HTML (DHTML) и другие технологии, в которых применяются сценарии, заметили, что из-за гибкости HTML структура управляемых ими HTML-документов порой несколько отличается от ожидаемой, и иногда эти отличия меняются от броузера к броузеру. Более строгие требования XHTML ликвидируют подобные неоднозначности;

Растет число инструментов управления документами, имеющих встроенную поддержку XML, а совместимость XHTML и XML позволяет применять эти инструменты для работы с XHTML без каких-либо ухищрений;

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

Пространства имен XHTML и XML

Пока язык XHTML не нашел широкой поддержки в броузерах, тем не менееW3Cнадеется,чтопереходнаосновуXMLпозволитразработчикам создавать специализированные словари, смешивая их с классическим словарем HTML. В собственные планы W3C входит работа над мультимедиа, графикой и формами;

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

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

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

Специалисты по старому доброму HTML, возможно, будут ра-­ ды узнать, что W3C возобновила работы над стандартом HTML (кое в чем независимо от XHTML) в марте 2007 года. Дополнительную информацию по этому вопросу можно получить по адресуhttp://www.w3.org/html/wg/ .

Пространства имен XHTML и XML

Язык XML невероятно универсален. Он дает общие определения синтаксиса и основных структур документа, но никак не определяет такие характеристики, как имена элементов и атрибутов. Любой желающий может создать собственный словарь XML без необходимости вступать в контакт с W3C или другими органами по стандартизации. Подобный подход порождает следующую проблему: элемент Title может иметь совершенно разный смысл в разных контекстах. Спецификация пространств имен XML (ее можно найти по адресу:http://www.w3.org/TR/ REC-xml-names/ ) обеспечивает механизм, позволяющий разработчикам идентифицировать словари на основе универсальных идентифика-

торов ресурса (Uniform Resource Identifiers, URI).

URI – это комбинация уже известного универсального указателя ресурса (Uniform Resource Locator, URL) и универсального имени ресурса (Uniform Resource Name, URN). С точки зрения пространств имен

И HTML , и XHTML — это языки для создания веб-страниц. HTML построен на основе SGML , а XHTML — на основе XML . Они похожи на две стороны одной медали. XHTML был создан из HTML с целью соответствия стандартам XML . Следовательно, XHTML является более строгим по сравнению с HTML и не позволяет отступать от правил написания кода.

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

Сравнительная таблица

HTML XHTML
Определение (из Википедии) HTML или HyperText Markup Language — это основной язык разметки для создания веб-страниц и других документов, которые могут быть просмотрены в браузере. XHTML (Extensible HyperText Markup Language) — это семейство языков XML-разметки, которые продолжают и расширяют Hypertext Markup Language (HTML), на котором написаны веб-страницы.
Расширения файлов .html, .htm. .xhtml, .xht, .xml, .html, .htm.
Формат использования текст/html. приложение/xhtml+xml.
Разработан W3C и WHATWG. World Wide Web Consortium.
Тип формата Формат документов. Язык разметки.
Расширен из SGML. XML, HTML.
Расшифровка Язык разметки гипертекста. Расширяемый язык разметки гипертекста.
Приложение Приложение Standard Generalized Markup Language (SGML). Приложение XML.
Функции Веб-страницы написаны на HTML. Расширенная версия HTML, более строгая, основанная на XML.
Поведение Гибкие фреймворки не требуют анализа синтаксиса HTML. Ограничен правилами XML и требует их соблюдения.
Происхождение Предложен Тимом Бернерсом-Ли в 1987 году. Рекомендация World Wide Web Consortium 2000 года.
Версии HTML 2, HTML 3.2, HTML 4.0, HTML 5. XHTML 1, XHTML 1.1, XHTML 2, XHTML 5.

Обзор HTML и XHTML

HTML является основным языком разметки веб-страниц. Он создает структурированные документы, выделяя в них такие элементы, как заголовки, списки, ссылки, цитаты и т.д. Это позволяет встраивать изображения и объекты для создания интерактивных форм. HTML задается с помощью тегов в угловых скобках — например, . Также в его коде могут содержаться скрипты, написанные на JavaScript .

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

Функции документов HTML и XHTML

Синтаксис HTML состоит из следующих компонентов: открывающий и закрывающий тег, атрибуты элементов (задаваемые в тегах ), текстовый и графический контент. HTML-элемент — это все, что находится между тегами, включая сами теги.

Документ XHTML содержит только один корневой элемент. Все элементы, включая переменные, должны быть написаны в нижнем регистре, а присвоенные значения — заключены в кавычки, закрыты и вложены. В XHTML это является обязательным требованием — в отличие от HTML . Объявление DOCTYPE XHTML определяет правила для документов, которым необходимо следовать.

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

Введение такого синтаксиса, который не используется в объявлениях SGML для HTML 4.01 , могло привести к путанице в приложениях на ранних стадиях. Чтобы решить эту проблему, нужно использовать пробел перед закрытием тега:
.

Спецификация XHTML и HTML

HTML и XHTML могут быть задокументированы совместно. И HTML 4.01 , и XHTML 1.0 имеют три подспецификации — строгую, нестрогую и фрэймовую. Отличие документов HTML и XHTML заключается в декларировании документов. Другие отличия синтаксические. HTML допускает отсутствие закрывающегося тега, пустые элементы без закрывающегося тега. Расширяемый язык разметки гипертекста очень строг в отношении открывающихся и закрывающихся тегов XHTML . Он использует встроенный язык определения функционала атрибутов. Все требования к синтаксису XML соблюдаются в XHTML -документе.

Но эти различия проявляются только тогда, когда XHTML -документ используется как приложение XML ; то есть как MIME-типы приложение / XHTML + XML , приложение / XML или текст / XML . Документ XHTML , используемый как MIME-тип текст / HTML должен интерпретироваться как HTML , так что в данном случае применяются правила HTML . CSS , написанный для XHTML , используемого, как MIME-тип текст / HTML , может работать некорректно в документе, который применяется как, как MIME-тип приложение / XHTML + XML . Для получения дополнительной информации о MIME-типах ознакомьтесь с соответствующей документацией.

Это может быть важно, когда вы используете документы XHTML , как текст / HTML . Если не знать о данных различиях, вы можете создать CSS , который не будут работать как ожидается, если документ используется, как XHTML .

Там, где встречаются термины «XHTML » и «XHTML document «, предполагается, что в оставшейся части этого раздела они определяют использование разметки XHTML , как MIME-тип XML . XHTML-разметка , используемая в качестве текста / HTML , является HTML-документом .

Как перейти с HTML на XHTML

  • Включите атрибуты xml:lang и lang для элементов, устанавливающих язык;
  • Используйте синтаксис пустого элемента для элементов, указанных в HTML , как пустые;
  • Используйте дополнительный пробел в тегах пустых элементов: ;
  • Используйте закрывающиеся теги для элементов, которые могут содержать контент, но являются пустыми: ;
  • Не включайте объявление XML .

Чтобы понять, чем отличается HTML от XHTML , рассмотрим преобразование документа XHTML 1.0 в HTML 4.01 . Для этого необходимо выполнить следующие действия:

  • Язык для элемента должен быть указан с помощью атрибута lang , а не атрибута XHTML xml:lang ;
  • Удалите пространство имен XML (xmlns=URI ). HTML не имеет средств для работы с пространствами имен;
  • Измените объявление типа документа с XHTML 1.0 на HTML 4.01 ;
  • Удалить объявление XML , если оно присутствует. Как правило, это: ;
  • Убедитесь в том, что для MIME-типа документа задано: text/html . И в HTML , и в XHTML , это задается в HTTP-заголовке Content-Type , отправляемом сервером;
  • Измените синтаксис пустого элемента XML на стиль пустого элемента HTML
    на
    ).

Перевод статьи «HTML vs XHTML » был подготовлен дружной командой проекта

Дата: 21.09.2008

Нет нет… Разница не только в количестве букв. HTML – это стандртный язык разметки документов во Всемирной паутине, так же HTML является приложением SGML (стандартного обобщённого языка разметки). А XHTML в свою очередь - это расширяемый язык разметки гипертекста, созданный на базе XML. Главное их различие состоит в том, что XHTML в отличие от HTML использует синтаксис XML. То есть XHTML требует более строгих синтаксических правил разметки нежели HTML.

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

Основные правила XHTML:

1. Все элементы разметки (теги) должны быть закрыты (например: ). Одиночные теги (такие как
, ) должны иметь “/” в конце (например:
);

2. Должна соблюдаться корректная вложенность элементов (тегов).

3. Имена элементов и атрибутов должны быть в нижнем регистре (например: вместо ).

4. Символы “<” и “&” везде, даже в URL, должны заменяться на "<" и "&" соответственно. Консорциум W3C рекомендует браузерам не обрабатывать XHTML документы встретив эти символы, а сообщать об ошибке. Но мы то с вами понимаем что такое вряд ли когда-то произойдет).

5. Все значения атрибутов элементов должны заключаться в двойные или одинарные кавычки (напрмер: или ).

Так что же все таки лучше использовать XHTML или HTML?

В настоящее время появляются все более новые и альтернативные способы доступа в интернет. XHTML разрабатывался с учетом общей совместимости пользовательских браузеров (user agents). Но в тоже время все браузеры умеют читать HTML и большинство браузеров обрабатывают XHTML документы как обычный HTML. Ведь раньше не было XHTML и все сайты делались на простом HTML, и браузеры к нему давно приспособились. И делать новые браузеры без поддержки HTML просто не имеет смысла, вы будете использовать браузер который большинство (да пусть даже меньшинство) сайтов отображает некорректно? Браузеры существуют для отображения документа пользователю, а пользователю абсолютно все равно закрыли вы тег или не закрыли. А для парсеров 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/

При выборе DOCTYPE необходимо чётко определиться, какой из двух стандартов выбрать: HTML или XHTML . И для облегчения Вашего выбора я решил разобрать разницу между HTML и XHTML .

Главное отличие между HTML и XHTML в том, что XHTML основан на синтаксисе XML . А, следовательно, он более строгий, и в нём нельзя допускать тех вольностей, которые можно допустить в HTML .

А теперь по пунктам разберём особенности синтаксиса XHTML :

1. Каждый тег должен закрываться

Парные теги должны закрываться и в HTML тоже, но все мы знаем, что в HTML существует множество одиночных тегов (например, <img >), и мы смело могли написать таким образом:

Однако, в XHTML все теги должны закрываться, даже одиночные, причём закрываются они следующим образом:

Разница только в слеше перед второй угловой скобкой.

2. Все спецсимволы должны быть заменены на сущности

То есть нельзя писать вот так: "& ", нужно писать этот символ только сущностью, то есть "& ". В HTML подобного правила не существует.

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

Все мы с Вами знаем, что в HTML можно написать вот так:

То есть у нас значение атрибута "width " находится без кавычек. В XHTML это недопустимо, и там надо писать вот так:

4. Все теги и атрибуты должны писаться в нижнем регистре.

Скажу честно, я никогда не понимал, зачем люди пишут теги в верхнем регистре. На мой взгляд, это уродует код, и возникает ощущение, что его писали не отжимая "CAPSLOCK ". Но если в HTML - это дело вкуса, то в XHTML - это правило: писать только в нижнем регистре.

Как видите, разница только в синтаксисе. Есть также и другие мелкие различия, но мы о них говорить не будем. Другими словами, единственное преимущество XHTML - это более лёгкий парсинг документа . А также XHTML очень подходит любителям "чистого" кода. Больше никаких преимуществ нет. Все браузеры корректно отображают и HTML , и XHTML . Причём зачастую браузеры XHTML обрабатывают как HTML , поэтому для внешнего вида серьёзных различий в HTML и XHTML точно не будет.

Я для себя выбрал XHTML , потому что я очень люблю, когда код "чистый" и когда он легко разбирается на составные части (парсинг ). Да, и вообще я привык к строгому синтаксису других языков, например, Java, поэтому всё равно я буду писать максимально валидно. А что выберите Вы - решать только Вам, а об отличиях HTML и XHTML Вы уже знаете.