Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_XML.doc
Скачиваний:
16
Добавлен:
03.05.2019
Размер:
3.94 Mб
Скачать

5.9. Присвоение значений в таблицах каскадных стилей

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

  1. Если вы присвоили значение свойству в атрибуте STYLE для определенного элемента в XML-документе, браузер использует это значение при отображении элемента. Например, он отобразит следующий элемент полужирным:

<TITLE STYLE="font-weight:bold">Язык HTML</TITLE>

  1. Если свойство не установлено в атрибуте STYLE, браузер использует значение свойства, объявленного в правиле CSS с контекстуальным селектором (т.е. селектором, который определяет элемент с одним или несколькими его элементами-предками, о чем говорилось ранее в разделе «Использование контекстуальных селекторов»). Предположим, что следующий элемент является элементом Документ XML-документа:

<MAPS>

<CITY>

<NAME>Витебск</NAME>

<STATE>Витебская область</STATE>

</CITY>

<STATE>Гродненская область</STATE>

</MAPS>

Допустим также, что присоединенная таблица стилей содержит следующие правила:

CITY STATE

{font-style: normal}

STATE

{font-style: itaiic}

Браузер использует правило CITY STATE для форматирования элемента "Витебская область" STATE, поскольку оно имеет контекстуальный селектор, и, следовательно, имеет приоритет над правилом STATE, имеющим родовой селектор. Надпись "Витебская область" в результате будет отображена обычным шрифтом.

  1. При отсутствии объявления значения определенного свойства в правиле, имеющем соответствующий контекстуальный селектор, браузер использует значение, объявленное в правиле с родовым селектором (т.е. селектором, который включает только имя элемента). Например, для второго компонента рассматриваемой таблицы стилей браузер не найдет соответствующего контекстуального правила для элемента "Гродненская область" STATE, поэтому использует родовое правило STATE, в результате чего надпись "Гродненская область" будет отображена курсивом.

  2. При отсутствии объявления значения определенного свойства для элемента в родовом правиле, браузер использует установку свойства, объявленную для ближайшего элемента-предка (родителя, родителя родителя и т.д.). Например, в таблице стилей из Листинга 1.3 правило для элемента TITLE не присваивает значение для свойства font-size:

TITLE

{font-style: italic}

Следовательно, браузер будет использовать установку свойства font-size для родительского элемента BOOK (элемент BOOK является родителем для элемента TITLE в XML-документе, использующем таблицу стилей):

BOOK

{display: block;

margin-top: 12pt;

font-size: 10pt}

В результате текст элемента TITLE будет отображен с размером шрифта 10 пунктов.

Этот процесс имеет место только для наследуемого свойства. Для ненаследуемого свойства браузер будет использовать значение свойства по умолчанию (см. раздел “Наследование установок свойств” ранее в этой главе).

  1. Если таблица стилей не содержит установку свойства для какого-либо родительского элемента, браузер использует свою собственную установку. Такой установкой может быть значение по умолчанию, встроенное в браузер, либо значение, заданное пользователем браузера. Например, поскольку в рассматриваемой таблице стилей из Листинга 1.3 не установлено значение для свойства font-family, браузер использует свое собственное значение этого свойства для отображения всех элементов. В Internet Explorer это шрифт Times New Roman, если только пользователь браузера не выберет другое семейство шрифтов, воспользовавшись командой Internet Options (Свойства обозревателя) из меню Tools (Сервис).

Этот процесс имеет место только для наследуемых свойств. Для ненаследуемых свойств браузер использует значение свойства по умолчанию.

Основной принцип здесь следующий: в случае присвоения свойству значения, конфликтующие на различных уровнях, браузер отдает предпочтение более конкретизированному правилу. Например, установленное для элемента свойство является само по себе более конкретизированным, чем установка для родителя элемента, поэтому имеет приоритет. Этим принципом можно воспользоваться и в более сложных случаях. (Например, если дочерний элемент элемента-родителя имеет и контекстуальное, и родовое правило, браузер использует контекстуальное правило)

Порядок приоритетов не является незыблемым. Можно сделать так, что установка свойства в браузере будет иметь приоритет над установкой свойства в таблице стилей, присоединенной к XML-документу. Это дает возможность пользователям управлять форматированием (например, пользователь с ослабленным зрением может использовать увеличенный шрифт). В Internet Explorer, например, пользователь может присвоить установке свойств в браузере наивысший приоритет по отношению к установкам свойств в таблице стилей, выбрав команду Options (Свойства обозревателя) из меню Tools (Сервис), щелкнув на кнопке Accessibility (Оформление) на вкладке General (Общие) в диалоговом окне Internet Options (Свойства обозревателя) и выбрав соответствующие опции.

Что произойдет, если для определенного свойства установлены конфликтующие значения на одном и том же уровне? В таком случае браузер использует последнюю установку, которую он обработал. Например, если два родовых правила для одного элемента имеют конфликтующие установки для свойства font-style, как в следующем примере, браузер использует второе из них, поскольку оно обрабатывается последним:

TITLE, AUTHOR, BINDING, PRICE

{display: block;

font-size: 12pt;

font-weight: bold;

font-style: italic}

AUTHOR

{font-style: normal}

В этом примере элементы AUTHOR будут отформатированы обычным шрифтом, а не курсивом.

Ниже приведен порядок, в котором браузер обрабатывает правила таблицы стилей:

  • при связывании нескольких таблиц стилей с документом, использующим инструкцию по обработке xml-stylesheet, браузер обрабатывает таблицы стилей в последовательности, в которой они приведены в инструкции по обработке;

  • при импортировании одной или нескольких таблиц стилей в другую таблицу стилей с использованием директивы @import (см. раздел «Импорт других таблиц стилей»), браузер обрабатывает импортированные таблицы стилей перед таблицей, в которую они импортируются. Порядок обработки при этом определяется порядком импорта;

  • в таблице стилей правила обрабатываются в том порядке, в котором они записаны.

Правило, согласно которому браузер использует последнюю установку свойства, противоположно правилу, применяемому XML-npo-цессором в случае наличия множественных объявлений атрибутов или примитивов. XML-процессор использует первое объявление атрибута или примитива и игнорирует все последующие.