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

Создает узел атрибута и присоединяет его к элементу вывода.

<xsl:attribute
  name = "attribute-name"  
  namespace = "uri-reference">
</xsl:attribute>

Атрибуты

  • имя
    Обязательный. Имя создаваемого атрибута. Если это значение является полным именем (QName), узел атрибута создается в пространстве имен, привязанном в данный момент к префиксу, если это пространство не будет переопределено атрибутом namespace. Значение атрибута name интерпретируется как шаблон значения атрибута (выражения в фигурных скобках оцениваются и преобразуются в строки, как в элементе <xsl:value-of>). Благодаря этому имя атрибута можно вычислить или получить из исходного XML-документа.

  • namespace
    URI пространства имен для создаваемого узла. Если атрибут name содержит имя QName, то указанный там префикс будет привязан к пространству имен, заданному атрибутом namespace. В результате при сериализации могут возникнуть дополнительные объявления пространств имен. Это значение интерпретируется как шаблон значения атрибута.

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

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

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

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

xsl:copy, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:template, xsl:variable, xsl:when, xsl:with-param

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

xsl:apply-imports, xsl:apply-templates, xsl:call-template, xsl:choose, xsl:copy, xsl:copy-of, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:number, xsl:text, xsl:value-of, xsl:variable

Заметки

Содержимое этого элемента указывает значение атрибута.

Во время преобразования можно добавлять или изменять атрибуты, вставляя элемент <xsl:attribute> в элементы, формирующие вывод, например, в элемент <xsl:copy>. Обратите внимание, что элемент <xsl:attribute> можно использовать с выходными элементами напрямую, а не только с элементом <xsl:element>.

Все атрибуты должны быть применены до того, как к элементу будут добавлены дочерние элементы.

Примеры

В этом коротком примере создается атрибут, получающий значение из исходного XML-документа. Он формирует вывод в форме <IMG src="value-from-XML-source"/> с помощью выражения XPath, получающего данные из исходного XML-документа - в данном случае "imagenames/imagename".

ms256165.collapse_all(ru-ru,VS.120).gifXSLT-файл

<IMG>
  <xsl:attribute name="src">
    <xsl:value-of select="imagenames/imagename" />
  </xsl:attribute>
</IMG>

ms256165.collapse_all(ru-ru,VS.120).gifВывод

<IMG src=" imagenames/imagename"/>

Элемент <xsl:attribute> может быть очень полезен для динамического создания атрибутов вывода, неизвестных до преобразования документа, но если атрибуты уже известны, можно его не использовать. В предыдущем примере вы уже могли знать, что элемент IMG должен содержать атрибут src. Если это требование известно до преобразования документа, элемент <xsl:attribute> можно не использовать. Можно было упростить синтаксис преобразования и получить тот же результат следующим образом.

<IMG src="{imagenames/imagename}"/>

Используя элемент <xsl:attribute> вместо шаблонов значений атрибутов, можно делать следующее.

  • Вычислить имя атрибута.

  • Использовать условные инструкции, шаблоны и наборы атрибутов вместе с созданием атрибута.

  • Добавить атрибуты в элемент, созданный элементом <xsl:copy> или <xsl:element>.

Этот раздел включает также следующие полные примеры.