2.2 Коротке керівництво по css2 для xml- документів
Мова CSS може використовуватися з будь-яким структурованим форматом документів, наприклад, з додатками, написаними на мові XML(eXtensible Markup Language) [XML10]. Фактично, XML- додатка залежать від таблиць стилів більше, ніж HTML- додатка, оскільки в першому випадку розробники можуть створювати свої власні елементи, які не можуть бути відображені програмами перегляду.
Приведемо простий фрагмент з XML- документу :
<ARTICLE>
<HEADLINE> Фрідріх Великий знайомиться з Бахом </HEADLINE>
<AUTHOR> Иоган Ніколас Форкель </AUTHOR>
<PARA>
Одного разу увечері, якраз коли він готував
<INSTRUMENT>флейта</INSTRUMENT>, а його музиканти вже зібралися, офіцер подав йому список прибулих незнайомців.
</PARA>
</ARTICLE>
Щоб відобразити цей фрагмент по подібності документу, ми передусім повинні оголосити, які елементи належать самому рядку як такому(тобто не викликають її розриву), і які елементи, будучи блочними, їй не належать(тобто викликають розрив рядка).
INSTRUMENT { display: inline }
ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
Перше правило оголошує елемент INSTRUMENT як елемент рядка, а друге правило, представлене списком селекторів, розділених один від одного комами, оголошує усі інші елементи як блочні.
Одним з можливих шляхів інтеграції таблиці стилів з XML- документом є використання команд попередньої обробки :
<?XML: stylesheet type="text/css" href="bach.css"?>
<ARTICLE>
<HEADLINE> Фрідріх Великий знайомиться з Бахом </HEADLINE>
<AUTHOR> Иоган Ніколас Форкель </AUTHOR>
<PARA>
Одного разу увечері, якраз коли він готував
<INSTRUMENT>флейта</INSTRUMENT>, а його музиканти вже зібралися, офіцер подав йому список прибулих незнайомців.
</PARA>
</ARTICLE>
Програма перегляду зображувала б наведений вище приклад таким чином:
[D]
Зверніть увагу, що слово "флейта" залишається усередині абзацу, будучи вмістом елементу INSTRUMENT, що належить безпосередньо самому рядку.
Поки ще текст не відформатував так, як би ви цього хотіли. Наприклад, розмір шрифту заголовка має бути більший, ніж інший текст, і ви б бажали, щоб ім'я автора було виділене курсивом:
INSTRUMENT { display: inline }
ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
HEADLINE { font - size: 1.3em }
AUTHOR { font - style: italic }
ARTICLE, HEADLINE, AUTHOR, PARA { margin: 0.5em }
Програма перегляду зображуватиме наведений вище приклад таким чином:
[D]
Додаючи більше правил в таблицю стилів, ви зможете і далі покращувати представлення документу.
2.3 Модуль попередньої обробки в css2
У цьому розділі представлена одна з можливих моделей роботи призначеного для користувача агента, що підтримує інструкції CSS. Вона відображена тільки на рівні понять, так що її окремі реалізації можуть різниться між собою.
Згідно пропонованої моделі, призначений для користувача агент обробляє початковий код у декілька етапів:
Здійснює граматичний аналіз початкового документу і створює дерево документу.
Визначає тип кінцевого пристрою.
Вибирає усі таблиці стилів, пов'язані з документом і асоційовані з визначеним на попередньому етапі кінцевим пристроєм.
Коментує кожен елемент дерева документу, привласнюючи по одному значенню кожній властивості, що асоціюється з кінцевим типоп пристрої. Операція привласнення значень здійснюється відповідно до тих правил, які описані в розділі "Каскадує і спадкоємство".
Частина агента, що відноситься до обчислення значень, залежить від алгоритму форматування, що зумовлюється кінцевим типом пристрою. Наприклад, якщо кінцевим пристроєм є екран, то призначені для користувача агенти застосовують модель візуального форматування. Якщо вивід здійснюється на друкарську сторінку, то призначені для користувача агенти застосовують сторінкову модель. Якщо вивід здійснюється на облаштування звукового відтворення(наприклад, синтезатор мови), то призначені для користувача агенти застосовують модель звукового відтворення.
Створює структуру форматування на підставі комментированного дерева документу. Частенько структура форматування дуже схожа на дерево документу, але вона також може і значна відрізнятися від нього, особливо, якщо автори використовують псевдо-элементы і генерований вміст. По-перше, структура форматування не обов'язково має бути деревовидною, але її вид значною мірою залежить від її реалізації. По-друге, в структурі форматування може міститися як більша, так і менша кількість інформації, чим в дереві документу. Наприклад, якщо значення деякого елементу в дереві документу встановлене в 'none' для властивості 'display', те цей елемент нічого не згенерує в структурі форматування. З іншого боку, елемент, що визначає список, може згенерувати більше інформації в структурі форматування : вміст елементу списку і інформацію про стиль списку(наприклад, зображення маркера позиції).
Слід зауважити, що на цьому кроці призначений для користувача агент, підтримувальний CSS, не змінює дерево документу. Зокрема, зміст, згенерований із застосуванням таблиць стилів, не подається назад в мовний процесор(наприклад, для повторного граматичного аналізу).
Передає структуру форматування на кінцевий пристрій(наприклад, друк результатів, відображення їх на екрані, звукове відтворення, і так далі).
Крок 1 виходить за рамки цього опису(см, наприклад [DOM]).
Кроки 2-5 складають предмет основної уваги в цьому описі.
Крок 6 виходить за рамки цього опису.
