Глава 9 Именованные шаблоны, параметры и переменные
Глава 9
Именованные шаблоны, параметры и переменные
В этой главе рассматривается ряд специальных возможностей XSLT, а именно шаблоны, параметры таблиц стилей и переменные. Все эти темы связаны друг с другом: параметры используются в именованных шаблонах, а переменные и параметры — это практически одно и то же, они различаются только способом создания.
Если задать шаблону имя, его можно вызывать по этому имени при помощи элемента <xsl:call-template>. Шаблон применяется при вызове, поэтому вместо того чтобы полагаться на обработку таблицы стилей, принятую в процессоре XSLT по умолчанию, вы можете явно задать, когда и какой шаблон нужно применять. Например, несколько шаблонов могут выбирать один и тот же набор узлов, и вам нужно выбрать из них один или несколько шаблонов, которые будут применены. Именованные шаблоны похожи на режимы, но дают вам больше возможностей управления.
При вызове шаблона можно настроить его работу при помощи параметров. Например, вам может понадобиться, чтобы текст в создаваемых шаблоном текстовых узлах был на определенном языке — таком как английский, немецкий или французский — и вы можете создать новый параметр с именем language (язык). При вызове именованного шаблона, заданного для обработки этого параметра, вы можете установить язык в «en», «de» или «fr» и затем вызвать шаблон при помощи элемента <xsl:with-param>. В самом именованном шаблоне используемый им параметр language объявляется при помощи элемента <xsl:param>. После объявления параметра к его значению можно свободно обращаться как $language и использовать его в выражениях XPath. В этой главе мы рассмотрим многочисленные примеры работы с параметрами.
Переменные во многом похожи на параметры, с тем лишь отличием, что они по-другому создаются. Параметры, как правило, используются в именованных шаблонах, в то время как переменные применяются более широко, в выражениях XPath любого вида. Как и в языках программирования, в переменных XSLT можно хранить значения и обращаться к ним позже. Но есть одна важная особенность: за исключением особых обстоятельств, вы не можете изменять значение, хранимое в переменной. (В связи с этим некоторые авторы, пишущие об XSLT, считают неправильным называть их переменными.)
Переменные удобны для хранения значений, создание которых занимает длительное время, но в таблице стилей они часто используются. Вместо того, чтобы каждый раз заново создавать эти значения, сохраните их в переменной и ссылайтесь на ее значение. Как и в случае с параметрами, для получения значения переменной добавьте префикс «$». Например, для переменной с именем sandwich получить ее значение можно при помощи $sandwich. Как и в параметрах, в переменных можно хранить данные всех четырех типов данных XPath. Переменные также имеет смысл применять для хранения значений, которые позже в шаблоне будут изменены. Например, «.» обычно ссылается на контекстный узел шаблона, но внутри элемента <xsl:for-each> «.» ссылается на текущий обрабатываемый в элементе узел, а не на контекстный узел всего шаблона. Для того чтобы обратиться к контекстному узлу, перед входом в цикл <xsl:for-each> сохраните его в переменной contextnode и затем в теле цикла используйте это значение как $contextnode.
Кроме четырех типов данных XPath мы также будем использовать тип данных, поддерживаемый в XSLT 1.0, но не в XSLT 1.1 — фрагменты результирующего дерева, которые создаются элементами <xsl:variable> или <xsl:with-param>. Фрагменты результирующего дерева могут быть удобны в определенных случаях, как вы увидите далее в этой главе.
Наконец, в этой главе мы также рассмотрим элемент <xsl:key>. Впервые он нам встретился в главе 4, теперь мы изучим его более подробно.
Для введения вполне достаточно; давайте перейдем к работе, и начнем мы с переменных.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Глава 2 Аргументы, опции и переменные окружения
Глава 2 Аргументы, опции и переменные окружения Первой задачей любой программы обычно является интерпретация опций и аргументов командной строки. Данная глава рассматривает, как программы С (и С++) получают аргументы своей командной строки, описывает стандартные
Именованные каналы
Именованные каналы Именованные каналы (named pipes) предлагают ряд возможностей, которые делают их полезными в качестве универсального механизма реализации приложений на основе IPC, включая приложения, требующие сетевого доступа к файлам, и клиент-серверные системы[31], хотя
Функции и переменные. Локальные переменные
Функции и переменные. Локальные переменные Объявленные ранее функции создают внутри своего тела собственные переменные. Это так называемые локальные переменные. Такие переменные доступны только внутри тела функции, в котором они объявлены. При завершении выполнения
Функции и переменные. Локальные переменные
Функции и переменные. Локальные переменные Объявленные ранее функции создают внутри своего тела собственные переменные. Это так называемые локальные переменные. Такие переменные доступны только внутри тела функции, в котором они объявлены. При завершении выполнения
5.6. Параметры и переменные. Окружение оболочки
5.6. Параметры и переменные. Окружение оболочки Понятие параметра в оболочке bash подобно понятию переменной в обычных языках программирования. Именем (или идентификатором) параметра может быть слово, состоящее из алфавитных символов, цифр и знаков подчеркивания (только
ГЛАВА 4 Именованные и неименованные каналы
ГЛАВА 4 Именованные и неименованные каналы 4.1. Введение Неименованные каналы — это самая первая форма IPC в Unix, появившаяся еще в 1973 году в третьей версии (Third Edition [17]). Несмотря на полезность во многих случаях, главным недостатком неименованных каналов является отсутствие
ГЛАВА 7 Взаимные исключения и условные переменные
ГЛАВА 7 Взаимные исключения и условные переменные 7.1. Введение Эта глава начинается с обсуждения синхронизации — принципов синхронизации действий нескольких программных потоков или процессов. Обычно это требуется для предоставления нескольким потокам или процессам
Глава 7 Шаблоны и обобщенное программирование
Глава 7 Шаблоны и обобщенное программирование Изначально шаблоны в C++ появились для того, чтобы можно было реализовать безопасные относительно типов контейнеры: vector, list, map и им подобные. Однако по мере обретения опыта работы с шаблонами стали обнаруживаться все новые и
Именованные каналы
Именованные каналы Firebird поддерживает протокол Мiсrоsоft WNet Named Pipes для серверов Windows NT/2000, XP и клиентов Windows. Имя канала по умолчанию interbas. Windows 9х и ME не Moryт быть серверами WNet.! ! !ПРИМЕЧАНИЕ. Протокол Windows Named Pipes (именованные каналы) часто называют NetBEUI. Строго говоря, NetBEUI является
Именованные ограничения
Именованные ограничения При объявлении ограничения на уровне таблицы или на уровне столбца вы можете именовать ограничение, используя предложение CONSTRAINT. Если вы опустите предложение CONSTRAINT, Firebird сгенерирует уникальное системное имя ограничения. Ограничения хранятся в
Именованные виды
Именованные виды С целью последующего использования виды можно сохранять под уникальными именами. Допускается сохранение видового экрана целиком или только какой-либо его части. Виды пространства модели и пространства листа сохраняются отдельно. Если использовано
Глава 4. Переменные и параметры. Введение.
Глава 4. Переменные и параметры. Введение. Переменные -- это одна из основ любого языка программирования. Они учавствуют в арифметических операциях, в синтаксическом анализе строк и совершенно необходимы для абстрагирования каких либо величин с помощью символических
Именованные шаблоны
Именованные шаблоны Вместо того чтобы при помощи атрибута match указывать, какая часть входящего документа должна преобразовываться данным шаблоном, ему можно присвоить имя и вызывать в любой момент вне зависимости от контекста преобразования. Такие шаблоны очень схожи
Переменные и параметры
Переменные и параметры Было бы слишком просто и слишком бесполезно лишь констатировать, что переменные и параметры в XSLT похожи между собой и сильно отличаются от переменных в других языках программирования. Мы попытаемся разобраться в этом вопросе несколько глубже —
Глава 4. Четыре переменные
Глава 4. Четыре переменные В наших проектах мы пытаемся контролировать четыре переменные – затраты, время, качество и объем работ. Из всех этих переменных наиболее удобной для контроля является объем работ.В данной главе я расскажу вам о модели разработки программного