| ||
Copyright ©2000 W3C® (MIT, INRIA, Keio), С сохранением всех прав. Применяются все нормативы W3C, связанные с ответственностью, торговыми марками, использованием документов и лицензирование программного обеспечения.
В настоящей спецификации определяется XHTML 1.0, переформулировка HTML 4 в виде приложения XML 1.0, и три DTD, соответствующих типам, определяемым HTML 4. Семантика элементов и их атрибутов определена в рекомендации W3C HTML 4. Данная семантика представляет собой основу для будущего расширения языка XHTML. Совместимость с существующими пользовательскими агентами HTML обеспечивается путем соответствия следующим нескольким требованиям.
В данном разделе описан статус настоящего документа на момент его публикации. Над этим документом могут превалировать другие. Статус серии этих документов поддерживается W3C.
Настоящий документ рассматривался членами W3C и другими заинтересованными сторонами и одобрен Директором в качестве Рекомендации W3C. W3C. Это постоянный документ; он может использоваться в качестве справочника или приводиться в других документах в качестве нормативного. Ролью W3C в этой рекомендации является привлечение внимания к этой спецификации и расширение сферы ее применения. Это расширяет функциональность и возможность взаимодействия в Web.
Настоящий документ является результатом деятельности W3C в области HTML. Цели рабочей группы по HTML (доступ только для членов консорциума) обсуждаются в хартии рабочей группы HTML (доступ только для членов консорциума).
Список текущих Рекомендаций W3C и других технических документов расположен по адресу http://www.w3.org/TR.
Открытая дискуссия относительно функций HTML ведется в списке рассылки по адресу [email protected] (архив).
Об ошибках, найденных в этом документе, сообщайте по адресу: [email protected].
Список обнаруженных в спецификации ошибок расположен по адресу: http://www.w3.org/2000/01/REC-xhtml1-20000126-errata.
XHTML представляет собой семейство имеющихся на данный момент и могущих появиться в будущем типов документов и модулей, являющихся копиями, подмножествами или расширениями языка HTML 4 [HTML]. Семейство типов документов XHTML базируется на XML и предназначено для работы с пользовательскими агентами на базе. Более подробную информацию об этом семействе и его эволюции можно найти в разделе "Направления развития".
XHTML 1.0 (настоящая спецификация) представляет первый тип документов семейства XHTML. В ней три типа документов HTML 4 переформулируются в терминах XML 1.0 [XML]. Она предназначена для использования в качестве языка содержимого, как соответствующего XML, так и, если соблюдены некоторые простые требования, работающего в конформных пользовательских агентах HTML 4. Разработчики, переносящие свои документы в XHTML 1.0, получат следующие преимущества:
Семейство XHTML является следующим шагом в эволюции Интернет. Переходя сегодня на XHTML, разработчики содержимого (контента) могут вступить в мир XML со всеми его преимуществами, сохраняя при этом совместимость содержимого с более старыми и более новыми версиями.
HTML 4 [HTML] - это приложение SGML (Standard Generalized Markup Language [Стандартный обобщенный язык разметки]), соответствующее международному стандарту ISO 8879; оно считается стандартным языком публикации в World Wide Web.
SGML представляет собой язык для описания языков разметки, в частности, языков, используемых при обмене электронными документам, управлением документами и публикации документов. HTML является примером языка, определенного в SGML.
История SGML началась в середине 80-х годов; все это время язык был весьма стабилен. В основном эта стабильность обусловлена тем фактом, что этот язык одновременно богат и гибок. Такая гибкость, однако, имеет оборотную сторону - уровень сложности, делающий невозможным использование этого языка в разнообразных средах, включая World Wide Web.
HTML создавался как язык обмена научными и прочими техническими документам, пригодный для использования людьми, не являющимися специалистами в области документов. HTML успешно справлялся с проблемой сложности SGML путем определения небольшого набора структурных и семантических тегов, пригодных для создания относительно простых документов. Помимо упрощения структуры документа, в HTML внесена поддержка гипертекста. Мультимедийные возможности были добавлены позже.
В удивительно короткие сроки HTML стал крайне популярным и перерос свое первоначальное предназначение. По сравнению с отправной точкой, было придумано множество новых элементов для использования в HTML (в качестве стандартных) и для адаптации языка HTML к вертикальным, узкоспециализированным, рынкам. Такое изобилие новых элементов вызвало проблемы совместимости документов между различными платформами.
Поскольку многообразие программного обеспечения и платформ только увеличивается, ясно, что пригодность 'классического' языка HTML 4 для всех этих платформ достаточно ограничена.
XML™ - это сокращение от Extensible Markup Language (Открытый язык разметки), а также спецификации [XML].
XML создавался как средство восстановления силы и гибкости SGML с одновременным избавлением от сложности. Будучи ограниченной формой SGML, XML, тем не менее, сохраняет большую часть силы и богатства SGML и все широко используемые возможности SGML.
Сочетая все преимущества, XML исключает многие наиболее сложные функции SGML, усложняющие и удорожающие процесс создания документов и разработки соответствующего программного обеспечения.
Преимущества перехода на XHTML 1.0 описаны выше. Вот несколько основных преимуществ:
В настоящей спецификации используются следующие термины. Они расширяют определения, данные в [RFC2119] аналогично определениям ISO/IEC 9945-1:1990 [POSIX.1]:
В настоящей версии XHTML предоставляется определение строго конформных документов XHTML, ограниченных тегами и атрибутами пространства имен XHTML. Информацию об использовании XHTML с другими пространствами имен, например, для включения метаданных, выраженных в RDF в документы XHTML, см. в разделе 3.1.2.
Строго конформный документ XHTML - это документ, которому необходимы только возможности, описанные в настоящей спецификации как обязательные. Такой документ должен соответствовать всем следующим критериям:
Он должен проходить проверку корректности в соответствии с одним из трех DTD, приведенных в приложении A.
Корневым элементом документа должен быть элемент <html>
.
Корневой элемент документа должен назначать пространство имен XHTML с использованием атрибута xmlns
[XMLNAMES]. Пространство имен для XHTML определено в http://www.w3.org/1999/xhtml
.
В документе до корневого элемента должно иметься объявление DOCTYPE. Открытый идентификатор, включаемый в объявление DOCTYPE, должен ссылаться на одно из трех DTD, приведенных в приложении A, с помощью соответствующего формального открытого идентификатора. Системный идентификатор может изменяться, отражая соглашения, принятые в локальной системе.
<!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="ru" lang="ru"> <head> <title>Виртуальная библиотека</title> </head> <body> <p>Переехала по адресу <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="ru" lang="ru"> <head> <title>Пример Math</title> </head> <body> <p>Далее приводится разметка MathML:</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"?> <!-сначала пространство имен по умолчанию: "books" --> <book xmlns='urn:loc.gov:books' xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="ru" lang="ru"> <title>На десятку дешевле</title> <isbn:number>1568491379</isbn:number> <notes> <!-для комментария по умолчанию устанавливается пространство имен HTML --> <p xmlns='http://www.w3.org/1999/xhtml'> Можно также найти <a href="http://www.w3.org/">в сети</a>. </p> </notes> </book>
Конформный пользовательский агент должен соответствовать всем следующим критериям:
ID
(например, атрибут id
большинства элементов XHTML) в качестве идентификаторов фрагментов.Процессор XML приводит коды конца строки, различные в различных в системах, в одному символу перевода строки, который передается в приложение. Пользовательский агент XHTML, кроме того, должен обрабатывать как пробельные следующие символы:
В элементах, в которых для атрибута 'xml:space' установлено значение 'preserve', пользовательский агент должен сохранять все пробельные символы (за исключением начальных и конечных пробельных символов, которые должны удаляться). В противном случае пробелы должны обрабатываться по следующим правилам:
Пробелы в значениях атрибутов обрабатываются в соответствии с [XML].
Поскольку XHTML является приложением XML, некоторые приемы, допустимые в языке HTML 4 [HTML], основанном на SGML, должны быть изменены.
Правильное построение - это новое понятие, введенное в [XML]. В основном это означает, что все элементы либо должны иметь закрывающие теги, либо записываться в специальной форме (как описано ниже), и все элементы должны вкладываться друг в друга.
Хотя в SGML перекрытие недопустимо, существующие браузеры обычно не считают это ошибкой.
ПРАВИЛЬНО: вложенные элементы.
<p>это выделенный <em>абзац</em>.</p>
НЕПРАВИЛЬНО: перекрывающиеся элементы
<p>это выделенный <em>абзац.</p></em>
В документах XHTML для всех имен элементов и атрибутов HTML должен использоваться нижний регистр. Это различие обязательно, поскольку в XML регистр имеет значение - например, <li> и <LI> - различные теги.
В HTML 4 конечный тег некоторых элементов может опускаться; при этом закрытие элемента подразумевалось автоматически благодаря последующим тегам. Это не допускается в XHTML, построенном на основе XML. Все элементы, кроме объявленных в DTD как EMPTY
, должны иметь конечный тег.
ПРАВИЛЬНО: закрытые элементы
<p>это абзац.</p><p>это еще один абзац.</p>
НЕПРАВИЛЬНО: незакрытые элементы
<p>это абзац.<p>это еще один абзац.
Все значения атрибутов должны заключаться в кавычки, даже числовые.
ПРАВИЛЬНО: значения атрибутов в кавычках
<table rows="3">
НЕПРАВИЛЬНО: значения атрибутов без кавычек
<table rows=3>
В XML не поддерживается минимизация атрибутов. Пары атрибут-значение должны быть записаны полностью. Такие имена атрибутов как
compact
и checked
не могут встречаться в элементах без указания их значения.
ПРАВИЛЬНО: неминимизированные атрибуты
<dl compact="compact">
НЕПРАВИЛЬНО: минимизированные атрибуты
<dl compact>
Пустые элементы должны иметь конечный тег или начальный тег должен заканчиваться угловой скобкой (/>
). Например, <br/>
или <hr></hr>
. Информацию о том, как обеспечить обратную совместимость с пользовательскими агентами HTML 4 см. в приложении "Принципы совместимости с HTML".
ПРАВИЛЬНО: закрытые пустые теги
<br/><hr/>
НЕПРАВИЛЬНО: незакрытые пустые теги
<br><hr>
В значениях атрибутов пользовательские агенты должны удалять начальные и конечные пробелы от значений атрибутов и отображать последовательности из одного или нескольких пробельных символов (включая перевод строки) в один пробел между словами (символ пробела кодировки ASCII для западного начертания). См. раздел 3.3.3 спецификации [XML].
В XHTML элементы скриптов и стилей объявляются как элементы с содержимым #PCDATA
. В результате <
и &
будут обрабатываться как начало разметки, а такие объекты как <
и &
будут распознаваться процессором XML как ссылки на объекты <
и &
соответственно. Разбиение на строки содержимого элементов скриптов и стилей в разделе CDATA
позволит избежать развертывания этих объектов.
<script> <![CDATA[ ... незакодированное содержимое скрипта ... ]]> </script>
Разделы CDATA
распознаются процессором XML и представляются в виде узлов в объектной модели документа, см. раздел 1.3 рекомендации DOM уровня 1 [DOM].
В качестве альтернативы можно использовать внешний скрипт или документы стилей.
SGML дает авторам DTD возможность запрещения содержания некоторых элементов в каком-либо другом. Такие запреты (называемые "исключениями") в XML невозможны.
Например, HTML 4 Strict DTD (строгое определение типа документа) запрещает вложение элементов 'a
' друг в друга. Такие запреты невозможны в XML. Несмотря на то, что такие запреты не могут быть определены в DTD, определенные элементы не должны вкладываться. Список таких элементов и элементов, которые не должны вкладываться в них, приведен в нормативном приложении Б.
В 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
. Информацию об обеспечении обратной совместимости таких якорей при обслуживании документов XHTML с типом устройства text/html
см. в приложении "Принципы совместимости с HTML".
Обратите внимание, что в XHTML 1.0 атрибут name
этих элементов формально считается нежелательным и будет удален из последующих версий XHTML.
Хотя к документам XHTML 1.0 не предъявляется требование совместимости с существующими пользовательскими агентами, на практике оно достаточно легко реализуемо. Основные принципы создания совместимых документов можно найти в приложении В.
С момента публикации настоящей рекомендации общая рекомендованная отметка типа MIME для приложений на базе XML должна еще быть разрешена.
Однако документы XHTML, в которых соблюдаются принципы, изложенные в приложении В, "Принципы совместимости с HTML", могут помечаться с помощью типа устройства Интернет "text/html", поскольку они совместимы с большей частью браузеров HTML. Настоящий документ не дает рекомендаций относительно пометки типа MIME других документов XHTML.
Спецификация XHTML 1.0 закладывает основу семейства типов документов, которые будут расширениями и подмножествами XHTML, для поддержания широкого диапазона новых устройств и приложений путем определения модулей и механизма объединения этих модулей. Такой механизм позволит унифицировать способы расширения XHTML 1.0 и использования его подмножеств путем определения новых модулей.
По мере перемещения XHTML с традиционных пользовательских агентов на рабочем столе на другие платформы становится ясно, что не все элементы XHTML будут необходимы на всех платформах. Например, в наладонниках или сотовых телефонах может поддерживаться только некоторое подмножество элементов XHTML.
Процесс модуляризации разбивает XHTML на ряд более мелких подмножеств элементов. Затем, если требования изменятся, эти элементы можно перекомбинировать иным образом.
Модули будут определены в другом документе W3C.
Модуляризация дает следующие преимущества:
Она предоставляет формальный механизм выделения подмножеств XHTML.
Она предоставляет формальный механизм расширения XHTML.
Она упрощает преобразование типов документов.
Она способствует повторному использованию модулей в новых типах документов.
В профиле документа определяется синтаксис и семантика набора документов. Соответствие профилю документа обеспечивает основу гарантии совместимости. В профиле документа определяются возможности, необходимые для обработки документа этого типа, например, какие могут использоваться форматы изображений, уровни скриптов, поддержка таблиц стилей и т.д.
Для разработчиков продуктов они обеспечивают возможность определения стандартных профилей различными группами по необходимости.
Для авторов профили устраняют необходимость написания нескольких различных версий документов для различных клиентов.
Для групп специальностей, например, химиков, врачей или математиков можно строить специальные профили со стандартными элементами HTML плюс группы элементов, необходимых для этих конкретных специальностей.
Данное приложение является нормативным.
Данные DTD и наборы объектов составляют нормативную часть настоящей спецификации. Полный набор файлов DTD с объявлением XML и открытым каталогом SGML можно найти в архиве zip настоящей спецификации.
Данные DTD приблизительно совпадают с DTD HTML 4. Весьма вероятно, что, когда DTD будут модуляризованы, будет применяться способ построения DTD, более близкий HTML 4.
Наборы объектов XHTML совпадают с наборами для HTML 4, но изменены так, чтобы быть допустимыми объявлениями объектов XML 1.0. Обратите внимание, что объект для обозначения Евро (€
или €
или €
) определен как специальный символ.
Данное приложение является нормативным.
На следующие элементы налагаются ограничения по включению в них других элементов (см. раздел 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="Карен" />
. Используйте также для пустых элементов синтаксис минимизированных тегов, например, <br />
, поскольку альтернативный синтаксис <br></br>
, допустимый в XML, во многих существующих пользовательских агентах приводит к непредсказуемым результатам.
В пустых экземплярах элементов, модель содержимого которых отличается от EMPTY
(например, пустой заголовок или абзац) не используйте минимизированную форму (например, используйте <p> </p>
, а не <p />
).
Если в таблице стилей используется <
или &
или ]]>
или --
, используйте внешние таблицы стилей. Если в скрипте используются <
или &
или ]]>
или --
, используйте внешний скрипт. Обратите внимание, что синтаксические разборщики XML могут удалять содержимое комментариев. Поэтому как исторически сложилось, "прятать" скрипты и таблицы стилей в комментарии для обратной совместимости документов, скорее всего, не будет работать обычным образом в реализациях на базе XML.
Избегайте помещения разрывов строк и нескольких пробельных символов в значения атрибутов. Они обрабатываются пользовательскими агентами по-разному.
Не включайте в заголовок (head
) документа несколько элементов isindex
. Использование элемента 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
в XML 1.0, раздел 2.5, продукция 5. К сожалению, это ограничение не может быть выражено в XHTML 1.0 DTD. Поэтому при преобразовании существующих документов 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"' />
). Значение атрибута encoding инструкции по обработке xml имеет приоритет.
Некоторые пользовательские агенты HTML неспособны интерпретировать булевы атрибуты в полной (ненормализованной) форме, как это требуется в XML 1.0. Обратите внимание, что эта проблема не затрагивает пользовательские агенты, совместимые с HTML 4. Это относится к следующим атрибутам: compact
, nowrap
, ismap
, declare
, noshade
, checked
, disabled
, readonly
, multiple
, selected
, noresize
, defer
.
В рекомендации Document Object Model level 1 (Объектная модель документов, уровень 1) [DOM] определяются интерфейсы объектной модели документов для XML и HTML 4. В объектной модели документов HTML 4 определяется, что элемент HTML и имена атрибутов возвращаются в верхний регистр. В объектной модели документов XML определяется, что имена элементов и атрибутов возвращаются в том регистре, в котором они указаны. В XHTML 1.0 элементы и атрибуты задаются в нижнем регистре. С этими различиями можно справиться двумя способами:
text/html
через DOM, могут использовать HTML DOM и использовать имена элементов и атрибутов, возвращаемые этими интерфейсами в верхнем регистре.text/xml
или application/xml
, могут также использовать XML DOM. Элементы и атрибуты будут возвращаться в нижнем регистре. Кроме того, некоторые элементы XHTML могут отображаться или не отображаться в дереве объектов, поскольку они являются необязательными в модели содержимого (например, элемент 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. Различия в разборе приведут к различным визуальным или звуковым результатам, в зависимости от используемых селекторов. Следующие советы позволят ослабить этот эффект для документов, обслуживаемых без изменения как устройства обоих типов:
Данное приложение является информативным.
Настоящая спецификация была написана с участием следующих членов рабочей группы HTML W3C:
Данное приложение является информативным.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |