W3C

XHTML 1.0: The Extensible HyperText Markup Language (Открытый язык разметки гипертекстов)

Переформулировка HTML 4 в XML 1.0

Рекомендация W3C от 26 января 2000 г.

Настоящая версия:
http://www.w3.org/TR/2000/REC-xhtml1-20000126
(Postscript-версия, версия в формате PDF, архив ZIP или архив TAR Gzip)
Последняя версия:
http://www.w3.org/TR/xhtml1
Предыдущая версия:
http://www.w3.org/TR/1999/PR-xhtml1-19991210
Авторы:
См. благодарности.

Введение

В настоящей спецификации определяется 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 ведется в списке рассылки по адресу www-html@w3.org (архив).

Об ошибках, найденных в этом документе, сообщайте по адресу: www-html-editor@w3.org.

Список обнаруженных в спецификации ошибок расположен по адресу: http://www.w3.org/2000/01/REC-xhtml1-20000126-errata.

Содержание

1. Что такое XHTML?

XHTML представляет собой семейство имеющихся на данный момент и могущих появиться в будущем типов документов и модулей, являющихся копиями, подмножествами или расширениями языка HTML 4 [HTML]. Семейство типов документов XHTML базируется на XML и предназначено для работы с пользовательскими агентами на базе. Более подробную информацию об этом семействе и его эволюции можно найти в разделе Future Directions.

XHTML 1.0 (настоящая спецификация) представляет первый тип документов семейства XHTML. В ней три типа документов HTML 4 переформулируются в терминах XML 1.0 [XML]. Она предназначена для использования в качестве языка содержимого, как соответствующего XML, так и, если соблюдены некоторые простые требования, так и работающего в конформных пользовательских агентах HTML 4. Разработчики, переносящие свои документы в XHTML 1.0, получат следующие преимущества:

  • Документы XHTML соответствуют XML. Как таковые они без труда просматриваются, редактируются и проверяются на корректность стандартными средствами XML.
  • Документы XHTML могут работать лучше, чем они работали в существующих пользовательских агентах, соответствующих HTML 4, а также в новых пользовательских агентах, соответствующих XHTML 1.0.
  • Документы XHTML могут использовать прикладные программы (например, скрипты и апплеты), базирующиеся на HTML Document Object Model или XML Document Object Model [DOM].
  • По мере расширения семейства XHTML документы, соответствующие XHTML 1.0, будут с большей вероятностью совместимы с различными средами XHTML.

Семейство XHTML является следующим шагом в эволюции Интернет. Переходя сегодня на XHTML, разработчики содержимого (контента) могут вступить в мир XML со всеми его преимуществами, сохраняя при этом совместимость содержимого с более старыми и более новыми версиями.

1.1 Что такое HTML 4?

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 для всех этих платформ достаточно ограничена.

1.2 Что такое XML?

XML - это сокращение от Extensible Markup Language (Открытый язык разметки), а также спецификации [XML].

XML создавался как средство восстановления силы и гибкости SGML с одновременным избавлением от сложности. Будучи ограниченной формой SGML, XML, тем не менее, сохраняет большую часть силы и богатства SGML и все широко используемые возможности SGML.

Сочетая все преимущества, XML исключает многие наиболее сложные функции SGML, усложняющие и удорожающие процесс создания документов и разработки соответствующего программного обеспечения.

1.3 Зачем нужен XHTML?

Преимущества перехода на XHTML 1.0 описаны выше. Вот несколько основных преимуществ:

  • Разработчики документов и создатели пользовательских агентов постоянно открывают новые способы выражения своих идей в новой разметке. В XML ввод новых элементов или атрибутов достаточно прост. Семейство XHTML разработано так, чтобы принимать расширения путем модулей и технологий XHTML для разработки новых соответствующих XHTML модулей (описанных в готовящейся спецификации Модуляризации XHTML). Модули позволят комбинировать существующие и новые наборы функций при разработке содержимого и создании новых пользовательских агентов.
  • Постоянно вводятся альтернативные методы доступа в Интернет. По некоторым оценкам, в 2002 году 75% обращений к документам в Интернет будет выполняться с альтернативных платформ. Семейство XHTML создавалось с учетом общей совместимости пользовательских агентов. С помощью нового механизма профилирования пользовательских агентов и документов серверы, прокси и пользовательские агенты смогут преобразовывать содержимое наилучшим образом. В конечном счете станет возможной разработка соответствующего XHTML содержимого, пригодного для любого соответствующего XHTML пользовательского агента.

2. Определения

2.1 Терминология

В настоящей спецификации используются следующие термины. Они расширяют определения, данные в [RFC2119] аналогично определениям ISO/IEC 9945-1:1990 [POSIX.1]:

Определяется реализацией (зависит от реализации)
Значение или поведение определяется реализацией (зависит от реализации), если требования к корректному построению документа определяются [и документируются] реализацией.
Может (можно)
По отношению к реализации слово "может" должно интерпретироваться как дополнительная возможность, которая не является обязательно согласно настоящей спецификации, но может присутствовать. По отношению к соответствию документа спецификации слово "может" означает, что дополнительная возможность не должна использоваться. Термин "дополнительный" имеет тот же смысл, что и "может".
Долен (нужно)
В настоящей спецификации слово "должен" должно интерпретироваться как обязательное требование к реализации или к строго конформным документам XHTML, в зависимости от контекста. Термин "нужно" имеет тот же смысл, что и "должен".
Зарезервировано
Значение или поведение не определено, но использование его в конформных документах или поддержка конформными пользовательскими агентами запрещены.
Следует
По отношению к реализациям слово "следует" должно интерпретироваться как рекомендация, но не как требование. По отношению к документам слово "следует" должно интерпретироваться как рекомендуемый стиль программирования для документов и как требование для строго конформных документов XHTML.
Поддерживается
Определенные возможности, описанные в настоящей спецификации, необязательны. Если возможность поддерживается, ее поведение соответствует спецификации.
Не определено
Если значение или поведение не определено, в спецификации не определяются требования переносимости этой возможности к реализации, даже в случае документа, в котором используется эта возможность. Документ, для которого в такой ситуации требуется определенное конкретное поведение, не является строго конформным документом XHTML.

2.2 Общие термины

Атрибут
Атрибут - это параметр элемента, объявленного в DTD. Тип и диапазон значений атрибута, включая возможное значение по умолчанию, определяются в DTD.
DTD
DTD, или определение типа документа, представляет собой набор объявлений XML определяющий допустимую структуру, элементы и атрибуты, которые можно использовать в документе, соответствующем DTD.
Документ
Документ - это поток данных, который, после объединения с другими потоками, на которые он ссылается, структурируется так, что содержит информацию, заключенную в элементах, упорядоченных в соответствии со связанным с документом DTD. Более подробную информацию см. в разделе Document Conformance.
Элемент
Элемент - это единица структурирования документа, объявленная в DTD. Модель содержимого элемента определяется в DTD, а дополнительная семантика может определяться в описании элемента.
Возможности
Функциональность включает элементы, атрибуты и семантику, связанную с этими элементами и атрибутами. Говорят, что реализация, поддерживающая такую функциональность, обеспечивает необходимые возможности.
Реализация
Реализация - это система, предоставляющая набор возможностей и служб, поддерживающих настоящую спецификацию. Более подробную информацию см. в разделе Пользовательский агент Conformance.
Синтаксический разбор
Во время синтаксического разбора документ просматривается, а информация, содержащаяся в документе, фильтруется в контекст элементов, в которых она структурирована.
Представление (генерация)
Генерацией называется представление документа. Оно делается в наиболее подходящей для окружения форме (например, звуковое, визуальное, печатное).
Пользовательский агент
Пользовательский агент - это реализация для загрузки и обработки документов XHTML. Более подробную информацию см. в разделе Пользовательский агент Conformance.
Проверка корректности
Проверка корректности - это процесс проверки документов в соответствии с DTD, гарантирующий, что структура, использование элементов и атрибутов соответствуют определениям DTD.
Правильно построенный
Документ считается правильно построенным, если он структурирован в соответствии с правилами, определенными в Разделе 2.1 Рекомендации XML 1.0 [XML]. В основном это определение устанавливает корректное вложение друг в друга элементов, имеющих начальные и конечные теги.

3. Нормативное определение XHTML 1.0

3.1 Конформность документа

В настоящей версии XHTML предоставляется определение строго конформных документов XHTML, ограниченных тегами и атрибутами пространства имен XHTML. Информацию об использовании XHTML с другими пространствами имен, например, для включения метаданных, выраженных в RDF в документы XHTML, см. в разделе 3.1.2.

3.1.1 Строго конформные документы

Строго конформный документ XHTML - это документ, которому необходимы только возможности, описанные в настоящей спецификации как обязательные. Такой документ должен соответствовать всем следующим критериям:

  1. Он должен проходить проверку корректности в соответствии с одним из трех DTD, приведенных в Приложении A.

  2. Корневым элементом документа должен быть элемент <html>.

  3. Корневой элемент документа должен назначать пространство имен XHTML с использованием атрибута xmlns [XMLNAMES]. Пространство имен для XHTML определено в http://www.w3.org/1999/xhtml.

  4. В документе до корневого элемента должно иметься объявление 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.

3.1.2 Использование XHTML с другими пространствами имен

Пространство имен 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>

3.2 Конформность пользовательских агентов

Конформный пользовательский агент должен соответствовать всем следующим критериям:

  1. Для соответствия Рекомендации XML 1.0 [XML] пользовательский агент должен разбирать документ XHTML и оценивать его правильность. Если пользовательский агент выполняет проверку на правильность, он должен также проверять документы на соответствие с DTD, на которые они ссылаются, в соответствии с [XML].
  2. Если пользовательский агент поддерживает возможности, определенные в настоящей спецификации или обязательные согласно нормативной ссылке, он должен это делать в соответствии со способами, описанными в определении этой возможности.
  3. Если пользовательский агент обрабатывает документ XHTML как общий документ XML, он должен распознавать только атрибуты типа ID (например, атрибут id большинства элементов XHTML) в качестве идентификаторов фрагментов.
  4. Если пользовательский агент встречает элемент, который он не распознает, он должен сгенерировать содержимое элемента.
  5. Если пользовательский агент встречает атрибут, который он не распознает, он должен проигнорировать всю спецификацию атрибута (т.е. атрибут и его значение).
  6. Если пользовательский агент встречает значение атрибута, которое он не распознает, он должен использовать значение атрибута по умолчанию.
  7. Если пользовательский агент встречает ссылку на объект (отличный от заранее определенных объектов), для которой он не обрабатывал объявления (что могло произойти, если объявление расположено во внешнем подмножестве, которое пользовательский агент не прочел), ссылка на объект должна генерироваться в виде символов (начиная с амперсанда и заканчивая точкой с запятой), составляющий ее.
  8. Во время генерации содержимого пользовательские агенты, если они встречают распознаваемые, но негенерируемые символы или ссылки на символьные объекты, должны представлять документ таким образом, чтобы пользователю было понятно, что корректная генерация была невозможна.
  9. Следующие символы определены в [XML] как пробельные:
    • пробел (&#x0020;)
    • табуляция (&#x0009;)
    • возврат каретки (&#x000D;)
    • перевод строки (&#x000A;)

    Процессор XML приводит коды конца строки, различные в различных в системах, в одному символу перевода строки, который передается в приложение. Пользовательский агент XHTML, кроме того, должен обрабатывать как пробельные следующие символы:

    • перевод страницы (&#x000C;)
    • пробел нулевой ширины (&#x200B;)

    В элементах, в которых для атрибута 'xml:space' установлено значение 'preserve', пользовательский агент должен сохранять все пробельные символы (за исключением начальных и конечных пробельных символов, которые должны удаляться). В противном случае пробелы должны обрабатываться по следующим правилам:

    • Все пробельные символы, окружающие элементы блока, должны удаляться.
    • Комментарии удаляются полностью и не влияют на обработку пробелов. Один пробельный символ в начале и в конце комментария обрабатывается как два пробела.
    • Начальные и конечные пробельные символы внутри элемента блока должны быть удалены.
    • Символы перевода строки в элементе блока должны быть преобразованы в пробел (если для атрибута 'xml:space' не установлено значение 'preserve').
    • Последовательность пробельных символов должна сокращаться до одного пробела (если для атрибута 'xml:space' не установлено значение 'preserve').
    • Относительно воспроизведения, пользовательский агент должен генерировать содержимое подходящим для языка, на котором оно написано, способом. В языках, основным написанием которых является латиница, символ пробела набора ASCII обычно используется для кодирования грамматических границ слов и типографских пробелов; в языках, основное написание которых связано с алфавитом нагари (например, в санскрите, тайском и т.д.), грамматические границы между словами могут кодироваться с помощью символа пробела набора ZW, но в генерируемом выводе они обычно не представляются типографскими пробелами; в языках с арабским написанием типографские пробелы могут кодироваться с помощью символа пробела, а также с помощью символа пробела набора ZW для отделения 'внутренних' грамматических границ (то, что для русского человека выглядит в арабском языке, как одно слово, часто может быть несколькими словами, например, 'kitAbuhum' = 'kitAbu-hum' = 'книга их' == их книга); а в языках с китайским написанием традиционно не кодируются ни пробелы между словами, ни типографские пробелы.

    Пробелы в значениях атрибутов обрабатываются в соответствии с [XML].

4. Различия по сравнению с HTML 4

Поскольку XHTML является приложением XML, некоторые приемы, допустимые в языке HTML 4 [HTML], основанном на SGML, должны быть изменены.

4.1 Документы должны быть правильно построены

Правильное построение - это новое понятие, введенное в [XML]. В основном это означает, что все элементы либо должны иметь закрывающие теги, либо записываться в специальной форме (как описано ниже), и все элементы должны вкладываться друг в друга.

Хотя в SGML перекрытие недопустимо, существующие браузеры обычно не считают это ошибкой.

ПРАВИЛЬНО: вложенные элементы.

<p>это выделенный <em>абзац</em>.</p>

НЕПРАВИЛЬНО: перекрывающиеся элементы

<p>это выделенный <em>абзац.</p></em>

4.2 Имена атрибутов и элементов должны быть в нижнем регистре

В документах XHTML для всех имен элементов и атрибутов HTML должен использоваться нижний регистр. Это различие обязательно, поскольку в XML регистр имеет значение - например, <li> и <LI> - различные теги.

4.3 Для непустых элементов конечные теги обязательны

В HTML 4 конечный тег некоторых элементов может опускаться; при этом закрытие элемента подразумевалось автоматически благодаря последующим тегам. Это не допускается в XHTML, построенном на основе XML. Все элементы, кроме объявленных в DTD как EMPTY, должны иметь конечный тег.

ПРАВИЛЬНО: закрытые элементы

<p>это абзац.</p><p>here is another paragraph.</p>

НЕПРАВИЛЬНО: незакрытые элементы

<p>это абзац.<p>here is another paragraph.

4.4 Значения атрибутов должны всегда заключаться в кавычки

Все значения атрибутов должны заключаться в кавычки, даже числовые.

ПРАВИЛЬНО: значения атрибутов в кавычках

<table rows="3">

НЕПРАВИЛЬНО: значения атрибутов без кавычек

<table rows=3>

4.5 Минимизация атрибутов

В XML не поддерживается минимизация атрибутов. Пары атрибут-значение должны быть записаны полностью. Такие имена атрибутов как compact и checked не могут встречаться в элементах без указания их значения.

ПРАВИЛЬНО: неминимизированные атрибуты

<dl compact="compact">

НЕПРАВИЛЬНО: минимизированные атрибуты

<dl compact>

4.6 Пустые элементы

Пустые элементы должны иметь конечный тег или начальный тег должен заканчиваться угловой скобкой (/>). Например, <br/> или <hr></hr>. Информацию о том, как обеспечить обратную совместимость с пользовательскими агентами HTML 4 см. в HTML Compatibility Guidelines.

ПРАВИЛЬНО: закрытые пустые теги

<br/><hr/>

НЕПРАВИЛЬНО: незакрытые пустые теги

<br><hr>

4.7 Обработка пробелов в значениях атрибутов

В значениях атрибутов пользовательские агенты должны удалять начальные и конечные пробелы от значений атрибутов и отображать последовательности из одного или нескольких пробельных символов (включая перевод строки) в один пробел между словами (символ пробела кодировки ASCII для западного начертания). См. раздел 3.3.3 спецификации [XML].

4.8 Элементы скриптов и стилей

В XHTML элементы скриптов и стилей объявляются как элементы с содержимым #PCDATA. В результате < и & будут обрабатываться как начало разметки, а такие объекты как &lt; и &amp; будут распознаваться процессором XML как ссылки на объекты < и & соответственно. Разбиение на строки содержимого элементов скриптов и стилей в разделе CDATA позволит избежать развертывания этих объектов.

<script>
 <![CDATA[
 ... незакодированное содержимое скрипта ...
 ]]>
 </script>

Разделы CDATA распознаются процессором XML и представляются в в виде узлов в объектной модели документа, см. раздел 1.3 Рекомендации DOM уровня 1 [DOM].

В качестве альтернативы можно использовать внешний скрипт или документы стилей.

4.9 Исключения SGML

SGML дает авторам DTD возможность запрещения содержания некоторых элементов в каком-либо другом. Такие запреты (называемые "исключениями") в XML невозможны.

Например, HTML 4 Strict DTD (строгое определение типа документа) запрещает вложение элементов 'a' друг в друга. Такие запреты невозможны в XML. Несмотря на то, что такие запреты не могут быть определены в DTD, определенные элементы не должны вкладываться. Список таких элементов и элементов, которые не должны вкладываться в них, приведен в нормативном приложении Б.

4.10 Элементы с атрибутами 'id' и 'name'

В 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 Compatibility Guidelines.

Обратите внимание, что в XHTML 1.0 атрибут name этих элементов формально считается нежелательным и будет удален из последующих версий XHTML.

5. Вопросы совместимости

Хотя к документам XHTML 1.0 не предъявляется требование совместимости с существующими пользовательскими агентами, на практике оно достаточно легко реализуемо. Основные принципы создания совместимых документов можно найти в приложении C.

5.1 Типы устройств Интернет

С момента публикации настоящей рекомендации общая рекомендованная отметка типа MIME для приложений на базе XML должна еще быть разрешена.

Однако документы XHTML, в которых соблюдаются принципы, изложенные в in приложении В, "Принципы совместимости с HTML", могут помечаться с помощью типа устройства Интернет "text/html", поскольку они совместимы с большей частью браузеров HTML. Настоящий документ не дает рекомендаций относительно пометки типа MIME других документов XHTML.

6. Направления развития

Спецификация XHTML 1.0 закладывает основу семейства типов документов, которые будут расширениями и подмножествами XHTML, для поддержания широкого диапазона новых устройств и приложений путем определения модулей и механизма объединения этих модулей. Такой механизм позволит унифицировать способы расширения XHTML 1.0 и использования его подмножеств путем определения новых модулей.

6.1 Модуляризация HTML

По мере перемещения XHTML с традиционных пользовательских агентов на рабочем столе на другие платформы становится ясно, что не все элементы XHTML будут необходимы на всех платформах. Например, в наладонниках или сотовых телефонах может поддерживаться только некоторое подмножество элементов XHTML.

Процесс модуляризации разбивает XHTML на ряд более мелких подмножеств элементов. Затем, если требования изменятся, эти элементы можно перекомбинировать иным образом.

Модули будут определены в другом документе W3C.

6.2 Подмножества и расширяемость

Модуляризация дает следующие преимущества:

  • Она предоставляет формальный механизм выделения подмножеств XHTML.

  • Она предоставляет формальный механизм расширения XHTML.

  • Она упрощает преобразование типов документов.

  • Она способствует повторному использованию модулей в новых типах документов.

6.3 Профили документов

В профиле документа определяется синтаксис и семантика набора документов. Соответствие профилю документа обеспечивает основу гарантии совместимости. В профиле документа определяются возможности, необходимые для обработки документа этого типа, например, какие могут использоваться форматы изображений, уровни скриптов, поддержка таблиц стилей и т.д.

Для разработчиков продуктов они обеспечивают возможность определения стандартных профилей различными группами по необходимости.

Для авторов профили устраняют необходимость написания нескольких различных версий документов для различных клиентов.

Для групп специальностей, например, химиков, врачей или математиков можно строить специальные профили со стандартными элементами HTML плюс группы элементов, необходимых для этих конкретных специальностей.

Приложение А. DTD

Данное приложение является нормативным.

Данные DTD и наборы объектов составляют нормативную часть настоящей спецификации. Полный набор файлов DTD с объявлением XML и открытым каталогом SGML можно найти в архиве zip настоящей спецификации.

A.1 Определения типов документов

Данные DTD приблизительно совпадают с DTD HTML 4. Весьма вероятно, что, когда DTD будут модуляризованы, будет применяться способ построения DTD, более близкий HTML 4.

A.2 Наборы объектов

Наборы объектов XHTML совпадают с наборами для HTML 4, но изменены так, чтобы быть допустимыми объявлениями объектов XML 1.0. Обратите внимание, что объект для обозначения Евро (&euro; или &#8364; или &#x20AC;) определен как специальный символ.

Приложение Б. Запрет на элементы

Данное приложение является нормативным.

На следующие элементы налагаются ограничения по включению в них других элементов (см. раздел 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.

Приложение В. Принципы совместимости с HTML

Данное приложение является информативным.

В данном приложении перечислены принципы дизайна для авторов, которые хотят, чтобы их документы XHTML генерировались и в существующих пользовательских агентах HTML.

C.1 Инструкции по обработке

Помните, что инструкции по обработке в некоторых пользовательских агентах генерируются. Однако обратите также внимание, что если объявление XML не включено в документ, в этом документе могут использоваться только стандартные кодировки символов UTF-8 или UTF-16.

C.2 Пустые элементы

Включайте пробел перед заключительным слешем (/) и > пустых элементов, например, <br />, <hr /> and <img src="karen.jpg" alt="Karen" />. Используйте также для пустых элементов синтаксис минимизированных тегов, например, <br />, поскольку альтернативный синтаксис <br></br>, допустимый в XML, во многих существующих пользовательских агентах приводит к непредсказуемым результатам.

C.3 Минимизация элементов и содержимое пустого элемента

В пустых экземплярах элементов, модель содержимого которых отличается от EMPTY (например, пустой заголовок или абзац) не используйте минимизированную форму (например, используйте <p> </p>, а не <p />).

C.4 Внедренные таблицы стилей и скрипты

Если в таблице стилей используется < или & или ]]> или --, используйте внешние таблицы стилей. Если в скрипте используются < или & или ]]> или --, используйте внешний скрипт. Обратите внимание, что синтаксические разборщики XML могут удалять содержимое комментариев. Поэтому как исторически сложилось, "прятать" скрипты и таблицы стилей в комментарии для обратной совместимости документов, скорее всего, не будет работать обычным образом в реализациях на базе XML.

C.5 Разрывы строк в значениях атрибутов

Избегайте помещения разрывов строк и нескольких пробельных символов в значения атрибутов. Они обрабатываются пользовательскими агентами по-разному.

C.6 Isindex

Не включайте в заголовок (head) документа несколько элементов isindex. Использование элемента isindex нежелательно, вместо него следует использовать элемент input.

C.7 Атрибуты lang и xml:lang

При указании чзыка элемента используйте оба элемента, lang и xml:lang. Приоритет имеет значение атрибута xml:lang.

C.8 Идентификаторы фрагментов

В 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.

C.9 Кодировка символов

Для указания кодировки символов в документе используйте как спецификацию атрибута кодировки в объявлении xml (например, <?xml version="1.0" encoding="EUC-JP"?>), так и выражение meta http-equiv (например, <meta http-equiv="Content-type" content='text/html; charset="EUC-JP"' />). Значение атрибута encoding инструкции по обработке xml имеет приоритет.

C.10 Булевы атрибуты

Некоторые пользовательские агенты HTML неспособны интерпретировать булевы атрибуты в полной (ненормализованной) форме, как это требуется в XML 1.0. Обратите внимание, что эта проблема не затрагивает пользовательские агенты, совместимые с HTML 4. Это относится к следующим атрибутам: compact, nowrap, ismap, declare, noshade, checked, disabled, readonly, multiple, selected, noresize, defer.

C.11 Объектная модель документа и XHTML

В рекомендации Document Object Model level 1 (Объектная модель документов, уровень 1) [DOM] определяются интерфейсы объектной модели документов для XML и HTML 4. В объектной модели документов HTML 4 определяется, что элемент HTML и имена атрибутов возвращаются в верхний регистр. В объектной модели документов XML определяется, что имена элементов и атрибутов возвращаются в том регистре, в котором они указаны. В XHTML 1.0 элементы и атрибуты задаются в нижнем регистре. С этими различиями можно справиться двумя способами:

  1. Приложения, которые обращаются к документам XHTML, обслуживаемым как тип устройств text/html через DOM, могут использовать HTML DOM и использовать имена элементов и атрибутов, возвращаемые этими интерфейсами в верхнем регистре.
  2. Приложения, которые обращаются к документам XHTML, обслуживаемым как тип устройств text/xml или application/xml, могут также использовать XML DOM. Элементы и атрибуты будут возвращаться в нижнем регистре. Кроме того, некоторые элементы XHTML могут отображаться или не отображаться в дереве объектов, поскольку они являются необязательными в модели содержимого (например, элемент tbody в элементе table). Это происходит потому, что в HTML 4 была разрешена такая минимизация некоторых элементов, что их начальные и конечные теги опускались (возможность языка SGML). Это невозможно в XML. Вместо того, чтобы потребовать от авторов документов вставки посторонних элементов, в XHTML эти элементы сделаны дополнительными. Приложения должны использовать эту возможность соответствующим образом.

C.12 Использование амперсандов в значениях атрибутов

Если значение атрибута содержит амперсанд, он должен быть представлен в виде ссылки на символьный объект (например, "&amp;"). Например, если атрибут href элемента a ссылается на CGI-скрипт, которому передаются параметры, он должен передавать их в виде http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;name=user, а не http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.

C.13 Каскадные таблицы стилей (CSS) и XHTML

В рекомендации "Каскадные таблицы стилей уровня 2" [CSS2] определяются свойства стиля, которые применяются при разборе дерева документа HTML или XML. Различия в разборе приведут к различным визуальным или звуковым результатам, в зависимости от используемых селекторов. Следующие советы позволят ослабить этот эффект для документов, обслуживаемых без изменения как устройства обоих типов:

  1. В таблицах стилей CSS для XHTML имена элементов и атрибутов должны быть в нижнем регистре.
  2. В таблицах элемент tbody не будет учитываться синтаксическим анализатором пользовательского агента HTML, но не анализатором пользовательского агента XML. Поэтому следует всегда явным образом добавлять элемент tbody, если он ссылается на селектор CSS.
  3. В пространстве имен XHTML ожидается, что пользовательские агенты будут распознавать атрибут "id" как атрибут типа ID. Поэтому таблицы стилей должны иметь возможность использования сокращенного синтаксиса селектора "#", если пользовательский агент не обращается к DTD.
  4. В пространстве имен XHTML ожидается, что пользовательские агенты будут распознавать атрибут "class". Поэтому таблицы стилей должны иметь возможность использования сокращенного синтаксиса селектора ".".
  5. В CSS определены разные правила конформности для документов HTML и XML; помните. Что правила HTML применяются к документам XHTML, представляемым как HTML, а правила XML применяются к документам XHTML, представляемым как XML.

Приложение Г. Благодарности

Данное приложение является информативным.

Настоящая спецификация была написана с участием следующих членов рабочей группы HTML W3C:

Стивен Пембертон (Steven Pemberton), CWI (Председатель рабочей группы HTML)
Мюррей Альтхайм (Murray Altheim), Sun Microsystems
Дэниел Остин (Daniel Austin), AskJeeves (CNET: The Computer Network до июля 1999 года)
Фрэнк Бамфри (Frank Boumphrey), HTML Writers Guild
Джон Бургер (John Burger), Mitre
Эндрю В. Донохо (Andrew W. Donoho), IBM
Сэм Дули (Sam Dooley), IBM
Клаус Хофрихтер (Klaus Hofrichter), GMD
Филипп Хошка (Philipp Hoschka), W3C
Масаясу Ишикава (Masayasu Ishikawa), W3C
Уорнер тен Кате (Warner ten Kate), Philips Electronics
Питер Кинг (Peter King), Phone.com
Паула Кланте (Paula Klante), JetForm
Шиничи Матсуи (Shin'ichi Matsui), Panasonic (частично занятый инженер W3C до сентября 1999 года)
Шейн МакКаррон (Shane McCarron), Applied Testing and Technology (The Open Group до августа 1999 года)
Анн Наварро (Ann Navarro), HTML Writers Guild
Зак Ниес (Zach Nies), Quark
Дэйв Рэггетт (Dave Raggett), W3C/HP (Руководитель по HTML W3C)
Патрик Шмитц (Patrick Schmitz), Microsoft
Себастиан Шнитценбаумер (Sebastian Schnitzenbaumer), Stack Overflow
Питер Старк (Peter Stark), Phone.com
Крис Уилсон (Chris Wilson), Microsoft
Тед Вугофски (Ted Wugofski), Gateway 2000
Дэн Зигмонд (Dan Zigmond), WebTV Networks

Приложение Д. Ссылки

Данное приложение является информативным.

[CSS2]
"Cascading Style Sheets, level 2 (CSS2) Specification", B. Bos, H. W. Lie, C. Lilley, I. Jacobs, 12 мая 1998 г.
Последняя версия: http://www.w3.org/TR/REC-CSS2
[DOM]
"Document Object Model (DOM) Level 1 Specification", Lauren Wood et al., 1 октября 1998.
Последняя версия: http://www.w3.org/TR/REC-DOM-Level-1
[HTML]
"HTML 4.01 Specification", D. Raggett, A. Le Hors, I. Jacobs, 24 декабря 1999 г.
Последняя версия: http://www.w3.org/TR/html401
[POSIX.1]
"ISO/IEC 9945-1:1990 Information Technology - Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API) [C Language]", Institute of Electrical and Electronics Engineers, Inc, 1990.
[RFC2046]
"RFC2046: Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", N. Freed and N. Borenstein, ноябрь 1996 г.
Находится по адресу: http://www.ietf.org/rfc/rfc2046.txt. Обратите внимание, что этот RFC заменяется RFC1521, RFC1522 и RFC1590.
[RFC2119]
"RFC2119: Key words for use in RFCs to Indicate Requirement Levels", S. Bradner, март 1997 г.
Находится по адресу: http://www.ietf.org/rfc/rfc2119.txt
[RFC2376]
"RFC2376: XML Media Types", E. Whitehead, M. Murata, июль 1998 г.
Находится по адресу: http://www.ietf.org/rfc/rfc2376.txt
[RFC2396]
"RFC2396: Uniform Resource Identifiers (URI): Generic Syntax", T. Berners-Lee, R. Fielding, L. Masinter, август 1998 г.
Данный документ дополняет RFC1738 и RFC1808.
Находится по адресу: http://www.ietf.org/rfc/rfc2396.txt
[XML]
"Extensible Markup Language (XML) 1.0 Specification", T. Bray, J. Paoli, C. M. Sperberg-McQueen, 10 февраля 1998 г.
Последняя версия: http://www.w3.org/TR/REC-xml
[XMLNAMES]
"Namespaces in XML", T. Bray, D. Hollander, A. Layman, 14 January 1999.
Пространства имен XML предоставляют простой метод разрешения имен, используемых в документах XML путем связывания их с пространствами имен, определяемыми URI.
Последняя версия: http://www.w3.org/TR/REC-xml-names

Значок конформности Level Triple-A, W3C-WAI Web Content Accessibility Guidelines 1.0



Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости