Визуальное представление 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-данные.