Опубликован: 08.08.2007 | Доступ: свободный | Студентов: 1670 / 176 | Оценка: 3.86 / 3.76 | Длительность: 11:46:00
Специальности: Программист
Лекция 11:

Дизайн документов XML

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >

Селектор представляет собой последовательность одного или нескольких простых селекторов.

Селектор типа представляет собой просто имя элемента XML, которое соответствует любому вхождению этого элемента в дерево документа XML. Универсальный селектор представляет собой знак "*", означающий соответствие любому элементу.

Селекторы атрибутов позволяют осуществлять более точный выбор или сравнение образцов, вплоть до атрибутов или даже значений атрибутов.

Значительно более детального соответствия можно добиться с помощью селектора ID. Он позволяет применить правило к конкретному элементу, имеющему конкретный ID.

Обычно правила CSS связываются с элементом на основе его положения в дереве документа. Однако селекторы псевдоклассов позволяют обращаться к узлам других типов в дереве документа. Например, псевдокласс first-child позволяет найти и связать правило с первым элементом, порожденным заданным элементом:

TITLE: first-child {...}

Затем конкретное правило CSS можно связать с объектом дерева документа, не указывая явным образом его имя.

Еще одним типом интересного селектора являются псевдоэлементы. Например, может оказаться необходимым переформатировать первую строку параграфа по-другому или первую букву главы написать более крупным шрифтом. В следующем примере выбирается первая строка из содержания данных элемента <DESCRIPTION>, а затем к ней применяется коллекция свойств из этого правила:

DESCRIPTION: first-line{...}

А в следующем коде со свойствами правила ассоциируется первая буква этого содержания:

DESCRIPTION: first-letter{...}

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

Типы среды и модульные таблицы стилей

Главной особенностью документов XML является отделение данных от их представления. Таблица стилей CSS - это средство, позволяющее подготовить документ XML для показа. CSS разрешает осуществлять представление в средах нескольких типов:

Тип среды Описание
screen Экранное устройство, например браузер
print Устройство печати, например для печатания книг
aural Слуховое устройство, например синтезатор речи
Braille Устройство Брайля для тактильной обратной связи
embossed Устройство для выдавливания, создаваемое страничным принтером Бройля
projection Устройство-проектор
tty Устройство tty больше известное под названием телетайпа
tv Телевизор

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

@media screen { BOOKLIST {display : block;} }

Как видите, все правила, предназначенные для конкретного типа среды, содержатся в конструкции @media. Селекторы могут определять применение одних и тех же правил к нескольким элементам, но их точно так же можно использовать для нескольких типов среды:

@media screen , print  { BOOKLIST { display : block;} }

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

Конструкция @import позволяет импортировать правила из других таблиц стилей. В документе таблицы стилей она должна предшествовать всем остальным конструкциям CSS. Сослаться на импортируемую таблицу стилей можно с помощью ее адреса URL

Конструкции @media и @import можно комбинировать в одном выражении.

Интерактивное поведение

В браузер Internet Explorer 5 и выше компания Microsoft добавила расширения, описывающие поведение. Они усовершенствовали возможности CSS, добавляя такие интерактивные действия, как выделение текста. Поведение можно связать с любым элементом XML. В отличие от документов DHTML документы XML, как правило, не содержат сценариев, так как это не соответствовало бы концепции отделения данных от их представления (или взаимодействия с ними). При связывании с любым элементом XML добавляется интерактивность визуализируемому документу.

Заключительные соображения по поводу CSS

CSS представляет собой простой язык стилей, который легко запомнить и использовать. Его главное преимущество - простота. Если нужно только визуализировать документ XML, не выполняя никаких трансформаций, язык CSS подойдет для этого лучше всего. Его основными недостатками являются отсутствие более сложных моделей визуализации и зависимость от структуры обрабатываемых документов XML. Значит, осуществляющее обработку приложение должно понимать язык. XML. Для получения большей независимости между структурой документа и форматом визуализации лучше воспользоваться языками XSL и DSSSL.

XSL

По сравнению с CSS расширяемый язык таблиц стилей реализует совершенно другой способ преобразования документа XML в отображаемые объекты. Он значительно более гибок и может быть использован для трансформации документа XML в языки для других сред.

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

Язык XSL состоит из трех спецификаций:

  • XPath - http://www.w3.org/TR/xpath
  • XSLT - http://www.w3. огд/TR/xslt
  • XSLF - http://www.w3.org/TR/xsl

В спецификации XSLT внимание обращено на трансформации документа XML, в спецификации XSLF - на форматирование объектов, а в XPath - на доступ к узлам иерархической структуры XML. Обработчик XSL должен, как минимум, поддерживать часть трансформаций ( XSLT ) и XPath.

Объекты форматирования XSL

При работе с печатными материалами документы XML можно трансформировать в объекты форматирования XSL. Затем в наиболее актуальных реализациях эти объекты преобразуются в другой формат, например PDF, в ходе отдельного процесса. Для выполнения описанных действий используется часть спецификации XSL - XSLF. Следует упомянуть, что объекты форматирования XSL трансформируются не только в формат PDF: для отображения результатов трансформации конкретные реализации могут предлагать и другие форматы, такие как ТеХ, RTF, MIF и т.д. Объекты форматирования XSLF не зависят от какой-либо реализации форматирования или визуализации. Таким образом, обработчик XSLF потенциально может трансформировать документ XML в другой формат на выходе с помощью одной таблицы стилей.

Язык XSL, как видно из его названия, является расширяемым. Это означает, что к имеющимся в языке объектам форматирования легко добавить новые объекты, что позволит избавиться от ограничения таблиц стилей CSS - фиксированного набора объектов форматирования.

Как работает язык XSLF

Как и другие языки, основанные на правилах, документ XSL ( XSLT или XSLF ) представляет собой коллекцию правил, состоящую из раздела сравнения образцов и раздела действий. На языке XSL эти правила называются шаблонами, так что атомарным элементом таблицы стилей XSL является шаблон. Часть шаблона XSL, осуществляющая сравнение с образцом, называется выражением XPath.

Как только выражение XPath выбрало узел документа, оно связывается с содержанием шаблона. Так как документ XML трансформируется в дерево результата, состоящее из объектов форматирования XSL, возникает необходимость сравнить каждый элемент оригинального документа XML с конкретным шаблоном. Кроме того, при необходимости трансформировать оригинальный документ совместно используется несколько конструкций XSLT и выражений XPath, что позволяет достичь любого узла документа XML, преобразуемого в иерархическую структуру.

Выражение XPath дает возможность достичь любого узла документа. Конструкция XSLT позволяет установить соответствие между узлами и шаблонами, содержащими объекты форматирования XSL.

Чтобы лучше понять процесс, обратимся к внутреннему устройству обработчика XSL.

Процессор XSL создает три дерева:

  • Исходное дерево, содержащее исходный документ, который надо визуализировать
  • Дерево с таблицей стилей XSL
  • Дерево результата, используемое для конструирования получаемого документа

Для каждого шаблона в дереве, содержащем таблицу стилей, при обнаружении явной или неявной конструкции apply-template процессор находит соответствующий узел в дереве исходного документа. Обнаружив соответствие, процессор использует содержание шаблона в качестве основы для результата, записываемого в дерево на выходе. Например, если задачей является визуализация документа в браузере, шаблон может содержать конструкции HTML. Для печатных материалов на выходе будут объекты форматирования XSL, которые можно трансформировать в графические объекты с помощью устройств форматирования для печати.

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >