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;
 
Самая последняя версия:
http://www.w3.org/TR/xhtml1
 
Предыдущая версия:
http://www.w3.org/TR/1999/PR-xhtml1-19991210
 
Авторы:
См.  благодарности.

Резюме

Эта спецификация определяет XHTML 1.0, переформулирование приложений HTML 4 как ОТД (Определения Типа Документа) XML 1.0, соответствующие таким же ОТД HTML 4.
Семантика элементов и их атрибутов определена в Рекомендациях W3C для HTML 4. Эта семантика даёт основу для будущего расширения XHTML. Совместимость с существующими ПА (Пользовательскими Агентами) HTML возможна при соблюдении небольшого количества руководящих указаний.

Статус этого документа

Этот раздел описывает статус документа на момент публикации.
Другие документы могут заменять этот документ.
Статус самых последних документов отслеживается на W3C.

Этот документ просмотрен Членами W3C и другими заинтересованными сторонами и утверждён Директором как Рекомендации W3C. Это постоянный документ, и он может использоваться как справочный материал или для цитирования из других документов как нормативный справочник. Роль W3C в составлении Рекомендаций заключается в том, чтобы привлечь внимание к данной спецификации и способствовать её широкому распространению. Это увеличит функциональность и возможности Web.

Этот документ создан как часть Работы W3C над HTML. Цели HTML Working Group (только для членов) обсуждаются в хартии HTML Working Group (только для членов).

Список текущих Рекомендаций W3C и другая техническая документация находятся по адресу
http://www.w3.org/TR.

Публичная дискуссия о возможностях HTML проходит в списках рассылки
www-html@w3.org (архив).

Пожалуйста, сообщайте об ошибках, обнаруженных в этом документе, по адресам
www-html-editor@w3.org
и   a_pyramidin@yahoo.com (переводчик русской версии).

Список обнаруженных ошибок и опечаток (для английской версии):
http://www.w3.org/2000/01/REC-xhtml1-20000126-errata
.

 

Содержание

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

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, используя все его преимущества, сохраняя в то же время возможности обратной и будущей совместимости.

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

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

1.2 Что такое XML?

XML это аббревиатура для Extensible Markup Language, и является акронимом Extensible Markup Language [XML].

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

Сохраняя все эти преимущества, XML убрал большинство самых сложных свойств SGML, ранее делавших создание программных средств тяжёлым и затратным.

1.3 Для чего нужен XHTML?

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

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

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

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

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

2.2 Основные термины

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

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

3.1 Соответствие Документов

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

3.1.1 Строго Соответствующие Документы

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

  1. Он должен проверяться одним из трёх ОТД, находящихся в Приложении A.

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

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

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

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="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>

3.2 Соответствие Пользовательских Агентов (ПА)

Соответствующий ПА должен отвечать всем следующим критериям:

  1. Для того, чтобы следовать Рекомендациям XML 1.0 [XML], ПА обязан разбирать и выполнять документ XHTML правильно сформированным. Если ПА заявлен как проверяющий ПА, он обязан также проверять документы на соответствие тем ОТД, на которые документы ссылаются, в соответствии с [XML].
  2.  Если ПА заявлен как поддерживающий функциональность, определённую в данной спецификации или требуемую данной спецификацией, через нормативную ссылку, он обязан делать это способами, соответствующими заявленным функциональностям.
  3. Если ПА обрабатывает документ XHTML как родовой документ XML, он может только распознавать атрибуты типа ID (напр., атрибут id большинства элементов XHTML) как идентификатор фрагмента.
  4. Если ПА обнаруживает элемент, который он не может распознать, он обязан отобразить содержимое элемента.
  5. Если ПА обнаруживает атрибут, который он не может распознать, он обязан игнорировать всё определение атрибута (т.е. сам атрибут и его значение).
  6. Если ПА обнаруживает значение атрибута, которое он не может распознать, он обязан использовать значение по умолчанию (данного атрибута).
  7. Если он обнаруживает ссылку-мнемонику (отличающуюся от предопределённых), для которой ПА не выполнил объявление (что случается, если объявление находится во внешнем поднаборе, который не прочитан ПА), ссылка-мнемоника должна отображаться как символ (начинающийся с амперсанда и заканчивающийся точкой с запятой) данной мнемоники.
  8. Если при просмотре ПА обнаружил символы или мнемоники, которые распознаются, но не могут быть отображены, ПА должен отобразить документ так, чтобы пользователю было понятно, что нормальное представление невозможно.
  9. Следующие символы определены в  [XML] как пробелы:

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

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

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

4. Отличия от HTML 4

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

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

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

Хотя перекрывание не допускается в SGML, оно допускается некоторыми браузерами.

 КОРРЕКТНО: вложенные элементы.

 <p>here is an emphasized <em>paragraph</em>.</p>

 НЕКОРРЕКТНО: перекрывающиеся элементы

 <p>here is an emphasized <em>paragraph.</p></em>

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

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

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

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

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

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

 КОРРЕКТНО: атрибут - в кавычках

 <table rows="3">

 НЕКОРРЕКТНО: атрибут - не в кавычках

 <table rows=3>

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

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

 КОРРЕКТНО: неминимизированный атрибут

 <dl compact="compact">

 НЕКОРРЕКТНО: минимизированный атрибут

 <dl compact>

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

Пустые элементы обязаны иметь конечный тег, или стартовый тег обязан заканчиваться  />. Например, <br/> или <hr></hr>. См. в Указаниях по совместимости с HTML информацию о том, как удостовериться, что имеется обратная совместимость с ПАгентами HTML 4.

 КОРРЕКТНО: законченные пустые теги

 <br/><hr/>

 НЕКОРРЕКТНО: незаконченные пустые теги

 <br><hr>

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

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

4.8 Элементы Script и Style

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

<script>
 <![CDATA[
 ... unescaped script content ...
 ]]>
 </script>

Разделы CDATA  распознаются процессором XML и являются узлами в Document Object Model, см. Раздел 1.3 в Рекомендациях DOM Level 1[DOM].

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

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

SGML предоставлял создателям ОТД возможность исключать некоторые элементы как содержимое элемента. Такие запрещения (называемые "исключения") невозможны в XML.

Например, Строгое ОТД HTML 4 (Strict DTD) запрещает вложение элемента 'a' в другой элемент 'a' на любую глубину. В XML об этом не может быть даже и речи. Хотя эти запрещения и могут отсутствовать в ОТД, определённые элементы не могут вкладываться.
Резюме по этому вопросу содержится в  Приложении B.

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. См. в Указаниях по совместимости с HTML информацию о том, как определить, что подобные якоря обратно совместимы при обработке документов XHTML как имеющих тип text/html.

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

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

Хотя и отсутствует требование совместимости документов XHTML 1.0 с существующими ПА, на практике это легко выполнимо. Указания по созданию совместимых документов можно найти в Приложении C.

5.1 Тип Носителя в Internet

Как и при публикации данных Рекомендаций, пометка MIME для приложений на базе XML всё ещё разрешена.

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

6. Указания на будущее

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

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

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

Процесс модуляризации разделяет XHTML на серии небольших наборов элементов. Эти элементы могут затем комбинироваться в различных целях.

Такие модули будут определены в следующем документе W3C.

6.2 Подразделения и Расширяемость

Модуляризация даёт несколько преимуществ:

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

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

Дизайнерам это даёт возможность определить различные группы, чтобы выработать свой собственный стандартный профиль.

Авторам это поможет избежать необходимости писать различные версии документа для различных клиентов.

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

Приложение А. ОТД
(Определения Типа Документа)

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

Эти ОТД и наборы мнемоник образуют нормативную часть данной спецификации. Полный набор файлов ОТД вместе с объявлением XML и SGML Open Catalog включён в zip-файл в данной спецификации (английская версия на сайте w3c).

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

Эти ОТД похожи на ОТД HTML 4. Это почти похоже на модуляризацию ОТД, метод конструирования ОТД, который будет разработан и который более близок к HTML 4.
(Прим перев. - У меня эти документы хорошо видны также в NC 5.0)

A.2 Наборы мнемоник

Наборы мнемоник XHTML - те же, что и в HTML 4, но модифицированы, чтобы быть верными объявлениями мнемоник XML 1.0.
обратите внимание, что мнемоника для знака Euro currency (&euro; или &#8364; или &#x20AC;) определена в разделе спец. символов.

Приложение  B.
Запрет Использования Элементов

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

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

Приложение C.
Указания по обеспечению совместимости с HTML

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

Это приложение резюмирует указания по дизайну для тех авторов, которые предполагают просмотр своих документов XHTML в существующих ПА HTML.

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

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

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

Содержат пробел перед закрывающими / и > , например, <br />, <hr />,  <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

Не включайте более чем один элемент isindex в head документа. Вместо элемента 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 в Разделе 2.5 в XML 1.0, продукт 5.
К сожалению, это ограничение не может быть выражено в ОТД XHTML 1.0. Из-за этого необходимо проявлять осторожность при конвертации существующих документов 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"' />). Значение атрибута кодировки инструкции процесса xml имеет приоритет.

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

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

C.11 Объектная Модель Документа/ОМД (Document Object Model - DOM) и XHTML

Объектная Модель Документа, уровень 1 Рекомендаций [DOM] определяет интерфейсы ОМД для XML и HTML 4. ОМД HTML 4 устанавливает, что имена атрибутов и элементов HTML вводятся в верхнем регистре. ОМД XML устанавливает, что имена атрибутов и элементов в том регистре, в котором они специфицированы. В XHTML 1.0 атрибуты и элементы специфицированы в нижнем регистре. Это очевидное различие может адресоваться двумя способами:

  1. Приложения, использующие документы XHTML, обслуживаемые как тип носителя Internet text/html в ОМД, могут использовать ОМД HTML и могут опираться на имена атрибутов и элементов, возвращаемые в верхнем регистре из этих интерфейсов.
  2. Приложения, использующие документы XHTML, обслуживаемые как типы носителя Internet text/xml или application/xml, могут также использовать ОМД XML. Элементы и атрибуты будут возвращаться в нижнем регистре.
    Также некоторые элементы 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 Каскадные Таблицы Стилей (Cascading Style Sheets/CSS) и XHTML

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

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

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

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

Эта спецификация была написана при участии членов рабочей группы W3C HTML:

Steven Pemberton, CWI (HTML Working Group Chair - Председатель Рабочей Группы)
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 (в W3C - лидер по HTML)
Patrick Schmitz, Microsoft
Sebastian Schnitzenbaumer, Stack Overflow
Peter Stark, Phone.com
Chris Wilson, Microsoft
Ted Wugofski, Gateway 2000
Dan Zigmond, WebTV Networks

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

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

[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 и 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 января 1999 г.
Пространство имён XML предоставляет простой метод квалификации имён, используемых в документах XML, путём ассоциирования их с пространствами имён, идентифицированными в URI.
Последняя версия: http://www.w3.org/TR/REC-xml-names

Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0

Внимание !