3 Согласование: требования и рекомендации.

Опубликовано: 17 июня 2014      Перевод:

Перевод параграфа 3 спецификации CSS2.1: Conformance: Requirements and Recommendations.

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

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

Иногда в данной спецификации приводятся полезные практические советы, адресованные как авторам, так и пользовательским агентам. Эти рекомендации не являются нормативными, и вопрос соответствия этой спецификации совсем не зависит от их реализации. В подобных инструкциях содержаться выражения типа «Мы рекомендуем…», «Данная спецификация рекомендует…» и им подобные формулировки.

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

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

Примеры и примечания относятся к ненормативной информации.

Примеры обычно определяются по используемому в их начале слову «пример» (могут иметь вид: Пример: "…тело примера…" или «Например,…») и выделяются особым цветом, как этот абзац.

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

или

а примечания и пояснения помещаются в такой блок:

Иллюстрации используются только в демонстрационных целях. Они не являются образцами визуализации используемых в них примеров, пока это не будет указано явно.

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

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

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

Вали́дная таблица стилей CSS2.1 уровня должна создаваться в соответствии с требованиями CSS2.1 грамматики. Более того, она должна содержать at-правила, имена и значения свойств, которые определены данной спецификацией. Запрещенное at-правило, имя и значение свойства является невали́дным.

Исходный документ
Документ, к которому применяется одна или более таблиц стилей. Он кодируется с помощью определенного языка, который представляет данный документ в виде дерева элементов. Для каждого элемента предусмотрено имя, идентифицирующее тип элемента, необязательный ряд атрибутов, и (возможно отсутствующий) контент. К примеру, исходный документ может быть экземпляром XML или SGML документа.
Язык документа
Язык, используемый для кодирования исходного документа (например, HTML, XHTML или SVG). CSS применяется для описания способа представления предоставляемого с помощью языков документа контента, к тому же CSS не влияет на предусмотренную языками документа семантику.
Элемент
(Термин языка SGML, смотри [ISO8879].) Первичная синтаксическая конструкция языка документа. CSS правила стилевых таблиц очень часто используют имена этих элементов (в HTML языке это могут быть P, TABLE, OL и другие) для определения способа их отображения.
Замещаемый элемент
Элемент, чей контент находится за пределами видимости CSS модели форматирования, подобный изображению, встроенному документу или апплету. Так, допустим, контент HTML элемента IMG, как правило, заменяется изображением, на который указывает его атрибут src. Замещаемые элементы, зачастую, имеют собственные размеры: внутреннюю высоту, внутреннюю ширину и внутренние пропорции. К примеру, растровое изображение имеет собственную ширину и высоту, заданные в абсолютных единицах (исходя из которых, собственно, и определяется внутреннее значение пропорции). С другой стороны, возможно, что некоторые документы могут не иметь собственных размеров (допустим, пустой HTML документ).

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

Контент замещаемых элементов не учитывается в CSS модели отображения.

Собственные размеры
Значения ширины и высоты, определяемые самим элементом, не подверженные влиянию извне. В CSS не указывается способ определения внутренних размеров. CSS2.1 предусматривает наличие внутренних размеров только у замещаемых элементов. В случае с растровыми изображениями, у которых отсутствует достоверная информация, касающаяся их разрешения, единица размером в 1px должна соответствовать пикселю исходного изображения.
Атрибут
Величина, ассоциируемая с элементом, состоящая из имени и соответствующего (текстуального) значения.
Контент
Связанный с элементом исходного документа контент. У некоторых элементов нет контента, поэтому их называют пустыми. Контент элемента может включать текст, а также ряд под-элементов, в таком случае элемент называется родительским элементом этих под-элементов.
Игнорировать
Этот термин имеет два несколько отличающихся значения, которые используются в рамках данной спецификации. Первое из них применяется, когда CSS анализатор должен придерживаться определенных правил в случае, если он обнаружит в таблице стилей неизвестный ему или запрещенный синтаксис. Тогда парсер должен проигнорировать определенные части таблицы стилей. Точные правила, определяющие фрагменты кода, которые должны быть проигнорированы, описаны в этих параграфах («Декларации и свойства», «Правила обработки ошибок парсинга», «Неподдерживаемые значения») или могут быть приведены непосредственно в месте использования термина «игнорировать». Второе значение этого термина применяется к пользовательскому агенту, который может (а в некоторых случаях обязан) пренебречь определенными свойствами или значениями, используемыми в таблице стилей даже если синтаксис не нарушен. Например, элементы table-column не могут воздействовать на шрифт таблицы, поэтому соответствующие им свойства шрифта должны игнорироваться.
Отображаемый контент
Контент элемента, который по окончании процесса визуализации, в соответствии с применяемыми таблицами стилей, прилагается к нему. Данной спецификацией не определено как отображается контент замещаемого элемента. К отображаемому контенту также может быть отнесена такая информация как альтернативный текст (например, значение XHTML атрибута alt), а также элементы, которые согласно соответствующей таблице стилей вставляются явным или не явным образом, такие как маркеры или нумерация списков.
Дерево документа
Дерево, созданное на основе элементов, применяемых в кодировке исходного документа. Каждый элемент этого дерева имеет один единственный родительский элемент, за исключением корневого элемента, для которого родительский элемент не предусмотрен.
Дочерний элемент
Элемент А называется дочерним элементом элемента В только в том случае, если элемент В является родительским элементом элемента А.
Потомок
Элемент А называется потомком элемента В, если либо А является дочерним элементом элемента В, либо А является дочерним элементом элемента С, который в свою очередь является потомком элемента В.
Предок
Элемент А называется предком элемента В только в том случае, если элемент В является потомком элемента А.
Родственный элемент одного уровня
Элемент А называется родственным элементом одного уровня элемента В только в том случае, если элементы А и В имеют один и тот же родительский элемент. Элемент А является предшествующим родственным элементом, если в дереве документа он встречается раньше элемента В. Элемент В является последующим родственным элементом одного уровня, если в дереве документа он встречается после элемента А.
Предшествующий элемент
Элемент А называется предшествующим элементом для элемента В только в том случае, если элемент А является либо предком элемента В, либо предшествующим родственным элементом для элемента В.
Последующий элемент
Элемент А называется последующим элементом для элемента В только если элемент В является предшествующим для элемента А.
Автор
Автором является личность, которая создает документы и ассоциируемые с ними таблицы стилей. Средством авторских разработок является Пользовательский Агент, генерирующий таблицы стилей.
Пользователь
Пользователем является личность, которая взаимодействует с пользовательским агентом с целью просмотра, прослушивания или использования документа и соответствующей ему таблицы стилей другим способом. Пользователь может предоставить собственную таблицу стилей, код которой отражает его личные предпочтения.
Пользовательский агент (ПА)
Пользовательский агент представляет собой любую программу, интерпретирующую документ, составленный с использованием языка документа, а также применяет связанные с документом таблицы стилей согласно требованиям данной спецификации. Пользовательский агент может отображать, озвучивать, выводить на печать документ, а также преобразовывать его в другой формат и использовать его в других целях. HTML пользовательский агент — это ПА, который поддерживает одну или более HTML спецификаций. Пользовательский агент, поддерживающий XHTML [XHTML], но не поддерживающий HTML, в контексте соответствия данной спецификации не считается HTML пользовательским агентом.
Свойство
CSS представляет ограниченный набор параметров, называемых свойствами, которые управляют процессом визуализации документа. У каждого свойства есть имя (например, color, font или border) и значение (например, red, 12pt Times или dotted). Свойства привязываются к различным частям документа, а также к странице, посредством которой в результате применения механизмов специфичности, каскадности и наследования, отображается документ (подробности в главе «Определение значений свойств. Каскадность и наследование»).

Вот пример исходного документа, написанного с помощью HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//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 4 спецификации, в ходе парсинга элементы HEAD будут подразумеваться и включаться в дерево документа даже если соответствующие им head теги в исходном документе отсутствуют. Аналогично тому, как анализатор определяет, где заканчиваются элементы P и LI, хотя соответствующих им закрывающих тегов </p> и </li> в источнике нет.

Документы, написанные на XHTML (и с помощью других основанных на XML языков) предусматривают иное поведение: в них отсутствуют подразумеваемые элементы и все элементы должны иметь закрывающие теги.

3.2 Вопросы соответствия ПА спецификации.

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

В основном, претендующий на соответствие данной спецификации пользовательский агент должен соблюдать следующие правила:

  1. Он должен различать один или более определяемых в CSS 2.1 медиа типов.
  2. Он должен производить поиск всех, связанных с каждым исходным документом таблиц стилей, которые соответствуют распознанным медиа типам. Если он не в состоянии извлечь все, связанные с документом таблицы стилей (допустим, по причине сетевых сбоев), то он должен отобразить документ с использованием тех таблиц, которые ему удалось получить.
  3. В ходе анализа таблиц стилей он должен руководствоваться рекомендациями данной спецификации. В частности, он должен определять все at-правила, блоки, декларации и селекторы (смотри главу «Грамматика CSS 2.1»). В случае если пользовательский агент встретит свойство, применяемое в рамках поддерживаемого медиа типа, то он должен проанализировать его значение в соответствии с определением данного свойства. Это значит, что пользовательский агент должен учитывать все вали́дные значения и игнорировать декларации с невали́дными значениями. Пользовательские агенты должны игнорировать правила, применяющиеся в рамках неподдерживаемых медиа типов.
  4. Для каждого свойства любого, находящегося в дереве документа элемента, он должен установить значение, руководствуясь при этом определениями соответствующих свойств и правилами каскадности и наследования.
  5. Если исходный документ предусматривает наличие альтернативных наборов таблиц стилей (подобных тем, что в HTML4 [HTML4] сопровождаются ключевым словом alternate), то пользовательский агент должен предоставить пользователю право выбора, какой из наборов необходимо применять.
  6. Пользовательский агент должен предусмотреть для пользователя возможность отключения действия авторских таблиц стилей.

Однако не все пользовательские агенты должны соблюдать каждое из условий:

  • Приложение, которое обрабатывает таблицы стилей без отображения какого-либо контента (например, CSS 2.1 валида́тор), должно удовлетворять пунктам 1 — 3.
  • Средства разработки для авторов должны лишь создавать вали́дные таблицы стилей.
  • Пользовательский агент, который отображает документ, используя ассоциированные с ним таблицы стилей, должен удовлетворять пунктам 1 — 6 и отображать документ в соответствии с медиа-обусловленными требованиями, определяемыми далее в данной спецификации. Если это необходимо, то значения могут быть аппроксимированы пользовательским агентом.

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

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

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

3.3 Ситуации возникновения ошибок.

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

3.4 Контентный тип text/css.

Созданные как отдельные файлы таблицы CSS стилей передаются по Интернету в виде последовательности байтов, сопровождаемой соответствующей информацией о кодировке. Структура такой передачи называется объектом сообщения и описана в RFC 2045 и RFC 2616 (смотри [RFC2045] и [RFC2616]). Объект сообщения тип контента которого обозначен как text/css, представляет независимый CSS документ. Тип контента text/css зарегистрирован с помощью RFC 2318 ([RFC2318]).