Чтение онлайн

на главную - закладки

Жанры

Технология XSLT

Валиков Алексей Н.

Шрифт:

<root/>

 </xsl:template>

</xsl:stylesheet>

Выделенный полужирным шрифтом на листинге 4.1 элемент

source
принадлежит пространству имен с URI
http://www.a.com/XSL/source
. Поскольку пространство имен этого элемента ненулевое, такое объявление является корректным.

Упрощенные преобразования

Многие простые преобразования состоят из единственного

правила, которое обрабатывает корневой узел входящего документа. Общий вид такого рода преобразований показан в следующем листинге.

Листинг 4.2. Простое преобразование

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/">

<result>

<!-- Шаблон -->

</result>

 </xsl:template>

</xsl:stylesheet>

XSLT позволяет упрощать запись таких преобразований, опуская элементы

xsl:stylesheet
и
xsl:template
и оставляя только шаблон, создающий выходящий документ.

Корневой элемент упрощенной записи должен содержать атрибут

xsl:version
, указывающий версию языка XSLT, использованного в шаблоне. Как правило, этот элемент также содержит объявление пространства имен XSLT, хотя оно может быть определено и в другом месте.

Пример

Преобразование, приведенное в листинге 4.2, можно переписать в упрощенном виде следующим образом.

Листинг 4.3. Упрощённая запись преобразования

<result

 xsl:version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <!-- Шаблон -->

</result >

Приведем еще один простой пример упрощенной записи преобразования, генерирующего простейшую HTML-страницу.

Листинг 4.4. Упрощённая запись преобразования XML-документа в HTML

<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <head>

<title>

<xsl:value-of select="page/name"/>

</title>

 </head>

 <body>

<xsl:value-of select="page/content"/>

 </body>

</html>

Следующий листинг приводит полную версию этого же преобразования.

Листинг 4.5. Полная запись преобразования XML-документа в HTML

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/">

<html>

<head>

<title>

<xsl:value-of select="page/name"/>

</title>

</head>

<body>

<xsl:value-of select="page/content"/>

</body>

</html>

 </xsl:template>

</xsl:stylesheet>

Модульная

организация преобразования

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

Включение преобразований

Подобно тому, как мы бы использовали в языке С директиву

#include
для включения внешних файлов, преобразования в XSLT могут использовать для той же самой цели элемент
xsl:include
. Правда, в отличие от языка С, условное включение в XSLT невозможно.

Элемент xsl:include

<xsl:include

 href = "URI"/>

Обязательный атрибут

href
элемента
xsl:include
содержит URI внешнего модуля, который должен быть включен в текущее преобразование. Внешний модуль обязан быть корректным XSLT-преобразованием.

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

xsl:include
было содержимое этого внешнего модуля.

Пример

Рассмотрим простое преобразование

a.xsl
, которое определяет значение переменной
date
.

Листинг 4.6. Преобразование a.xsl

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:variable name="date" select="'16.07.2001'"/>

</xsl:stylesheet>

Включим

a.xsl
в преобразование
b.xsl
.

Листинг 4.7. Преобразование b.xsl

<xsl:stylesheet

 version="1.0"

Поделиться:
Популярные книги

Дорогой Солнца

Котов Сергей
1. Дорогой Солнца
Фантастика:
боевая фантастика
постапокалипсис
5.00
рейтинг книги
Дорогой Солнца

Затерянные земли или Великий Поход

Михайлов Дем Алексеевич
8. Господство клана Неспящих
Фантастика:
фэнтези
рпг
7.89
рейтинг книги
Затерянные земли или Великий Поход

Гарем на шагоходе. Том 1

Гремлинов Гриша
1. Волк и его волчицы
Фантастика:
боевая фантастика
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Гарем на шагоходе. Том 1

Хозяйка расцветающего поместья

Шнейдер Наталья
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Хозяйка расцветающего поместья

Инвестиго, из медика в маги. Том 6. Финал

Рэд Илья
6. Инвестиго
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Инвестиго, из медика в маги. Том 6. Финал

Третий

INDIGO
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий

Наследник павшего дома. Том III

Вайс Александр
3. Расколотый мир
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том III

Мужчина не моей мечты

Ардова Алиса
1. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.30
рейтинг книги
Мужчина не моей мечты

Хроники сыска (сборник)

Свечин Николай
3. Сыщик Его Величества
Детективы:
исторические детективы
8.85
рейтинг книги
Хроники сыска (сборник)

Обгоняя время

Иванов Дмитрий
13. Девяностые
Фантастика:
попаданцы
5.00
рейтинг книги
Обгоняя время

Повелитель механического легиона. Том III

Лисицин Евгений
3. Повелитель механического легиона
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Повелитель механического легиона. Том III

Ну привет, заучка...

Зайцева Мария
Любовные романы:
эро литература
короткие любовные романы
8.30
рейтинг книги
Ну привет, заучка...

Развод, который ты запомнишь

Рид Тала
1. Развод
Любовные романы:
остросюжетные любовные романы
короткие любовные романы
5.00
рейтинг книги
Развод, который ты запомнишь

Санек 3

Седой Василий
3. Санек
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Санек 3