4В каждом элементе дерева документа ПА обязан назначить значение для каждого применимого свойства в соответствии с определением свойства и с правилами каскадирования и наследования.
5Если документ-источник поступает с альтернативными таблицами стилей (как с ключевым словом "alternate" в HTML 4.0 [HTML40]), ПА обязан предоставить пользователю возможность выбрать одну из нескольких таблиц стилей и применить её.
Не каждый ПА обязан следовать всем пунктам, однако:
[x]. ПА , который вводит таблицы стилей, обязан следовать пунктам 1 - 3.
[x]. Авторская утилита должна только производить действующие таблицы стилей
[x]. ПА , который выводит документ с ассоциированными таблицами стилей, обязан следовать пунктам 1 - 5 и представлять документ в соответствии со специфическими требованиями носителя, установленными далее в этой спецификации. Значенияпри необходимости могут быть приближены ПАгентом.
Невозможность для ПА выполнить часть данной спецификации из-за ограничений конкретного устройства (например, ПА не может вывести цвета на монохромном мониторе) не означает несоответствие.
Данная спецификация рекомендует, чтобы ПА позволял пользователю специфицировать пользовательские таблицы стилей.
В общем, данный документ не специфицирует для ПА поведение при обработке ошибок (например, как ПА ведут себя, если не могут найти ресурс, указанный в URI).
Однако ПА обязаны соблюдать правила обработки ошибок разбора.
Поскольку ПА могут различаться в способах обработки ошибочных условий, авторы и пользователи не обязаны полагаться на специфическое поведение при обработке ошибок.
Таблицы стилей CSS, находящиеся во внешнем файле, пересылаются по Internet как последовательность байтов, сопровождаемая информацией о кодировании (см. [HTML40], гл. 5). Структура переноса, называемая сущность сообщения , определена в RFC 2045 и RFC 2068 (см. [RFC2045]и [RFC2068]).
Сущность сообщения вместе с типом содержимого "text/css" представляет независимый документ CSS. Тип содержимого "text/css" был зарегистрирован в RFC 2138 ( [RFC2318]).
Лекция 4. Синтаксис CSS2 и базовые типы данных
В этом разделе описывается грамматика и правила разбора, общие для любой версии CSS.
В этом разделе описывается грамматика (и правила вперёд-совместимого разбора), общие для любой версии CSS (включая CSS2). Будущие версии CSS будут придерживаться этого ядра синтаксиса, хотя и могут ввести дополнительные синтаксические ограничения.
Эти описания являются нормативными. Они также дополняются нормативными грамматическими правилами в Приложении D.
Все уровни CSS - уровень 1, уровень 2 и любые будущие уровни - используют одно ядро синтаксиса. Это позволяет пользовательским агентам (ПА) разбирать (хотя и не полностью понимать) таблицы стилей, написанные в уровнях CSS, ещё не существовавших в момент создания ПА. Дизайнеры могут использовать это свойство для создания таблиц стилей, работающих со старыми ПА, применяя также возможности позднейших уровней CSS.
На лексическом уровне таблицы стилей CSS состоят из последовательности лексем (грамматических единиц). Список лексем CSS2 приведён ниже. Определения используют общепринятые выражения в стиле Lex. Восьмеричные коды относятся к ISO 10646 ( [ISO10646]). Как и в Lex, в случае нескольких одновременных совпадений, самое длинное совпадение определяет лексему.
Лексема |
Определение |
IDENT |
{ident} |
ATKEYWORD |
@{ident} |
STRING |
{string} |
HASH |
#{name} |
NUMBER |
{num} |
PERCENTAGE |
{num}% |
DIMENSION |
{num}{ident} |
URI |
url\({w}{string}{w}\) | url\({w}([!#$%&*-~]|{nonascii}|{escape})*{w}\) |
UNICODE-RANGE |
U\+[0-9A-F?]{1,6}(-[0-9A-F]{1,6})? |
CDO |
|
; |
; |
{ |
\{ |
} |
\} |
( |
\( |
) |
\) |
[ |
\[ |
] |
\] |
S |
[ \t\r\n\f]+ |
COMMENT |
\/\*[^*]*\*+([^/][^*]*\*+)*\/ |
FUNCTION |
{ident}\( |
INCLUDES |
~= |
DASHMATCH |
|= |
DELIM |
любой другой символ, не совпавший с вышеприведёнными правилами |
Вышеприведённые макросы в фигурных скобках ({}) определены так:
Макрос |
Определение |
ident |
{nmstart}{nmchar}* |
name |
{nmchar}+ |
nmstart |
[a-zA-Z]|{nonascii}|{escape} |
nonascii |
[^\0-\177] |
unicode |
\\[0-9a-f]{1,6}[ \n\r\t\f]? |
escape |
{unicode}|\\[ -~\200-\4177777] |
nmchar |
[a-z0-9-]|{nonascii}|{escape} |
num |
[0-9]+|[0-9]*\.[0-9]+ |
string |
{string1}|{string2} |
string1 |
\"([\t !#$%&(-~]|\\{nl}|\'|{nonascii}|{escape})*\" |
string2 |
\'([\t !#$%&(-~]|\\{nl}|\"|{nonascii}|{escape})*\' |
nl |
\n|\r\n|\r|\f |
w |
[ \t\r\n\f]* |
Ниже дан синтаксис ядра CSS. В последующих разделах описывается, как этот синтаксис использовать. Приложение Dописывает более ограниченный набор грамматических правил исключительно для уровня 2 языка CSS.
Читать дальше