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

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

Жанры

Технология XSLT

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

Шрифт:

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

 <xsl:include href="#"/>

 <xsl:template match="/">

<content>

<xsl:text>Today is </xsl:text>

<xsl:value-of select="$date"/>

<xsl:text>.</xsl:text>

</content>

 </xsl:template>

</xsl:stylesheet>

Включение

в преобразование
b.xsl
преобразования
a.xsl
эквивалентно замене в
b.xsl
соответствующего элемента
xsl:include
на содержимое преобразования
a.xsl
. В нашем случае будет включено только определение переменной
date
. Преобразование
b.xsl
можно переписать в следующем виде: .

<xsl:stylesheet

 version="1.0"

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

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

 <xsl:template match="/">

<content>

<xsl:text>Today is </xsl:text>

<xsl:value-of select="$date"/>

<xsl:text>.</xsl:text>

</content>

 </xsl:template>

</xsl:stylesheet>

При включении внешних преобразований при помощи

xsl:include
следует учитывать некоторые особенности использования этого элемента.

Все ссылки и относительные идентификаторы ресурсов (URI), используемые во включаемом преобразовании, вычисляются относительно его базового адреса.

Пример

Предположим, что URI нашего преобразования имеет вид:

http://www.xsltdev.ru/examples/a.xsl

В этом случае элемент

<xsl:include href="#"/>

будет включать преобразование с URI

http://www.xsltdev.ru/examples/b.xsl

Нет никаких проблем и с включением преобразований по абсолютным идентификаторам. Например, если преобразование

identity.xsl
находится по адресу

http://www.xsltdev.ru/stylesheets/identity.xsl

то включить его можно элементом

<xsl:include href="#"/>

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

В XSLT элементы

xsl:import
всегда должны быть первыми дочерними элементами головного элемента
xsl:stylesheet
. Поэтому элементы
xsl:import
внешнего преобразования включаются сразу после элементов
xsl:import
основного преобразования. Если в основном преобразовании элементов
xsl:import
нет, то включаемые элементы
xsl:import
становятся первыми дочерними элементами
xsl:stylesheet
основного преобразования.

Пример

Предположим, что в основное преобразование мы импортируем файл

a.xsl
и включаем файл
b.xsl
.

Листинг 4.8. Основное преобразование

<xsl:stylesheet

 version="1.0"

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

 <xsl:import href="#"/>

 <xsl:variable name="a"/>

 <xsl:include href="#"/>

 <!-- Содержимое основного преобразования -->

</xsl:stylesheet>

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

<xsl:stylesheet

 version="1.0"

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

 <xsl:import href="#"/>

 <!-- Содержимое преобразования b.xsl -->

</xsl:stylesheet>

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

Листинг 4.10. Основное преобразование после включения b.xsl

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="#"/>

 <xsl: import href=f"c.xsl"/>

 <xsl:variable name="a"/>

 <!-- Содержимое преобразования b.xsl -->

 <!-- Содержимое основного преобразования -->

</xsl:stylesheet>

Элемент

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

Пример

Предположим, что мы используем преобразование упрощенного синтаксиса

simple.xsl
.

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

<html xsl:version="1.0"

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

 <xsl:apply-templates/>

</html>

Включим

simple.xsl
в основное преобразование.

Листинг 4.12. Основное преобразование

<xsl:stylesheet

 version="1.0"

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

 <xsl:include href="#"/>

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

Граф

Ланцов Михаил Алексеевич
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Граф

Идеальный мир для Лекаря 27

Сапфир Олег
27. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 27

Начальник милиции. Книга 3

Дамиров Рафаэль
3. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 3

Его маленькая большая женщина

Резник Юлия
Любовные романы:
современные любовные романы
эро литература
8.78
рейтинг книги
Его маленькая большая женщина

Адаптация

Уленгов Юрий
2. Гардемарин ее величества
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Адаптация

Идеальный мир для Лекаря 28

Сапфир Олег
28. Лекарь
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 28

Курсант: назад в СССР 9

Дамиров Рафаэль
9. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: назад в СССР 9

Газлайтер. Том 15

Володин Григорий Григорьевич
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Газлайтер. Том 15

Кодекс Охотника. Книга IX

Винокуров Юрий
9. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга IX

Клан

Русич Антон
2. Долгий путь домой
Фантастика:
боевая фантастика
космическая фантастика
5.60
рейтинг книги
Клан

Купец V ранга

Вяч Павел
5. Купец
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Купец V ранга

Неудержимый. Книга XX

Боярский Андрей
20. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XX

Студиозус

Шмаков Алексей Семенович
3. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Студиозус

Черный дембель. Часть 2

Федин Андрей Анатольевич
2. Черный дембель
Фантастика:
попаданцы
альтернативная история
4.25
рейтинг книги
Черный дембель. Часть 2