|
В январе 2000 г. W3C опубликовал рекомендацию XHTML 1.0 по
переформулировке спецификации HTML 4 как XML-приложения. Язык XML будет
нами подробно рассмотрен здесь; здесь же
приводится только резюме упомянутой рекомендации. В сравнении с HTML 4,
XHTML обладает следующими преимуществами:
- XHTML-документы соответствуют стандарту XML, и, следовательно, они
могут просматриваться, редактироваться и проверяться на синтаксическую
правильность стандартными средствами поддержки языка XML.
- XHTML-документы могут отображаться как существующими обозревателями
HTML-документов, так и новыми обозревателями, поддерживающими стандарт
XHTML.
- XHTML-документы могут обращаться к сценариям и аплетам, основанным
на объектной модели документов (DOM).
С практической точки зрения преимущества XHTML таковы:
- И разработчики документов, и разработчики обозревателей постоянно
ищут новые способы выражения своих идей с помощью новых HTML-тегов. XML
обеспечивает единый и простой способ создания новых элементов языка и их
дополнительных атрибутов. XHTML призван унифицировать такие расширения
языка HTML посредством XHTML-модулей, которые будут поддерживать
комбинации существующих элементов HTML с новыми элементами при
разработке и отображении документов.
- Постоянно возникают все новые способы и средства доступа к Сети:
карманные компьютеры и телевизионные приставки, сотовые телефоны и
пейджеры. По некоторым оценкам, к 2002 г. 75% просмотра Веб-страниц
будет осуществляться с помощью этих альтернативных средств. XHTML был
разработан с ориентацией на обобщенный обозреватель, который в сочетании
с механизмами словарей метаданных должен обеспечить оптимальное
преобразование содержимого документа при его отображении, с тем, чтобы,
в конце концов, перейти к разработке таких документов, которые будут
адекватно отображаться любым обозревателем, поддерживающим стандарт
XHTML.
По мнению создателей языка HTML, он, несмотря на его ошеломляющий
успех, за прошедшее десятилетие полностью исчерпал себя и превратился в
труднообозримого монстра, поддержка которого из-за чрезмерно разросшегося
набора тегов становится все более затруднительной. По этой причине история
HTML заканчивается его четвертой версией; HTML 5 никогда создан не
будет - точнее говоря, таковым можно считать XHTML 1.0, который
начинает новую эпоху языков для Веб-документов, основанную на едином
протоязыке XML, обеспечивающем своим приложениям расширяемость и
переносимость.
XHTML-документ имеет следующую структуру:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Заголовок документа</title>
</head>
<body>
...
</body>
</html>
Из этого примера видно, что XHML-документ состоит из следующих
компонент:
- Декларация XML-документа (первая строка примера). Эта
строка не является обязательной согласно стандарту XML, но W3C
рекомендует всегда включать ее в начало XHTML-документа. Если же
кодировка символов документа отлична от UTF-8 или UTF-16, то
XML-декларация становится обязательной и должна содержать название кодировки символов в
атрибуте encoding.
- Декларация типа документа (вторая строка примера). Эта
декларация является обязательной и может принимать одно из трех
значений, которые соответствуют трем декларациям типов HTML-документов:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"DTD/xhtml1-frameset.dtd">
- Корневой элемент документа (остальные строки примера). Этим
элементом является html с обязательным атрибутом
xmlns, задающим пространство имен XHTML-документа.
Значением xmlns должна быть строка
"http://www.w3.org/1999/xhtml". Кроме того, для задания
языка документа должны
использоваться и атрибут lang, и атрибут
xml:lang, как показано в примере.
Поскольку XHTML-документы являются XML-приложениями, на их синтаксис
накладывается ряд дополнительных ограничений, которые выражаются в том,
что XHTML-документы должны быть правильно оформлены в понимании
стандарта XML. Это означает, что:
- Каждый элемент должен иметь конечный тег, даже если
стандарт HTML говорит, что он не обязателен. Если элемент не имеет
конечного тега и содержимого, то его начальный тег должен оканчиваться
на />, например
<br />,
<hr />, <img src="picture.jpg" alt="рисунок"
/>. Пробел перед дробной чертой не обязателен, но
рекомендуется для совместимости с сегодняшними Веб-обозревателями.
- Элементы должны либо следовать друг за другом, либо быть вложены
один в другой, как это было рекомендовано в п. 1.1.2.1, хотя
до сих пор Веб-обозреватели либерально относились к неправильному
вложению элементов друг в друга.
- Названия элементов и атрибутов HTML должны писаться строчными
буквами, т. к. язык XML различает регистры, и в нем
<body> и <BODY> - это
различные теги.
- Значения атрибутов всегда должны заключаться в кавычки (ср.
п. 1.1.2.2).
Не допускается краткая запись атрибутов вида
<option
selected>. Атрибут всегда должен иметь значение, в
данном случае: <option selected="selected">.
- Значения атрибутов нормализуются согласно стандарту XML.
Это означает, что из них удаляются начальные и конечные пробелы, а
каждая последовательность пробелов внутри значения атрибутов (включая
разрывы строк) заменяется на один символ пробела.
- Если элементы style или script
содержат специальные
символы, то их содержимое следует заключать в маркированную
секцию CDATA, иначе процессор XML преобразует специальные символы в
их эквиваленты до обработки обозревателем соответствующей таблицы стилей
или сценария:
<script>
<![CDATA[
…содержимое сценария…
]]>
</script>
Кроме того, процессор XML удаляет все комментарии из текста
документа. Поэтому исторически сложившая практика "прятать" содержимое
таблиц стилей и сценариев внутри комментариев не работает в XHTML.
Единственный способ избежать их предварительной обработки процессором
XML состоит в использовании внешних таблиц стилей и
сценариев.
- Атрибут name элементов a,
form, frame, iframe,
img и map объявлен в XHTML
морально устаревшим; вместо него должен использоваться атрибут
id. Более того, всюду в XHTML-документах для создания
закладок следует пользоваться атрибутом id,
например:
<a id="myid">…</a>.
Для того, чтобы XHTML-документ правильно отображался
Веб-обозревателями, рекомендуется соблюдать следующие правила:
- Поскольку XML-приложения пока не имеют зарегистрированного типа MIME, для
XHTML-документов следует использовать тип "text/html" в
метаописателе
<META http-equiv="Content-Type"
content="text/html; charset=windows-1251" />. Для задания кодировки символов
документа следует указывать и этот метаописатель, и XML-декларацию
<?xml version="1.0" encoding="WINDOWS-1251"?>.
Помните, что XML-декларация имеет приоритет перед HTML-декларацией
кодировки символов.
- Для задания языка
элемента должны использоваться и атрибут lang, и
атрибут xml:lang, причем атрибут
xml:lang имеет приоритет.
- Если значение атрибута содержит символ амперсанта "&", то его
следует заменить на соответствующий специальный символ
&. Например, если атрибут href
элемента указывает на CGI-сценарий, принимающий параметры, то он должен
записываться как
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user,
а не
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.
При использовании каскадных таблиц стилей
следует помнить, что синтаксический разбор свойств стилей для
HTML-документов и XML-документов производится по-разному. Для того, чтобы
эти различия меньше влияли на отображение ваших документов, соблюдайте
следующие правила:
- Названия элементов и атрибутов CSS должны писаться строчными
буквами.
- Если ваша таблица стилей содержит свойства для элемента
tbody, то таблицы в XHTML-документе должны явно
содержать этот элемент (HTML добавляет его по умолчанию, а XML нет).
- Обращайте внимание на те случаи, когда стандарт CSS по-разному
определяет правила разбора свойств для HTML-документов и для
XML-документов.
|