Next / Previous / Contents / Shipman's homepage

9.3. xsl:element: Output an element

In most cases it's pretty easy to output an element, say something like a fruit-basket tag: you just put that tag in your template, and it gets written.

However, sometimes you need to create an element whose name has to be computed using an XPath expression. The xsl:element tag allows you to do this. Here are the attributes:

name (required)

Specifies the name of the element you are creating.

namespace

If you want the element to be from a specific namespace, supply this attribute with the namespace as its value.

use-attribute-sets

The name(s) of one or more attribute sets that this element should carry. If there are multiple attribute sets, their names should be separated by spaces.

The content of the xsl:element element in your stylesheet, after processing, becomes the content of the generated tag.

Here are some examples. Suppose that XSLT is processing a template that matches river elements that have a salinity attribute. You want to generate an element whose name is the same as the name of that attribute. You want the content of the generated element to be the value of the node's flow-rate attribute. This would do the trick:

    <xsl:element name="@salinity">
      <xsl:value-of select="@flow-rate"/>
    </xsl:element>