XSLT
Шрифт:
<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
рейтинг книги
Последняя Арена 6
6. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
По воле короля
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Душелов. Том 4
4. Внутренние демоны
Фантастика:
юмористическая фантастика
ранобэ
фэнтези
фантастика: прочее
хентай
эпическая фантастика
5.00
рейтинг книги
Темный Лекарь 2
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Эволюция мага
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
(Не) моя ДНК
6. Сапфировые истории
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Протокол "Наследник"
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Измена. Наследник для дракона
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Неудержимый. Книга II
2. Неудержимый
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Камень. Книга 4
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Измена. Право на сына
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Инквизитор Тьмы 4
4. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Кротовский, сколько можно?
5. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
5.00