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

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

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

Атрибуты

  • name
    Обязательный.Имя создаваемого атрибута.Если это значение является полным именем (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".

XSLT-файл

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

Output

<IMG src=" imagenames/imagename"/>

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

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

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

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

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

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

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