Название: Базы данных. Концепция баз данных, реляционная модель данных, языки SQL и XML (Токмаков Г. П.) Жанр: Информационные системы и технологии Просмотров: 1430 |
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- браузеры.
Обрабатывая таблицу стилей, 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-документу.
|
|