3 Соответствие: Требования и Рекомендации

Содержание


3.1 Определения

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

Ключевые слова "ОБЯЗАН", "НЕ ОБЯЗАН", "НЕОБХОДИМ", "БУДЕТ", "НЕ БУДЕТ", "ДОЛЖЕН", "НЕ ДОЛЖЕН", "МОЖЕТ", "РЕКОМЕНДУЕТСЯ" И "НЕОБЯЗАТЕЛЕН"  в этом документе интерпретируются так, как описано в [RFC2119].
Впрочем, для комфорта чтения эти слова не употребляются в этой спецификации со всеми буквами в верхнем регистре.

Время от времени авторы этой спецификации дают фактические рекомендации для авторов и пользовательских шпионов (ПА). Эти рекомендации не являются нормативными и соответствие с этой спецификацией не зависит от их реализации. Эти рекомендации содержат выражения типа: "мы рекомендуем ...", "эта спецификация рекомендует ...", либо другие сходственные конструкции.

Таблица стилей
Набор операторов, специфицирующих представление документа.

Таблицы жанров могут иметь три разных источника: автор, пользователь и ПА. Взаимодействие этих источников описано в разделе Каскадирование и наследование.

Действующие таблицы стилей      
Статус таблицы жанров зависит от яруса CSS, используемого в таблице жанров. Все действующие таблицы жанров CSS1 являются действующими и в CSS2. Впрочем некоторые изменения по сопоставлению с CSS1 указывают, что некоторые таблицы жанров CSS1 будут иметь несколько иную семантику в CSS2.

Действующая таблица жанров CSS2 обязана быть написана в соответствии с грамматикой CSS2. Помимо того, она обязана содержать только at-правила, наименования свойств и значения свойств, определённые в данной спецификации. Неверное at-правило, наименование свойства либо значение свойства - это то, которое имеет неверное значение.

Документ-источник
Документ, на тот, что ссылается одна либо больше таблиц жанров. Он кодирован в том же языке, в котором документ представлен как дерево элементов. Всякий элемент состоит из имени, идентифицирующего тип элемента, нескольких необязательных атрибутов и (допустимо пустого) содержимого.
Язык документа
Язык кодировки документа-источника (скажем, HTML либо XML).
Элемент
(Термин SGML, см. [ISO8879].) Первичные синтаксические конструкции языка документа. Множество правил таблиц жанров CSS применяют имена элементов (такие как "P", "TABLE" и "OL" в HTML) для спецификации информации для их представления.
Замещаемый элемент
Элемент, для которого форматировщик CSS знает только внутренние размеры. В HTML элементы IMG, INPUT, TEXTAREA, SELECT и OBJECT дозволено привести в качестве примеров таких элементов. Скажем, содержимое элемента IMG зачастую замещается изображением, на которое указывает признак "src". CSS не определяет, как находить внутренние размеры.
Внутренние размеры
Ширина и высота, определённые самим элементом, а не его окружением. В CSS2 принято, что все замещаемые элементы - и только замещаемые элементы - возникают с внутренними размерами.
Атрибут
Значение, ассоциированное с элементом, состоящее из наименования и ассоциированного значения.
Содержимое
Содержимое, ассоциированное с элементом в документе-источнике; не все элементы имеют содержимое, и в этом случае они именуются пустыми. Содержимое элемента может быть текстом и может включать несколько субэлементов, тогда такой элемент именуется родительским (элементом-прародителем) для субэлементов.
Выводимое содержимое
Содержимое элемента позже итога, которое представляется в соответствии с подключённой таблицей жанров. Выводимое содержимое замещаемых элементов поступает извне документа-источника. Выводимое содержимое может быть также альтернативным текстом для данного элемента (скажем, значением признака "alt" в HTML) и может включать объекты, вставленные, очевидно либо неявно, таблицей жанров: маркировка либо нумерация списков и т.п.
Дерево документа
Дерево элементов, кодированных в документе-источнике. Весь элемент в этом дереве имеет только одного прародителя, за исключением элемента root, тот, что прародителей не имеет.
Дочерний элемент
Элемент А именуется дочерним элементом элемента В, если только В является родителем А.
Потомок
Элемент А именуется потомком элемента В, если (1) А является дочерним по отношению к В, либо (2) если А является дочерним касательно элемента С, тот, что является потомком В.
Предок (родительский элемент)
Элемент А именуется прародителем элемента В, если, и только если, В является потомком А.
Родственник
Элемент А именуется родственником элемента В, если, и только если, В и А имеют одного всеобщего прародителя.
Элемент А является предшествующим родственником, если возникает перед В в дереве документа.
Элемент В является дальнейшим родственником, если возникает позже А в дереве документа.
Предшествующий элемент
Элемент А именуется предшествующим элементу В, если, и только если, (1) А является прародителем В либо (2) А является предшествующим родственником В.
Последующий элемент
Элемент А именуется дальнейшим элементом для В, если, и только если, В является предшествующим элементом для А.
Автор
Тот, кто пишет документы и ассоциированные таблицы жанров.
 
Авторская утилита генерирует документы и ассоциированные таблицы жанров.
Пользователь
Тот, кто взаимодействует с пользовательским агентом (ПА) для просмотра, прослушивания либо иного применения документа и ассоциированной таблицы жанров. Пользователь может предоставлять персональную таблицу жанров, которая кодирует персональные установки-предпочтения.
Пользовательский агент  (ПА)     
Это какая-нибудь программа, интерпретирующая документ, написанный на определённом языке документов, и ассоциированную с ним таблицу жанров в соответствии с терминами данной спецификации. ПА может отображать документ, "читать" его вслух, распечатывать его, конвертировать его в иной формат и т.п.

Это пример документа-источника, кодированного в HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>   
  <TITLE>My home page</TITLE>
  <BODY>
    <H1>My home page</H1>
    <P>Welcome to my home page! Let me tell you about my favorite
		composers:
    <UL>
      <LI> Elvis Costello
      <LI> Johannes Brahms
      <LI> Georges Brassens
    </UL>
  </BODY>
</HTML>

Это дерево данного документа:

Sample document tree   [D]

В соответствии с определением HTML, элементы HEAD будут вставлены во время разбора и станут частью дерева документа, даже если тэги HEAD отсутствовали в документе-источнике. Таким же образом, разборщик "знает", где заканчиваются элементы P и LI, даже если они не имеют тэгов </P> и </LI> в источнике.


3.2 Соответствие

Этот раздел определяет соответствие только со спецификацией CSS2.
В грядущем могут возникнуть другие ярусы CSS, что может затребовать в грядущем от ПА выполнения иного комплекта свойств, дабы соответствовать.

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

  1. Он обязан поддерживать один либо больше типов носителя CSS2.
  2. Для всякого документа-источника он обязан запросить все ассоциированные таблицы жанров, подходящие для поддерживаемых типов носителя.
    Если он не может запросить все ассоциированные таблицы жанров (к примеру, из-за ошибок в сети), он обязан вывести документ с применением тех таблиц, которые он может запросить.
  3. Он обязан разобрать таблицы жанров в соответствии с данной спецификацией.
    В частности, он обязан распознавать все at-правила, блоки, объявления и селекторы (см. грамматику CSS2).
    Если ПА обнаруживает качество, применимое к поддерживаемому типу носителя, то ПА обязан разобрать значение в соответствии с определением свойства. Это значит, что ПА обязан принять все правильные значения и игнорировать объявления с неверными значениями. ПА обязаны игнорировать правила, применяемые к неподдерживаемым типам носителя.
  4. В всяком элементе дерева документа ПА обязан назначить значение для всякого применимого свойства в соответствии с определением свойства и с правилами каскадирования и наследования.
  5. Если документ-источник поступает с альтернативными таблицами жанров (как с ключевым словом "alternate" в HTML 4.0 [HTML40]), ПА обязан предоставить пользователю возможность предпочесть одну из нескольких таблиц жанров и применить её.

Не весь ПА обязан следовать каждым пунктам, впрочем:

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

Данная спецификация рекомендует, дабы ПА дозволял пользователю специфицировать пользовательские таблицы жанров.

3.3 Ошибочные условия

В всеобщем, данный документ не специфицирует для ПА поведение при обработке ошибок (скажем, как ПА ведут себя, если не могут обнаружить источник, указанный в URI).

Однако ПА обязаны соблюдать правила обработки ошибок разбора.

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


3.4 Тип содержимого text/css

Таблицы жанров CSS, находящиеся во внешнем файле, пересылаются по Internet как последовательность байтов, сопровождаемая информацией о кодировании (см. [HTML40], гл. 5). Конструкция переноса, называемая сущность сообщения, определена в RFC 2045 и RFC 2068 (см. [RFC2045] и [RFC2068]).
Сущность сообщения совместно с типом содержимого "text/css" представляет самостоятельный документ CSS. Тип содержимого "text/css" был зарегистрирован в RFC 2138 ([RFC2318]).