Элемент <xsl:element>
Создает выходной элемент с указанным именем.
<xsl:element
name = "element-name"
namespace = "uri-reference"
use-attribute-sets = QName
</xsl:element>
Атрибуты
имя
Обязательный. Имя создаваемого элемента. Если это значение является именем Полные имена (XSLT), то узел элемента создается в пространстве имен, которое в данный момент связано с этим префиксом, если иное не определено атрибутом namespace. Значение атрибута name интерпретируется как шаблон значения атрибута, иными словами, выражения в фигурных скобках вычисляются и преобразуются в строки, как в элементе <xsl:value-of>. Это позволяет вычислить или получить из исходного кода XML имя элемента.namespace
URI пространства имен созданного элемента. Если атрибут name содержит имя QName, то указанный там префикс будет привязан к пространству имен, заданному атрибутом namespace. В этом случае при сериализации, возможно, потребуется объявлять дополнтельные пространства имен. Значение namespace интерпретируется как шаблон значения атрибута.use-attribute-sets
Разделенный пробелами список наборов атрибутов, заданный как Полные имена (XSLT). Указание этого атрибута объявляет каждый атрибут в каждом перечисленном наборе атрибутов.
Сведения об элементе
Количество вхождений |
Без ограничений |
Родительские элементы |
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-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:element> позволяет присвоить создаваемому элементу вычисленное имя. Имя создаваемого элемента задается обязательным атрибутом name и необязательным атрибутом namespace. Содержимое элемента <xsl:element> является шаблоном для атрибутов и дочерних элементов создаваемого элемента.
Этот элемент обеспечивает создание элементов с конфликтом пространств имен, каковым является, например, само преобразование XSLT.
Пример
Элемент <xsl:element> обязателен, поскольку элементы XSLT нельзя использовать в качестве выходных элементов. В данном примере показано, как вывести элемент <xsl:template>.
XML-файл (item.xml)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="element.xsl" ?>
<root>
<item>My Item</item>
</root>
XSLT-файл (element.xslt)
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="item">
<xsl:element name="xsl:template">
<xsl:attribute name="match">cost</xsl:attribute>
<xsl:attribute name="xml:space">preserve</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Вывод
Далее приведен форматированный вывод.
My Item
Далее приведен вывод обработчика. Переводы строк добавлены для наглядности.
<?xml version="1.0"?>
<xsl:template match="cost"
xml:space="preserve"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
My Item</xsl:template>