Вход/Регистрация
Технология XSLT
вернуться

Валиков Алексей Н.

Шрифт:

<xsl:variable name="переменная 1"

 select="(значение 1 and условие1) or (значение2 and not(условие2))"/>

Для множества узлов можно использовать предикаты и операции над множествами:

<xsl:variable name="переменная1"

 select="значение1[условие1] | значение2[not(условие2)]"/>

Заметим, что шаблон, содержащийся в элементе

xsl:variable
, может включать в себя такие элементы, как
xsl:call-template
,
xsl:apply-templates
и так далее. То есть переменной можно присвоить результат выполнения одного или нескольких шаблонов.

Использование внешних документов в преобразовании, как правило, сопровождается громоздкими выражениями вида:

document('http://www.xmlhost.com/docs/а.xml')/page/request/param

и так далее.

Для того чтобы при обращении к внешнему документу не использовать каждый раз функцию

document
, можно объявить переменную, которая будет содержать корневой узел этого документа, например:

<xsl:variable

 name="a.xml"

 select="document('http://www.xmlhost.com/docs/a.xml')"/>

После этого к документу

http://www.xmlhost.com/docs/a.xml
можно обращаться посредством переменной с именем
a.xml
, например:

<xsl:value-of select="$a.xml/page/request/param"/>

Параметры

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

До сих пор мы говорили о шаблонах, как о правилах, часто используя эти слова как синонимы. Попробуем теперь немного сменить угол зрения и представить их как функции, каждая из которых преобразует некоторый узел и возвращает фрагмент дерева в качестве результата. С этой точки зрения параметры шаблонов являются ни чем иным, как аргументами этих функций.

Работа с параметрами обеспечивается двумя элементами —

xsl:param
, который объявляет в шаблоне новый параметр и
xsl:with-param
, который указывает значение параметра при вызове шаблона.

Элемент xsl:param

Синтаксически этот элемент задается как:

<xsl:param

 name="имя"

 select="выражение">

 <!-- Содержимое: шаблон -->

</xsl:param>

Элемент

xsl:template
, задающий в преобразовании шаблонное правило, может включать несколько элементов
xsl:param
, которые и будут определять параметры этого шаблона. Кроме этого,
xsl:param
может указываться в виде элемента верхнего уровня — в этом случае он будет определять глобальный параметр.

Элемент

xsl:param
объявляет параметр с именем, которое задается обязательным атрибутом
name
. Имя параметра может иметь расширенную форму, например
"user:param"
, но чтобы не возиться с пространствами имен, на практике имена всегда дают простые — типа
"i"
или
"myParam"
.

Параметру может быть присвоено значение по умолчанию — то есть значение, которое будет использоваться в случае, если параметра с таким именем шаблону передано не было. Значение по умолчанию вычисляется следующим образом:

□ если в элементе

xsl:param
определен атрибут
select
, то значением по умолчанию будет результат вычисления выражения, указанного в этом атрибуте;

□ если атрибут

select
не определен, но сам элемент
xsl:param
имеет дочерние узлы, то значением определяемого параметра по умолчанию будет фрагмент дерева, полученного в результате выполнения содержимого
xsl:param
;

□ если атрибут

select
не определен и при этом сам элемент
xsl:param
пуст, то значением параметра по умолчанию будет пустая строка.

Примеры

Элемент

<xsl:param name="x" select="2 * 2"/>

создаст параметр, значением которого по умолчанию будет

4
. Точно такой же эффект будет иметь элемент

<xsl:param name="x" select="2 * 2">

 <xsl:value-of select="5 * 5/>

  • Читать дальше
  • 1
  • ...
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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