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

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

Жанры

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

Шрифт:

<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

Пышка (сборник)

Де Мопассан Ги
Проза:
классическая проза
8.45
рейтинг книги
Пышка (сборник)

Форма жизни

Драу Михаэль
Фантастика:
боевая фантастика
киберпанк
7.62
рейтинг книги
Форма жизни

Закрытые Миры

Муравьёв Константин Николаевич
Вселенная EVE Online
Фантастика:
фэнтези
5.86
рейтинг книги
Закрытые Миры

Эмиссар

Листратов Валерий
8. Ушедший Род
Фантастика:
боевая фантастика
аниме
попаданцы
7.50
рейтинг книги
Эмиссар

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Тринадцатый VI

NikL
6. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый VI

Наследие Маозари 6

Панежин Евгений
6. Наследие Маозари
Фантастика:
попаданцы
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.50
рейтинг книги
Наследие Маозари 6

Я еще граф. Книга #8

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

Развод в 45. От любви до ненависти

Гофман Крис
6. Развод
Любовные романы:
остросюжетные любовные романы
5.40
рейтинг книги
Развод в 45. От любви до ненависти

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

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

Контрольный поцелуй

Донцова Дарья
8. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
9.15
рейтинг книги
Контрольный поцелуй

Неучтенный элемент. Том 10

NikL
10. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 10

Полонянин

Гончаров Олег
2. Ночь Сварога
Приключения:
исторические приключения
8.30
рейтинг книги
Полонянин