Беларусь, Минск |
Дизайн документов XML
Селектор представляет собой последовательность одного или нескольких простых селекторов.
Селектор типа представляет собой просто имя элемента XML, которое соответствует любому вхождению этого элемента в дерево документа XML. Универсальный селектор представляет собой знак "*", означающий соответствие любому элементу.
Селекторы атрибутов позволяют осуществлять более точный выбор или сравнение образцов, вплоть до атрибутов или даже значений атрибутов.
Значительно более детального соответствия можно добиться с помощью селектора ID. Он позволяет применить правило к конкретному элементу, имеющему конкретный ID.
Обычно правила CSS связываются с элементом на основе его положения в дереве документа. Однако селекторы псевдоклассов позволяют обращаться к узлам других типов в дереве документа. Например, псевдокласс first-child позволяет найти и связать правило с первым элементом, порожденным заданным элементом:
TITLE: first-child {...}
Затем конкретное правило CSS можно связать с объектом дерева документа, не указывая явным образом его имя.
Еще одним типом интересного селектора являются псевдоэлементы. Например, может оказаться необходимым переформатировать первую строку параграфа по-другому или первую букву главы написать более крупным шрифтом. В следующем примере выбирается первая строка из содержания данных элемента <DESCRIPTION>, а затем к ней применяется коллекция свойств из этого правила:
DESCRIPTION: first-line{...}
А в следующем коде со свойствами правила ассоциируется первая буква этого содержания:
DESCRIPTION: first-letter{...}
Простые селекторы можно связать цепочкой в одно селекторное выражение, но каждый простой селектор в нем отделяется символами пустого пространства, знаком > или +.
Типы среды и модульные таблицы стилей
Главной особенностью документов XML является отделение данных от их представления. Таблица стилей CSS - это средство, позволяющее подготовить документ XML для показа. CSS разрешает осуществлять представление в средах нескольких типов:
Таблица стилей 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, которые можно трансформировать в графические объекты с помощью устройств форматирования для печати.