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

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

Жанры

Холзнер Стивен

Шрифт:

<xsl:variable name="movie" select="'Mr. Blandings Builds His Dream House'"/>

<!-- здесь $movie = "Mr Blandings Builds His Dream House'-->

<xsl:template match="entertainment">

 <!-- здесь $movie = 'Mr. Blandings Builds His Dream House'-->

 .

 .

 .

Однако если вы объявите локальную переменную movie,

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

<xsl:variable name="movie" select="'Mr. Blandings Builds His Dream House'">

<!-- здесь $movie = 'Mr. Blandings Builds His Dream House'-->

<xsl:template match="entertainment">

 <!-- здесь $movie = Mr. Blandings Builds His Dream House"-->

 <xsl:variable name="movie" select="'Goldfinger'"/>

 <!-- здесь $movie = 'Goldfinger'-->

 .

 .

 .

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

<xsl:variable name="movie" select="'Mr. Blandings Builds His Dream House'"/>

<!-- здесь $movie = Mr. Blandings Builds His Dream House"-->

<xsl:template match="entertainment">

 <!-- здесь $movie = 'Mr. Blandings Builds His Dream House"-->

 <xsl:variable name="movie" select="'Goldfinger'"/>

 <!-- здесь $movie = 'Goldfinger'-->

 <xsl:variable name="movie" select="'Withnail and I'"/><!-- Запрещено -->

 .

 .

 .

За пределами шаблона локальная переменная невидима, и

movie
содержит глобальное значение:

<xsl:variable name="movie" select="'Mr. Blandings Builds His Dream House'"/>

<!-- здесь $movie = 'Mr Bindings Builds His Dream House' -->

<xsl:template match="entertainment">

 <!-- здесь $movie = 'Mr. Blandings Builds His Dream House'-->

 <xsl:variable name="movie" select="'Goldfinger'"/>

 <!-- здесь $movie = 'Goldfinger'-->

 <xsl:variable name="movie" select="'Withnail and I'"/><!-- Запрещено -->

</xsl:template>

<!-- здесь $movie = 'Mr. Blandings Builds His Dream House'-->

.

.

.

Глобальные

переменные тоже нельзя объявлять повторно:

<xsl:variable name="movie" select="'Mr. Blandings Builds His Dream House'"/>

<!-- здесь $movie = 'Mr. Blandings Builds His Dream House'-->

<xsl:template match="entertainment">

 <!-- здесь $movie = 'Mr. Blandings Builds His Dream House"-->

 <xsl:variable name="movie" select="'Goldfinger'"/>

 <!-- здесь $movie = 'Goldfinger'-->

 <xsl:variable name="movie" select="'Withnail and I'"/><!-- Запрещено -->

</xsl:template>

<!-- здесь $movie = 'Mr. Blandings Builds His Dream House'-->

<xsl:variable name="movie" select="'Goldfinger'"/><!-- Запрещено -->
 

Несмотря на все эти ограничения, вы можете менять значение переменной на каждом шаге цикла

<xsl:for-each>
, как мы увидим в следующем разделе.

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

Давайте рассмотрим примеры применения переменных. В следующем примере (листинг 9.1) я присваиваю переменной

copyright
сообщение об авторских правах и затем с ее помощью добавляю атрибут
copyright
во все элементы
planets.xml
.

Листинг 9.1. Применение переменной

<?xml version="1.0"?>

<xsl:stylesheet version="1.1"

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

 <xsl:output method="xml"/>

 <xsl:variable name="copyright" select="'(c)2002 Starpowder Inc.'"/>

 <xsl:template match="*">

<xsl:copy>

<xsl:attribute name="copyright">

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

</xsl:attribute>

<xsl:apply-templates/>

</xsl:copy>

 </xsl:template>

</xsl:stylesheet>

Вот результирующий документ, дополненный атрибутами copyright

<?xml version="1.0" encoding="utf-8"?>

<PLANETS copyright="(c)2002 Starpowder Inc.">

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

Сержант. Назад в СССР. Книга 4

Гаусс Максим
4. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сержант. Назад в СССР. Книга 4

Ермак. Регент

Валериев Игорь
10. Ермак
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Ермак. Регент

Я уже князь. Книга XIX

Дрейк Сириус
19. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я уже князь. Книга XIX

Инженер Петра Великого 2

Гросов Виктор
2. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Инженер Петра Великого 2

Последний Паладин. Том 14

Саваровский Роман
14. Путь Паладина
Фантастика:
аниме
фэнтези
попаданцы
5.75
рейтинг книги
Последний Паладин. Том 14

Дракон

Бубела Олег Николаевич
5. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.31
рейтинг книги
Дракон

Туполев

Бодрихин Николай Георгиевич
1327. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Туполев

Печать мастера

Лисина Александра
6. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
фэнтези
6.00
рейтинг книги
Печать мастера

Третий Генерал: Том V

Зот Бакалавр
4. Третий Генерал
Фантастика:
городское фэнтези
аниме
сказочная фантастика
попаданцы
5.00
рейтинг книги
Третий Генерал: Том V

Ваше Сиятельство 7

Моури Эрли
7. Ваше Сиятельство
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Ваше Сиятельство 7

Я царь. Книга XXVIII

Дрейк Сириус
28. Дорогой барон!
Фантастика:
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Я царь. Книга XXVIII

Девочка из прошлого

Тоцка Тала
3. Айдаровы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Девочка из прошлого

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4

Бастард Императора. Том 15

Орлов Андрей Юрьевич
15. Бастард Императора
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Бастард Императора. Том 15