В январе 2000 г. W3C опубликовал рекомендацию XHTML 1.0 по переформулировке спецификации HTML
4 как XML-приложения. Язык XML будет нами подробно рассмотрен в Части VIII;
здесь же приводится только резюме упомянутой рекомендации. В сравнении с 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-документ состоит из следующих компонентов:
Поскольку 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=koi8-r"
/> . Для задания кодировки символов документа следует указывать и этот метаописатель, и 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-документов.
|