Join MDN and developers like you at Mozilla's View Source conference, November 2-4 in Portland, Oregon. Learn more at


There are two types of elements discussed here: top-level elements and instructions. A top-level element must appear as the child of either <xsl:stylesheet> or <xsl:transform>. An instruction, on the other hand, is associated with a template. A stylesheet may include several templates. A third type of element, not discussed here, is the literal result element (LRE). An LRE also appears in a template. It consists of any non-instruction element that should be copied as-is to the result document, for example, an <hr> element in an HTML conversion stylesheet.

On a related note, any attribute in an LRE and some attributes of a limited number of XSLT elements can also include what is known as an attribute value template. An attribute value template is simply a string that includes an embedded XPath expression which is used to specify the value of an attribute. At run-time the expression is evaluated and the result of the evaluation is substituted for the XPath expression. For example, assume that a variable "image-dir" is defined as follows:

<xsl:variable name="image-dir">/images</xsl:variable>

The expression to be evaluated is placed inside curly brackets:

<img src="{$image-dir}/mygraphic.jpg"/>

This would result in the following:

<img src="/images/mygraphic.jpg"/>

The element annotations that follow include a description, a syntax listing, a list of required and optional attributes, a description of type and position, its source in the W3C Recommendation and an explanation of the degree of present Gecko support.

Document Tags and Contributors

Contributors to this page: Sheppy, Bogdan, Tomascejka, Fredchat, Mgjbot, Ptak82, Nickolay, CitizenK, Dria
Last updated by: Sheppy,