Элемент <xsl:variable>

Задает значение, привязанное к выражению.

<xsl:variable
  name = QName
  select = Expression
</xsl:variable>

Атрибуты

  • name
    Обязательный.Значение Полные имена переменной.

  • select
    Значение атрибута равно Выражения (XML), а значение переменной равно объекту, получаемому при вычислении выражения.При указании этого атрибута содержимое <xsl:variable> должно быть пустым.

Сведения об элементе

Количество вхождений

Без ограничений

Родительские элементы

xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:for-each, xsl:if, xsl:otherwise, xsl:param, xsl:processing-instruction, xsl:stylesheetxsl:template, xsl:variable, xsl:when, xsl:with-param, элементы вывода

Дочерние элементы

xsl:apply-templates, xsl:attribute, xsl:call-template, xsl:choose, xsl:comment, xsl:copy, xsl:copy-of, xsl:element, xsl:for-each, xsl:if, xsl:processing-instruction, xsl:text, xsl:value-of, xsl:variable, элементы вывода

Замечания

Значение переменной может быть объектом любого типа, который может быть возвращен выражением.Элемент <xsl:variable> может определять значение переменной тремя нижеперечисленными альтернативными способами.

  • Если элемент имеет атрибут select, значение атрибута должно быть выражением, а значение переменной является объектом, который представляет собой результат оценки этого выражения.В этом случае содержимое элемента должно быть пустым.

  • Если элемент не имеет атрибута select, а его содержимое непустое, например имеется несколько дочерних узлов, содержимое и определяет значение.Содержимое представляет собой шаблон, который создается для определения значения переменной.Значение представляет собой фрагмент результирующего дерева, эквивалентный набору узлов, содержащему единственный корневой узел, последовательность дочерних узлов которого порождена в соответствии с шаблоном.Базовый идентификатор URI узлов в фрагменте результирующего дерева является базовым идентификатором URI привязывающегося к переменной элемента.

    Если член последовательности узлов, созданных в соответствии с шаблоном, является атрибутом или пространством имен, возникает ошибка, поскольку корневой узел не может содержать в качестве дочерних узлов атрибуты и пространства имен.

  • Если содержимое пустое и не имеет атрибута select, значение переменной представляет собой пустую строку.Так,

    <xsl:variable name="x"/>
    

    эквивалентно

    <xsl:variable name="x" select="''"/>
    

    При использовании переменной для выбора узлов по позиции необходимо проявлять осторожность и не выполнять следующих действий.

    <xsl:variable name="n">2</xsl:variable>
    ...
    <xsl:value-of select="item[$n]"/>
    

    При этом будет выведено значение первого элемента, поскольку переменная n будет связана с фрагментом результирующего дерева, а не числом.Вместо этого необходимо сделать или это:

    <xsl:variable name="n" select="2"/>
    ...
    <xsl:value-of select="item[$n]"/>
    

    ...или это:

    <xsl:variable name="n">2</xsl:variable>
    ...
    <xsl:value-of select="item[number($n)]"/>
    

См. также

Справочник

Элемент <xsl:param>