Модуляризация XHTML

Соответствие Пользовательского Агента (ПА) Семейства XHTML


Соответствующий ПА обязан удовлетворять следующим критериям (как определено в ):

  • Чтобы следовать Рекомендациям XML 1.0 , ПА обязан разбирать и выполнять документ XHTML правильно сформированным. Если ПА объявлен как проверяющий ПА, он обязан также проверять документы относительно их ОТД в соответствии с .
  • Если ПА объявляет о поддержке возможностей, определённых в данной спецификации или требуемых данной спецификацией через нормативные ссылки, он обязан выполнять это способами, соответствующими определениям возможностей.
  • Когда ПА обрабатывает документ XHTML как общий (родовой) документ , он должен лишь распознавать атрибуты типа ID (напр., атрибут id

    большинства элементов XHTML) как идентификаторы фрагмента.

  • Если ПА обнаруживает элемент, который он не в состоянии распознать, он обязан продолжить обработку потомков этого элемента. Если содержимым является текст, то текст обязан быть представлен (выведен) пользователю.
  • Если ПА обнаруживает атрибут, который он не в состоянии распознать, он обязан игнорировать всю спецификацию атрибута (т.е. атрибут и его значение).
  • Если ПА обнаруживает значение атрибута, которое он не в состоянии распознать, он обязан использовать значение по умолчанию данного атрибута.
  • Если ПА обнаруживает ссылку-мнемонику (отличную от предопределённых), для которой ПА не производит объявлений (что может случиться, если объявление находится во внешнем поднаборе, который ПА не может прочесть), то ссылка-мнемоника должна быть выведена как символы (начиная с амперсанда и заканчивая точкой с запятой), представляющие мнемонику.
  • При выводе содержимого, ПАгенты, обнаружившие символы или мнемоники, которые ими не распознаются, но не могут быть представлены, должны отобразить документ так, чтобы пользователю было понятно, что нормальное представление невозможно.
  • Пробел обрабатывается в соответствии со следующими правилами. Данные символы определены в как пробельные символы:

    • SPACE/пробел ( )
    • HORIZONTAL TABULATION/горизонтальная табуляция (	)



    • CARRIAGE RETURN/возврат каретки (
)


    • LINE FEED/прогон строки (
)


    • Процессор XML нормализует различные системные коды конца строки в единый символ LINE FEED, который и передаётся приложению.

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

    • Все пробелы, окружающие блок элементов, должны быть удалены.


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


    • Если атрибут 'xml:space' установлен в 'preserve', пробельные символы обязаны быть сохранены и последующие символы LINE FEED внутри блока обязаны не быть конвертированы.


    • Если атрибут 'xml:space' установлен в 'preserve', тогда:


    • Ведущие и ведомые пробелы внутри элемента блока обязаны быть удалены.


    • Символы LINE FEED обязаны быть конвертированы в один из следующих символов: SPACE, ZERO WIDTH SPACE (​) или ни в один из символов (т.е. удалены).

      Выбор результирующего символа зависит от ПА и обусловлен свойствами письма (языка) символов до и после символа LINE FEED.


    • Последовательность пробелов без символов LINE FEED обязана быть редуцирована до символа SPACE.


    • Последовательность пробельных символов с одним или более символом LINE FEED обязана быть редуцирована таким же образом до символа SPACE.


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

      Примечание (информативное): При определении того, как конвертировать символ LINE FEED, ПА должен рассмотреть следующие случаи, когда вид письма с любой стороны от LINE FEED определяет выбор замены. Символы ОБЩЕГО письма (такие как пунктуация) рассматриваются так же, как и письмо с другой стороны:

    • Если символы до и после LINE FEED принадлежат письму, в котором символ SPACE используется как разделитель слов, то символ LINE FEED должен быть конвертирован в символ SPACE. Примерами такого письма могут служить латиница, греческое и кириллица.


    • Если символы до и после LINE FEED принадлежат идеографическому письму или системе письма, в которой нет разделителя слов, то LINE FEED должен быть конвертирован в нулевой (пустой/никакой) символ. Примеры такого письма или системы письма - китайский, японский.


    • Если символы до и после LINE FEED принадлежат неидеографическому письму, в котором нет разделителя слов, LINE FEED должен быть конвертирован в символ ZERO WIDTH SPACE (​) или в нулевой (пустой/никакой) символ. Примеры такого письма -тайский, кхмерский.


    • Если условия с (1) по (3) неприменимы, то символ LINE FEED должен быть конвертирован в символ SPACE.


    • Техническое сообщение Unicode TR#24 (Script Names) предоставляет назначения имён скриптов всем символам.


      Содержание раздела