Внимание !
W3C соблюдает все
Эта спецификация определяет XHTML 1.0, переформулирование
приложений HTML 4 как ОТД (Определения
Типа Документа) XML 1.0, соответствующие таким же
ОТД HTML 4.
Семантика элементов и их атрибутов
определена в Рекомендациях W3C для HTML 4.
Эта семантика даёт основу для будущего
расширения XHTML. Совместимость с
существующими ПА (Пользовательскими
Агентами) HTML возможна при соблюдении
небольшого количества руководящих
указаний.
Этот раздел описывает статус документа
на момент публикации.
Другие документы
могут заменять этот документ.
Статус самых
последних документов отслеживается на W3C.
Этот документ просмотрен Членами W3C и другими заинтересованными сторонами и утверждён Директором как Рекомендации W3C. Это постоянный документ, и он может использоваться как справочный материал или для цитирования из других документов как нормативный справочник. Роль W3C в составлении Рекомендаций заключается в том, чтобы привлечь внимание к данной спецификации и способствовать её широкому распространению. Это увеличит функциональность и возможности Web.
Этот документ создан как часть
Список текущих Рекомендаций W3C и другая
техническая документация находятся по
адресу
Публичная дискуссия о возможностях HTML проходит в списках рассылки
www-html@w3.org (
Пожалуйста, сообщайте об ошибках,
обнаруженных в этом документе, по адресам
www-html-editor@w3.org
и a_pyramidin@yahoo.com
(переводчик русской версии).
XHTML - это семейство существующих и будущих типов и модулей документов, воспроизводящих, подразделяющих и расширяющих HTML 4 [HTML]. Семейство типов документов XHTML базируется на XML и предназначено исключительно для работы в ПА на базе XML. Детальная информация об этом семействе и его эволюции обсуждается более подробно в разделе Указания на Будущее.
XHTML 1.0 (данная спецификация) является
первым типом документа семейства XHTML. Это
переформулирование трёх ОТД HTML 4 как
приложений XML 1.0 [XML]. Он
предполагается в качестве языка
содержимого, который соответствует XML, а
также, при соблюдении некоторых простых правил,
работает на соответствующих ПА HTML 4.
Разработчики, переносящие содержимое в XHTML 1.0,
получат следующие преимущества:
Семейство XHTML - это новый шаг в эволюции Internet. Переходя в XHTML сегодня, разработчики содержимого могут войти в мир XML, используя все его преимущества, сохраняя в то же время возможности обратной и будущей совместимости.
HTML 4 [HTML] это приложение SGML (Standard Generalized Markup Language), соответствующее International Standard ISO 8879, широко признанный как стандартный язык World Wide Web.
SGML это язык описания языков разметки (особенно тех, которые используются в документах электронного обмена), обработки и публикации документов. HTML - это пример языка, определённого в SGML.
SGML появился в середине 1980х и остаётся достаточно стабильным и по сей день. В основном эта стабильность основана на том факте, что этот язык отличается и богатством, и гибкостью. Обратной стороной такой гибкости, однако, является сложность языка, которая препятствует его адаптации к различным средам, включая World Wide Web.
HTML первоначально был создан как язык обмена научной и другой технической документацией, приспособленный для неспециалистов в области документоведения. HTML обходил сложность SGML путём определения сравнительно небольшого набора структурных и семантических тегов, приспособленных для авторизации относительно простых документов. В дополнение к упрощённой структуре документов, HTML внёс поддержку гипертекста. Возможности мультимедиа были добавлены позднее.
За короткое время HTML стал очень популярным и быстро перерос своё первоначальное предназначение. С момента внедрения HTML стали быстро появляться новые элементы для использования в HTML (как стандарт) и для адаптации HTML по вертикали, для узко специализированных целей. Возможности новых элементов привели к появлению проблем совместимости документов на различных платформах.
Поскольку разнообразие программных средств и платформ всё увеличивалось, стало ясно, что возможности "классического" HTML 4 при использовании на новых платформах ограниченны.
XML™ это аббревиатура для Extensible Markup Language, и является акронимом Extensible Markup Language [XML].
XML был задуман с целью возродить мощь и гибкость SGML без излишних усложнений. Являясь усечённой формой SGML, XML в то же время сохранил богатство и силу языка SGML и все его обычно используемые возможности.
Сохраняя все эти преимущества, XML убрал большинство самых сложных свойств SGML, ранее делавших создание программных средств тяжёлым и затратным.
Преимущества, даваемые переходом к XHTML 1.0, были описаны выше. Вот некоторые из них:
Следующие термины используются в данной спецификации. Эти термины расширяют определение [RFC2119] способами, основанными на базе ISO/IEC 9945-1:1990 [POSIX.1]:
Эта версия XHTML предоставляет определение строго оформленных документов XHTML, размеченных тегами и атрибутами из пространства имён XHTML. См. в Разделе 3.1.2 информацию об использовании XHTML с другими пространствами имён, например, о включении метаданных, выраженных в RDF, в документы XHTML.
Строго Соответствующий Документ XHTML это документ, требующий только тех объектов, которые описаны в этой спецификации как мандатные. Такой документ обязаны отвечать следующим критериям:
Он должен проверяться одним из трёх ОТД, находящихся в Приложении A.
Корневым элементом документа должен (обязан)
быть <html>
.
Корневой элемент документа обязан
обозначить пространство имён XHTML путём
использования атрибута xmlns
[XMLNAMES]. Пространство имён XHTML
определено в http://www.w3.org/1999/xhtml
.
В документе обязано присутствовать
объявление DOCTYPE, предшествующее корневому
элементу.
Публичный идентификатор,
включённый в объявление DOCTYPE, обязан быть
ссылкой на одно из трёх ОТД, которые можно
найти в Приложении A, используя
соответствующий Формальный Публичный
Идентификатор (Formal Public Identifier). Системный
идентификатор может быть изменён, чтобы
отражать локальные системные соглашения.
<!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">
Вот образец минимального документа 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>Virtual Library</title> </head> <body> <p>Moved to <a href="http://vlib.org/">vlib.org</a>.</p> </body> </html>
Обратите внимание, что в этом примере включено объявление XML. Объявление XML, похожее на это, не требуется для всех документов XML. Авторы документов XHTML должны обязательно использовать объявления XML во всех своих документах. Такие объявления необходимы, если кодировка символов документа отличается от кодировки по умолчанию (UTF-8 или UTF-16).
Пространство имён XHTML может использоваться совместно с другими пространствами имён XML [XMLNAMES], хотя такие документы и не являются строго соответствующими документами XHTML 1.0, как определено выше. В дальнейшем работа W3C будет проходить по пути спецификации соответствия документов, использующих множественные пространства имён.
В следующем примере показано, как XHTML 1.0 мог бы быть использован в сочетании с Рекомендациями MathML:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>A Math Example</title> </head> <body> <p>The following is MathML markup:</p> <math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <log/> <logbase> <cn> 3 </cn> </logbase> <ci> x </ci> </apply> </math> </body> </html>
В следующем примере показано, как разметка XHTML 1.0 может быть внедрена в другое пространство имён XML:
<?xml version="1.0" encoding="UTF-8"?> <!-- initially, the default namespace is "books" --> <book xmlns='urn:loc.gov:books' xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en"> <title>Cheaper by the Dozen</title> <isbn:number>1568491379</isbn:number> <notes> <!-- make HTML the default namespace for a hypertext commentary --> <p xmlns='http://www.w3.org/1999/xhtml'> This is also available <a href="http://www.w3.org/">online</a>. </p> </notes> </book>
Соответствующий ПА должен отвечать всем следующим критериям:
ID
(напр.,
атрибут id
большинства элементов XHTML)
как идентификатор фрагмента.Процессор XML нормализует коды конца строки различных систем в одиночный символ прогона строки, который и передаётся приложению. ПА XHTML дополнительно обязан рассматривать как пробелы следующие символы:
В элементах, в которых атрибут xml:space' установлен в 'preserve', ПА обязан оставить все пробельные символы без изменения (за исключением ведущих и ведомых пробелов, которые должны быть удалены). В иных случаях пробел обрабатывается в соответствии со следующими правилами:
Пробел в значении атрибута обрабатывается в соответствии с [XML].
В связи с тем, что XHTML является приложением XML, некоторые действия, которые совершенно правильны в HTML 4 [HTML] на базе SGML, должны быть изменены.
Правильное формирование - это новая концепция, введённая [XML]. В конечном счёте это означает, что все элементы обязаны иметь закрывающий тег или быть написаны в специальной форме (как описано ниже), и что все элементы обязаны вкладываться.
Хотя перекрывание не допускается в SGML, оно допускается некоторыми браузерами.
КОРРЕКТНО: вложенные элементы.
<p>here is an emphasized <em>paragraph</em>.</p>
НЕКОРРЕКТНО: перекрывающиеся элементы
<p>here is an emphasized <em>paragraph.</p></em>
Документы XHTML должны использовать нижний регистр для всех имён элементов и атрибутов HTML. Это необходимо, поскольку XML чувствителен к регистру, например, <li> и <LI> это различные теги.
В HTML 4 на базе SGML, некоторые элементы
допускали отсутствие конечного тега при
наличии других последующих элементов с
закрывающими тегами. Такое отсутствие
конечных тегов не допускается в XHTML на базе
XML. Все элементы, за исключением тех, которые
объявлены в ОТД как EMPTY
, должны иметь
конечный тег.
КОРРЕКТНО: закрытые элементы
<p>here is a paragraph.</p><p>here is another paragraph.</p>
НЕКОРРЕКТНО: незакрытые элементы
<p>here is a paragraph.<p>here is another paragraph.
Все значения атрибутов должны быть закавычены, даже цифровые.
КОРРЕКТНО: атрибут - в кавычках
<table rows="3">
НЕКОРРЕКТНО: атрибут - не в кавычках
<table rows=3>
XML не поддерживает минимизацию атрибутов.
Пары атрибут/значение обязаны быть
выписаны полностью. Имена атрибутов, такие
как compact
и checked
, не могут
появляться в элементах без определённых
значений.
КОРРЕКТНО: неминимизированный атрибут
<dl compact="compact">
НЕКОРРЕКТНО: минимизированный атрибут
<dl compact>
Пустые элементы обязаны иметь конечный
тег, или стартовый тег обязан
заканчиваться />
. Например,
<br/>
или <hr></hr>
. См. в Указаниях по совместимости с HTML
информацию о том, как удостовериться, что
имеется обратная совместимость с ПАгентами HTML 4.
КОРРЕКТНО: законченные пустые теги
<br/><hr/>
НЕКОРРЕКТНО: незаконченные пустые теги
<br><hr>
ПА вырезают ведущие и ведомые пробелы из
значений атрибутов и превращают
последовательности из одного или более
пробельных символов (включая обрывы строки)
в одиночный межсловный пробел (символ
пробела ASCII в западных языках). См.
В XHTML элементы script и style объявлены как
имеющие содержимое #PCDATA
. Как
результат этого, <
и
&
будут рассматриваться как
начало разметки, а мнемоники, такие как <
и &
, будут считаться процессором
XML мнемониками символов <
и &
соответственно. Перенос содержимого
элементов script или style в раздел, помеченный CDATA
,
позволит избежать расшифровки этих
мнемоник.
<script> <![CDATA[ ... unescaped script content ... ]]> </script>
Разделы CDATA
распознаются
процессором XML и являются узлами в Document Object Model,
см.
Альтернативой может быть использование внешних документов скриптов и стилей.
SGML предоставлял создателям ОТД возможность исключать некоторые элементы как содержимое элемента. Такие запрещения (называемые "исключения") невозможны в XML.
Например, Строгое ОТД HTML 4 (Strict DTD)
запрещает вложение элемента
'a
' в другой элемент 'a
' на любую
глубину. В XML об этом не может быть даже и
речи. Хотя эти запрещения и могут
отсутствовать в ОТД, определённые элементы
не могут вкладываться.
Резюме по этому
вопросу содержится в Приложении
B.
HTML 4 определил атрибут name
для
элементов a
,
applet
, form
, frame
,
iframe
, img
и map
.
HTML 4 также ввёл атрибут id
. Оба эти
атрибута созданы для использования в
качестве идентификаторов фрагмента.
В XML идентификаторы фрагмента имеют тип ID
,
и в элементе может быть только один атрибут
типа ID
. Таким образом, в XHTML 1.0 атрибут id
определён как атрибут типа ID
. Чтобы
быть уверенным, что документы XHTML 1.0
являются правильно структурированными
документами XML, документы XHTML 1.0 ОБЯЗАНЫ
использовать атрибут id
для
определения идентификаторов фрагмента, и
даже в тех элементах, которые исторически
имели также атрибут
name
. См. в Указаниях по совместимости с HTML
информацию о том, как определить, что
подобные якоря обратно совместимы при
обработке документов XHTML как имеющих тип text/html
.
Обратите внимание, что в XHTML 1.0 атрибут name
этих элементов формально не рекомендуется
и будет удалён в последующих версиях XHTML.
Хотя и отсутствует требование совместимости документов XHTML 1.0 с существующими ПА, на практике это легко выполнимо. Указания по созданию совместимых документов можно найти в Приложении C.
Как и при публикации данных Рекомендаций, пометка MIME для приложений на базе XML всё ещё разрешена.
Однако документы XHTML, следующие указаниям Приложения C (далее, "Указания по совместимости с HTML") могут быть помечены типом носителя Internet "text/html" для обеспечения совместимости с большинством браузеров HTML. Данные Указания не содержат рекомендаций о пометках MIME для других документов XHTML.
XHTML 1.0 предоставляет базу для семейства типов документов, которое расширит о подразделит XHTML для того, чтобы поддерживать широкий спектр новых устройств и приложений путём определения модулей и спецификации механизма комбинирования этих модулей. Этот механизм сделает возможным расширение и подразделение XHTML 1.0 универсальным способом - путём определения новых модулей.
Поскольку использование XHTML переводит от использования традиционных ПА на другие платформы, ясно, что не все элементы XHTML потребуются на этих новых платформах. Например, портативные ручные устройства или сотовые телефоны могут поддерживать только подразделения элементов XHTML.
Процесс модуляризации разделяет XHTML на серии небольших наборов элементов. Эти элементы могут затем комбинироваться в различных целях.
Такие модули будут определены в следующем документе W3C.
Модуляризация даёт несколько преимуществ:
Она предоставляет формальный механизм подразделения XHTML.
Она предоставляет формальный механизм расширения XHTML.
Она упрощает трансформацию документов различных типов.
Она помогает повторно использовать модули в документах новых типов.
Профиль документа специфицирует синтаксис и семантику набора документов. Соответствие профилю документа даёт базу для гарантированной переносимости. Профиль документа определяет функциональность, необходимую для обработки документов этого типа, напр., какие форматы изображения можно использовать, уровни скриптинга, поддержка таблиц стилей и так далее.
Дизайнерам это даёт возможность определить различные группы, чтобы выработать свой собственный стандартный профиль.
Авторам это поможет избежать необходимости писать различные версии документа для различных клиентов.
Группам специалистов, таких как химики, медики или математики, это позволит создать специальный профиль стандартных элементов HTML плюс группы элементов, приспособленных к нуждам специалистов.
Это приложение является нормативным.
Эти ОТД и наборы мнемоник образуют нормативную часть данной спецификации. Полный набор файлов ОТД вместе с объявлением XML и SGML Open Catalog включён в zip-файл в данной спецификации (английская версия на сайте w3c).
Эти ОТД похожи на ОТД HTML 4. Это почти похоже
на модуляризацию ОТД, метод
конструирования ОТД, который будет
разработан и который более близок к HTML 4.
(Прим перев. - У меня эти документы хорошо
видны также в NC 5.0)
Наборы мнемоник XHTML - те же, что и в HTML 4, но
модифицированы, чтобы быть верными
объявлениями мнемоник XML 1.0.
Обратите внимание, что мнемоника для знака Euro currency
(€
или €
или €
)
определена в разделе спец. символов.
Это приложение является нормативным.
Ниже следуют элементы с запрещениями на использование в них других элементов (см. Раздел 4.9). Эти запрещения действуют на всю глубину вложения, т.е. на все элементы-потомки.
a
a
.pre
img
, object
,
big
, small
, sub
или sup
.button
input
, select
,
textarea
, label
, button
,
form
, fieldset
, iframe
или
isindex
.label
label
.form
form
.Это приложение является нормативным.
Это приложение резюмирует указания по дизайну для тех авторов, которые предполагают просмотр своих документов XHTML в существующих ПА HTML.
Учтите, что инструкции процесса отображаются некоторыми ПА. К тому же, если объявление XML не включено в документ, этот документ может использовать только кодировку по умолчанию - UTF-8 или UTF-16.
Содержат пробел перед закрывающими /
и >
, например,
<br />
,
<hr />,
<img
src="karen.jpg" alt="Karen" />
. Используйте также
минимизированный синтаксис для тегов
пустых элементов, например, <br />
так как альтернативный
синтаксис <br></br>
, допускаемый XML,
даёт непредсказуемые результаты во многих
существующих ПА.
Создавая пустой объект элемента, чья
модель содержимого не EMPTY
(например,
пустой заголовок или параграф), не
используйте минимизированную форму (т.е.
используйте
<p> </p>
, а не <p />
).
Используйте внешние таблицы стилей, если
в них есть символы <,
&,
]]>,
или --
.
Используйте внешние сценарии, если в них
есть символы <,
&,
]]>
или --
.
Учтите, что разборщикам XML разрешено без
предупреждения удалять содержимое
комментариев. Таким образом, похоже на то,
что принятая практика "прятания" скриптов и
таблиц стилей внутри комментариев для
обеспечения обратной совместимости
документов, не будет работать в реализациях
на базе XML.
Исключите использование обрывов строки и множественные пробелы внутри значений атрибутов. Они некорректно обрабатываются в ПА.
Не включайте более чем один элемент isindex
в head
документа. Вместо элемента isindex
(который не рекомендуется) нужно
использовать элемент input
.
lang
и xml:lang
Используйте оба атрибута - lang
и xml:lang
- при спецификации языка элемента. Значение
атрибута xml:lang
имеет приоритет.
В XML URI [RFC2396],
которые заканчиваются идентификаторами
фрагмента в форме
"#foo"
не ссылаются на элементы с
атрибутом
name="foo"
; они ссылаются на
элементы с атрибутом, определённым типом ID
,
например, атрибут
id
в HTML 4. Многие существующие клиенты HTML
не поддерживают использование атрибутов
типа ID
таким способом, так что
идентичные значения могут быть установлены
для обоих этих атрибутов, чтобы максимально
гарантировать обратную и будущую
совместимость (например, <a id="foo" name="foo">...</a>
).
Кроме того, поскольку набор допустимых
значений атрибутов типа ID
намного
меньше, чем для атрибутов типа CDATA
,
тип атрибута name
изменён на NMTOKEN
. Этот атрибут
сконструирован так, что он может иметь
только те же самые значения, что и тип
ID
, или как продукт Name
в
Разделе 2.5 в XML 1.0, продукт 5.
К сожалению, это ограничение не может быть
выражено в ОТД
XHTML 1.0. Из-за этого необходимо проявлять
осторожность при конвертации существующих
документов HTML. Значения этих атрибутов
должны (обязаны) быть уникальными в
пределах документа, корректными, и любые
ссылки на эти идентификаторы фрагмента (и
внутренние, и внешние [ссылки]) должны (обязаны)
быть обновлены с необходимым изменением
значений во время конверсии.
Наконец, обратите внимание, что XHTML 1.0 не
рекомендует применение атрибута
name
в элементах a
, applet
, form
, frame
, iframe
, img
и map
, и этот атрибут будет удалён в
последующих версиях XHTML.
Для спецификации кодировки документа
используйте спецификации атрибута
кодировки в объявлении xml (например, <?xml version="1.0"
encoding="EUC-JP"?>
) и оператора meta http-equiv (например,
<meta http-equiv="Content-type"
content='text/html; charset="EUC-JP"' />
). Значение
атрибута кодировки инструкции процесса xml
имеет приоритет.
Некоторые ПА HTML не могут интерпретировать
булевы атрибуты, если те появляются в своей
полной (неминимизированной) форме, как
этого требует XML 1.0.
Заметьте, что эта проблема не касается ПА,
соответствующих HTML 4.
Включены следующие атрибуты: compact
, nowrap
,
ismap
, declare
, noshade
,
checked
, disabled
, readonly
,
multiple
, selected
,
noresize
, defer
.
Объектная Модель Документа, уровень 1 Рекомендаций [DOM] определяет интерфейсы ОМД для XML и HTML 4. ОМД HTML 4 устанавливает, что имена атрибутов и элементов HTML вводятся в верхнем регистре. ОМД XML устанавливает, что имена атрибутов и элементов в том регистре, в котором они специфицированы. В XHTML 1.0 атрибуты и элементы специфицированы в нижнем регистре. Это очевидное различие может адресоваться двумя способами:
text/html
в ОМД, могут использовать ОМД HTML и могут
опираться на имена атрибутов и элементов,
возвращаемые в верхнем регистре из этих
интерфейсов.text/xml
или application/xml
, могут также
использовать ОМД XML. Элементы и атрибуты
будут возвращаться в нижнем регистре.tbody
в
table
). Это происходит из-за того, что
некоторые элементы HTML 4 были разрешены в
такой минимизированной форме, что даже оба
их тега, начальный и конечный, могли
отсутствовать (свойство SGML). В XML это
невозможно. Вместо того, чтобы требовать
от авторов документов вставлять чуждые
элементы, XHTML сделал эти элементы не обязательными. Приложениям необходимо
соответственно адаптироваться к этому.Если значение атрибута содержит
амперсанд, он должен выражаться мнемоникой
("&
"). Например, если атрибут href
элемента a
ссылается на скрипт 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
Каскадные Таблицы Стилей, уровень 2
Рекомендаций [CSS2], определяют
свойства стиля, которые применяются к
дереву разбора документов HTML или XML.
Различия в разборе ведут к различным
визуальным и звуковым результатам, в
зависимости от используемых селекторов.
Следующие подсказки уменьшат этот эффект
для тех документов, которые обрабатываются
без модификации обоих типов носителя:
Это приложение является информативным.
Эта спецификация была написана при участии членов рабочей группы W3C HTML:
Это приложение является информативным.
Внимание !