Визуальное представление XML-документов и таблицы стилей XSL. Структура XSL-документа, элементы пространств имен XSL и XHTML

В мобильном Web-е пока еще нет единого стандарта представления информации. Практически каждый производитель мобильного устройства, начиная от мобильного телефона и кончая наладонными компьютерами, поддерживает какой-то свой собственный стандарт представления информации, например, WML (для WAP), MML (J-Phone), HDML (для EZweb), CHTML (для DoCoMo), упрощенный HTML (для PDA).

Почти все эти форматы несовместимы друг с другом - WAP-телефон не может показать страницу, написанную в CHTML, а PDA iPAQ не может показать страницу, написанную на WML для WAP-телефона. Преобразование одного формата в другой весьма трудоемкий процесс, а иногда и невозможный. Есть множество подходов к решению этой проблемы, но одним из самых привлекательных является XML/XSL-технология. Состоит она в том, чтобы отделить данные (содержание) от их визуального представления (формы и формата).

Основная идея таблиц стилей заключается в сопоставлении каждому элементу документа правила, определяющего способ его визуализации. Этот принцип уже используется в CSS (Cascading Style Sheets - каскадных стилевых таблицах) - рекомендации W3C для оформления документов HTML. Однако, CSS нельзя было приспособить для определения правил визуализации документов XML, поскольку CSS ориентированы на статический набор тэгов HTML и не подходят для описания правил вывода динамически определяемых приложений XML. Поэтому необходимо было разработать новый язык. Этим языком стал XSL (eXtensible Style Language - расширяемый язык стилей), который является приложением XML и специально предназначен для формирования правил визуализации XML-документов.

XSL- документ представляет собой совокупность правил построения, каждое из которых выделено в отдельный блок, ограниченный тэгами <rule>и</rule>;. Правила определяют шаблоны, по которым каждому элементу XML ставится в соответствие последовательность HTML- тэгов, т.е. внутри них содержатся инструкции, определяющие элементы XML- документа и тэги форматирования, применяемые к ним.

Элементы XML, к которым будет применяться форматирование, обозначаются в XSL дескриптором <target-element/>;. Для указания элемента с конкретным названием (название элемента определяется тэгами, его обозначающими), т.е. определения класса элемента, можно использовать атрибутtype="<имя_элемента>"

Вот пример простейшего XSL-документа, определяющего форматирование для фрагмента <flower>rose</flower> :

<xsl>

<rule>

<target-element type="flower"/>

<p color="red" font-size="12">

<children/>

</p>

</rule>

</xsl>

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

<xsl>

<rule>

<target-element type="item1"/>

<target-element type="item2"/>

<target-element type="item3"/>

<hr>

<children/>

<hr>

</rule>

</xsl>

Разбор любого XSL- документа всегда начинается с правила для корневого элемента, в котором определяется область всего разбираемого XML документа и поэтому тэги форматирования, помещенные сюда, будут действовать на весь документ в целом. Для обозначения корневого правила необходимо включить в него элемент <root/>.

Дочерние элементы в XML-документе всегда находятся внутри области, определяемой тэгами родительского по отношению к ним элемента. Для того, чтобы точно указать месторасположение обрабатываемого элемента в дереве XML, в XSL используется дополнительный тэг <element>;. При помощи него можно указать, какие элементы должны предшествовать текущему, а какие - следовать после него.

Применительно к <target-element> и <element> в правилах также могут использоваться специальные элементы <attribute>;, при помощи которых можно уточнять характеристики обрабатываемых элементов, задавая различные инструкции форматирования для одинаковых элементов с различными атрибутами. Указываемые в <attribute> параметры name и value определяют атрибут XML, который должен иметь текущий обрабатываемый элемент.

Все элементы XSL-инструкций используют пространство имен xsl:, чтобы можно было отличать их от реальных элементов в шаблонах, определяемых в таблице стилей. Это пространство имен определено в таблице стилей XSL на Web-странице http: //www. w3c.org/1999/XSL/Trans form.

Каждый XSLT-файл должен содержать корневой элемент <xsl:stylesheet> (или корневой элемент <xsl: transf orm> — оба элемента в спецификации W3C трактуются как синонимы)- В свою очередь, этот корневой элемент может содержать любое количество элементов XSLT-инструкций из пространства имен xsl: наряду с HTML- или XHTML-элементами или элементами из других пространств имен, если в этом есть необходимость. Все вместе они используются в качестве шаблонов при преобразовании форматированных XML-данных в форматированные и визуализируемые HTML-ил и XHTML-данные.

Наши рекомендации