Название: Базы данных. Концепция баз данных, реляционная модель данных, языки SQL и XML (Токмаков Г. П.)

Жанр: Информационные системы и технологии

Просмотров: 1402


7.4. стили и форматирование данных xml

 

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

В качестве примера рассмотрим телевизионный прогноз погоды. На экране появляется разноцветная карта, на которую нанесены изображения дождя, вет-

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

Итак, таблица стилей переводит информацию XML-документа в некоторую форму, которая может быть визуально представлена. Если, к примеру, доку- мент XML просматривается с помощью Web-браузера, то таблица стилей должна создать подходящий HTML-документ.

 

7.4.1.  О СНОВЫ  XSL

 

Технология таблиц стилей, которая преобразует или трансформирует доку- менты XML в другие форматы, представлена спецификацией XSL. Основная идея этой технологии состоит в том, что трансформированный документ можно от- крыть для просмотра в определенной программе, например, в Web-браузере. Сле- дует иметь в виду, что XSL не ограничивается преобразованием XML-документов в формат HTML, а может перевести документ из XML в любой другой язык разметки, поскольку обладает высокой степенью обобщенности.

Спецификация XSL предназначена для преобразования XML-документа. Схема выполнения такого преобразования показана на Рис. 7.3. . Преобразованием управляет таблица стилей, в которой указано, какие элементы входного XML- документа необходимо преобразовать и как они должны объединяться с другими элементами для получения выходного XML-документа. Одним из часто исполь- зуемых  применений  XSL является  преобразование  одной  общей  версии  Web- страницы в различные формы, предназначенные для вывода на экранах разных типов.

Как и документы HTML, любая таблица стилей XSL полезна лишь тогда, когда ее содержимое может быть обработано. Обработка таблицы стилей может выпол-

няться целым рядом программ, предназначенных для работы с XML, например, Web-

браузерами. Сейчас нам необходимо разобраться в том, как таблица стилей и XML-

документ связаны друг с другом и как осуществляется преобразование документа с использованием таблицы стилей.

XML-документ представляет собой древовидную структуру, растущую свер-

ху вниз. Вершиной дерева является корневой элемент. Все элементы, располо-

женные ниже корня, называются ветвями дерева. Важность корневого элемента заключается в том, что он определяет стартовую точку для XSL-процессора. XSL-

процессор − это приложение, обрабатывающее таблицу стилей XSL и исполь-

зующее ее для трансформации данных XML, например, в HTML-документ. Как правило, вам придется иметь дело с XSL-процессорами, встроенными в Web-

браузеры.

 

 

Рис. 7.3.          Преобразование документа XML-файла в оформленный документ при помощи таблицы стилей XSL

 

Обрабатывая таблицу стилей, XSL-процессор ищет шаблоны, описывающие определенные последовательности XML-документа. Фрагменты информации, подлежащие преобразованию, выделяются XSL-процессором на основе провер- ки того, соответствует ли информация некоторой последовательности. После- довательностью, к примеру, может являться имя элемента. Каждый раз, когда в процессе обработки XSL-процессор встречает это имя, он применяет соответст-

вующий шаблон, трансформируя тем самым данные. Проверка на соответствие последовательности начинается с корневого элемента и постепенно распро- страняется на весь документ.

Когда все последовательности найдены и к ним применены соответствую-

щие шаблоны, вы получаете полностью трансформированный XML-документ.

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

 

7.4.2.  С ТРУКТУРА  ТАБЛ ИЦЫ  СТИЛЕЙ  XSL

 

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

Таблица стилей XSL содержит обязательный корневой элемент с названием

stylesheet. Этот элемент наряду с набором других элементов и свойств XSL явля- ется частью словаря XSLT. Чтобы использовать содержимое XSLT, необходимо сна- чала объявить пространство имен, в которое оно будет помещено. Ниже показано, как с помощью элемента stylesheet объявляется пространство имен XSL:

 

 

Данный код делает доступными все элементы и атрибуты пространства имен XSL и назначает им префикс xsl. Это действие стандартно для всех таблиц стилей; его смысл поясняется в следующих подразделах, где мы рассмотрим кодирование последовательностей и шаблонов.

 

По след оват ельност и

При обработке таблицы стилей XSL поиск данных для трансформации осу- ществляется с помощью последовательностей. Говоря точнее, последователь- ность идентифицирует элемент или атрибут XML-документа, являющийся вет- вью его древовидной структуры.

Последовательности задаются весьма просто. Их можно сравнить путями файловой системы: если пути указывают на папки и файлы вашего жесткого диска,  то  последовательности определяют элементы и  атрибуты документа. Так,  к  примеру,  элемент  head,  вложенный  в  элемент  html любого  HTML- документа, идентифицируется как html/head.

Назначение последовательностей − выделять фрагменты XML-документов,

подлежащие трансформации. Когда XSL-процессор обнаруживает некоторые данные, соответствующие последовательности он передает их для выполнения

трансформации шаблону.

Ша бл оны

Шаблоны − часть таблицы стилей, предназначенная для трансформации данных. Когда XSL-процессор обнаруживает последовательность в документе, он пропускает ее через шаблон и трансформирует. Количество шаблонов таб- лицы стилей не ограничено. Если в таблице стилей имеется несколько шабло- нов, то каждый выполняет трансформацию определенного фрагмента XML- документа.

Поскольку XSL представляет собой XSL-словарь, таблицы стилей закодиро-

ваны с помощью XML. Шаблон задается элементом xsl:template, а последова-

тельность, связанная с ним, − атрибутом match элемента xsl:template.

Следующий пример демонстрирует использование шаблона для корневого элемента документа:

 

 

Этот шаблон будет осуществлять трансформацию всего документа цели- ком, начиная с корневого элемента. Как правило, вам необходимо будет созда- вать шаблоны для элементов, находящихся ниже корневого.

Например, шаблон  для  элемента title XML-документа, приведенного на

Рис. 7.1. , будет выглядеть так:

 

 

Как видим, элемент title задан с перечислением всех его родительских элементов. Обратите внимание на закрывающий тег </xsl:template>, обяза- тельный для всех шаблонов. Чтобы задать преобразование для данных находя- щихся внутри элемента title, следует поместить тег <xsl:value‐of/> внутри шаблона, как показывает следующий код.

 

 

Здесь  преобразование заключается в  том,  что  перед  данными  элемента title будет помещен текст Глава, выделенный полужирным шрифтом. Эле- мент   <xsl:value‐of/>  представляет   содержимое   элемента   title.   Кроме

<xsl:value‐of/> существует еще несколько элементов, которые часто исполь-

зуются при создании шаблонов и входят в стандартное пространство имен XSL:

 

xsl:value‐of − вставляет содержимое элемента (атрибута) XML; xsl:if − задает условное соответствие для шаблонов; xsl:for‐each − создает цикл для элементов документа XML; xsl:apply‐templates − применяет шаблон к XML-документу.