Элемент <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".
XSLT-файл
<IMG>
<xsl:attribute name="src">
<xsl:value-of select="imagenames/imagename" />
</xsl:attribute>
</IMG>
Вывод
<IMG src=" imagenames/imagename"/>
Элемент <xsl:attribute> может быть очень полезен для динамического создания атрибутов вывода, неизвестных до преобразования документа, но если атрибуты уже известны, можно его не использовать. В предыдущем примере вы уже могли знать, что элемент IMG должен содержать атрибут src. Если это требование известно до преобразования документа, элемент <xsl:attribute> можно не использовать. Можно было упростить синтаксис преобразования и получить тот же результат следующим образом.
<IMG src="{imagenames/imagename}"/>
Используя элемент <xsl:attribute> вместо шаблонов значений атрибутов, можно делать следующее.
Вычислить имя атрибута.
Использовать условные инструкции, шаблоны и наборы атрибутов вместе с созданием атрибута.
Добавить атрибуты в элемент, созданный элементом <xsl:copy> или <xsl:element>.
Этот раздел включает также следующие полные примеры.