3 Соответствие: Требования и Рекомендации
В этом разделе мы начинаем формальную спецификацию 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>
Это дерево данного документа:
В соответствии с определением HTML,
элементы HEAD будут вставлены во время
разбора и станут частью дерева документа,
даже если тэги HEAD отсутствовали в документе-источнике.
Таким же образом, разборщик "знает",
где заканчиваются элементы P и LI, даже если
они не имеют тэгов </P> и </LI> в
источнике.
Этот раздел определяет соответствие
только со спецификацией CSS2.
В грядущем могут возникнуть другие ярусы CSS,
что может затребовать в грядущем от ПА
выполнения иного комплекта свойств, дабы
соответствовать.
В всеобщем, следующие пункты неукоснительно обязаны учитываться ПА, претендующим на
соответствие данной спецификации:
- Он обязан поддерживать один либо больше типов носителя CSS2.
- Для всякого документа-источника он обязан запросить все ассоциированные
таблицы жанров, подходящие для поддерживаемых типов носителя.
Если он не может запросить все ассоциированные таблицы жанров (к примеру,
из-за ошибок в сети), он обязан вывести документ с применением тех таблиц,
которые он может запросить.
- Он обязан разобрать таблицы жанров в соответствии с данной спецификацией.
В частности, он обязан распознавать все at-правила,
блоки, объявления и селекторы (см. грамматику CSS2).
Если ПА обнаруживает качество, применимое
к поддерживаемому типу носителя, то ПА
обязан разобрать значение в соответствии
с определением свойства. Это
значит, что ПА
обязан принять все правильные значения и
игнорировать объявления с неверными
значениями. ПА обязаны игнорировать
правила, применяемые к неподдерживаемым типам
носителя.
- В всяком элементе дерева документа
ПА обязан назначить значение для всякого
применимого свойства в соответствии с определением свойства и с правилами каскадирования
и наследования.
- Если документ-источник поступает с альтернативными таблицами жанров (как с ключевым словом
"alternate" в HTML 4.0 [HTML40]),
ПА обязан предоставить пользователю
возможность предпочесть одну из нескольких
таблиц жанров и применить её.
Не весь ПА обязан следовать каждым пунктам, впрочем:
- ПА, тот, что вводит таблицы жанров, обязан следовать пунктам 1 - 3.
- Авторская утилита должна только изготавливать действующие таблицы стилей
- ПА, тот, что выводит документ с ассоциированными таблицами жанров, обязан
следовать пунктам 1 - 5 и представлять документ в соответствии со специфическими требованиями носителя, установленными
дальше в этой спецификации. Значения при необходимости могут быть приближены
ПАгентом.
Невозможность для ПА исполнить часть
данной спецификации из-за ограничений
определенного устройства (скажем, ПА не
может вывести цвета на монохромном
мониторе) не обозначает несоответствие.
Данная спецификация рекомендует, дабы ПА
дозволял пользователю специфицировать
пользовательские таблицы жанров.
В всеобщем, данный документ не специфицирует
для ПА поведение при обработке ошибок (скажем,
как ПА ведут себя, если не могут обнаружить
источник, указанный в URI).
Однако ПА обязаны
соблюдать правила обработки
ошибок разбора.
Поскольку ПА могут
различаться в методах обработки ложных
условий, авторы и пользователи не обязаны полагаться
на специфическое поведение при обработке
ошибок.
Таблицы жанров CSS, находящиеся во внешнем файле, пересылаются по Internet как
последовательность байтов, сопровождаемая
информацией о кодировании (см. [HTML40],
гл. 5). Конструкция переноса, называемая сущность сообщения,
определена в RFC 2045 и RFC 2068 (см. [RFC2045]
и [RFC2068]).
Сущность сообщения совместно с типом
содержимого "text/css" представляет
самостоятельный документ CSS. Тип содержимого
"text/css" был зарегистрирован в RFC 2138 ([RFC2318]).