Введение в XHTML
В январе 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-документа
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, как показано в примере.
Отличия от HTML
Поскольку XHTML-документы являются XML-приложениями, на их синтаксис накладывается ряд дополнительных ограничений, которые выражаются в том, что XHTML-документы должны быть правильно оформлены в понимании стандарта XML. Это означает, что:
Каждый элемент должен иметь конечный тег, даже если стандарт HTML говорит, что он не обязателен. Если элемент не имеет конечного тега и содержимого, то его начальный тег должен оканчиваться на />, например <br /> , <hr /> , <img src="picture.jpg" alt="рисунок" /> . Пробел перед дробной чертой не обязателен, но рекомендуется для совместимости с сегодняшними Веб-обозревателями.
Элементы должны либо следовать друг за другом, либо быть вложены один в другой, как это было рекомендовано в этом пункте, хотя до сих пор Веб-обозреватели либерально относились к неправильному вложению элементов друг в друга.
Названия элементов и атрибутов HTML должны писаться строчными буквами, т. к. язык XML различает регистры, и в нем <body> и <BODY> - это различные теги.
Значения атрибутов всегда должны заключаться в кавычки (ср. пункт). Не допускается краткая запись атрибутов вида <option selected> . Атрибут всегда должен иметь значение, в данном случае: <option selected="selected"> .
Значения атрибутов нормализуются согласно стандарту XML. Это означает, что из них удаляются начальные и конечные пробелы, а каждая последовательность пробелов внутри значения атрибутов (включая разрывы строк) заменяется на один символ пробела.
Если элементы style или script содержат специальные символы, то их содержимое следует заключать в маркированную секцию CDATA, иначе процессор XML преобразует специальные символы в их эквиваленты до обработки обозревателем соответствующей таблицы стилей или сценария:
<script> <![CDATA[ <em>:содержимое сценария:</em> ]]> </script>
Кроме того, процессор XML удаляет все комментарии из текста документа. Поэтому исторически сложившая практика "прятать" содержимое таблиц стилей и сценариев внутри комментариев не работает в XHTML. Единственный способ избежать их предварительной обработки процессором XML состоит в использовании внешних таблиц стилей и сценариев.
Атрибут name элементов a, form, frame, iframe, img и map объявлен в XHTML морально устаревшим; вместо него должен использоваться атрибут id. Более того, всюду в XHTML-документах для создания закладок следует пользоваться атрибутом id, например: <a id="myid">:</a> .
a name="ref1114">Обеспечение совместимости
Для того, чтобы 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-документов.
8 8 8
| |