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

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

Жанры

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

Шрифт:

<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.">

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

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

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

Последняя Арена 6

Греков Сергей
6. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 6

По воле короля

Леви Кира
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
По воле короля

Душелов. Том 4

Faded Emory
4. Внутренние демоны
Фантастика:
юмористическая фантастика
ранобэ
фэнтези
фантастика: прочее
хентай
эпическая фантастика
5.00
рейтинг книги
Душелов. Том 4

Темный Лекарь 2

Токсик Саша
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 2

Эволюция мага

Лисина Александра
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эволюция мага

(Не) моя ДНК

Рымарь Диана
6. Сапфировые истории
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
(Не) моя ДНК

Протокол "Наследник"

Лисина Александра
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Протокол Наследник

Измена. Наследник для дракона

Солт Елена
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Измена. Наследник для дракона

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

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

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Измена. Право на сына

Арская Арина
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на сына

Инквизитор Тьмы 4

Шмаков Алексей Семенович
4. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 4

Кротовский, сколько можно?

Парсиев Дмитрий
5. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кротовский, сколько можно?