В связи с тем, что XHTML является приложением XML, некоторые методы, которые были совершенно законными в HTML 4 на основе SGML, должны быть изменены. Вы уже видели синтаксис XHTML в предыдущей главе, поэтому различия между XHTML и HTML очень очевидны. Ниже приводится сравнение между XHTML и HTML.
Документы XHTML должны быть правильно оформлены
Правильность — это новая концепция, представленная XML. По сути, это означает, что все элементы должны иметь закрывающие теги, и вы должны правильно их вкладывать.
ПРАВИЛЬНО: вложенные элементы
<p>Here is an emphasized <em>paragraph</em>.</p>
НЕПРАВИЛЬНО: перекрывающиеся элементы
<p>Here is an emphasized <em>paragraph.</p></em>
Элементы и атрибуты должны быть в нижнем регистре
Документы XHTML должны использовать строчные буквы для всех элементов HTML и имен атрибутов. Это различие необходимо, поскольку предполагается, что документ XHTML является документом XML, а XML чувствителен к регистру. Например, <li> и <LI> — это разные теги.
Конечные теги необходимы для всех элементов
В HTML некоторые элементы могут опускать конечный тег. Но XML не позволяет опускать конечные теги.
ПРАВИЛЬНО: завершенные элементы
<p>Here is a paragraph.</p><p>here is another paragraph.</p> <br><hr/>
НЕПРАВИЛЬНО: неопределенные элементы
<p>Here is a paragraph.<p>here is another paragraph. <br><hr>
Значения атрибута всегда должны быть в кавычках
Все значения атрибутов, включая числовые значения, должны быть заключены в кавычки.
ПРАВИЛЬНО: цитируемые значения атрибутов
<td rowspan="3">
НЕПРАВИЛЬНО: Значения атрибутов без кавычек
<td rowspan=3>
Минимизация атрибутов
XML не поддерживает минимизацию атрибутов. Пары атрибут-значение должны быть записаны полностью. Имена атрибутов, такие как компактный и проверенный, не могут встречаться в элементах без указания их значения.
ПРАВИЛЬНО: не минимизированные атрибуты
<dl compact="compact">
НЕПРАВИЛЬНО: минимизированные атрибуты
<dl compact>
Обработка пробелов в значениях атрибутов
Когда браузер обрабатывает атрибуты, он делает следующее —
-
Удаляет ведущие и конечные пробелы.
-
Сопоставляет последовательности одного или нескольких символов пробела (включая разрывы строк) с одним межсловным пространством.
Удаляет ведущие и конечные пробелы.
Сопоставляет последовательности одного или нескольких символов пробела (включая разрывы строк) с одним межсловным пространством.
Элементы скрипта и стиля
В XHTML элементы script и style не должны иметь символы «<» и «&» напрямую, если они существуют; тогда они рассматриваются как начало разметки. Такие объекты, как «<» и «&», распознаются процессором XML как ссылки на объекты для отображения символов «<» и «&» соответственно.
Обтекание содержимого скрипта или элемента стиля внутри раздела, помеченного CDATA, позволяет избежать расширения этих объектов.
<script type="text/JavaScript"> <![CDATA[ ... unescaped VB or Java Script here... ... ]]> </script>
Альтернативой является использование внешнего скрипта и стиля документов.
Элементы с атрибутами id и name
XHTML рекомендует заменить атрибут name на атрибут id . Обратите внимание, что в XHTML 1.0 атрибут name этих элементов формально устарел и будет удален в последующих версиях XHTML.
Атрибуты с предопределенными наборами значений
HTML и XHTML оба имеют некоторые атрибуты, которые имеют предопределенные и ограниченные наборы значений. Например, введите атрибут элемента ввода . В HTML и XML они называются перечисляемыми атрибутами . В HTML 4 интерпретация этих значений чувствительна к регистру, поэтому значение TEXT было эквивалентно значению текста .
В XHTML интерпретация этих значений чувствительна к регистру, поэтому все эти значения определены в нижнем регистре.
Ссылки на сущности как шестнадцатеричные значения
HTML и XML разрешают ссылки на символы с использованием шестнадцатеричного значения. В HTML эти ссылки могут быть сделаны с помощью & # Xnn; или & # xnn; и они действительны, но в документах XHTML вы должны использовать только строчную версию, например & # xnn; ,
Элемент <html> является обязательным
Все элементы XHTML должны быть вложены в корневой элемент <html>. Все остальные элементы могут иметь подэлементы, которые должны быть попарно и правильно вложены в родительский элемент. Основная структура документа —