Allows you to define an alias for a namespace when using the namespace directly would complicate processing. This seldom-used element is the simplest way to write a stylesheet that generates another stylesheet.


Top-level element.

Required Attributes


Defines the prefix for the namespace referred to by the alias. This prefix must be declared in the stylesheet, regardless of whether any elements in the stylesheet use it.


Defines the prefix used in the stylesheet to refer to the namespace.

[2.0] In XSLT 2.0, you can use the value #default for either the result-prefix or stylesheet-prefix attributes. As you would expect, it is an error if there is no default namespace. (A default namespace is defined with xmlns=.)

Optional Attributes



None. <xsl:namespace-alias> is an empty element.

Appears in

<xsl:namespace-alias> is a top-level element and can appear only as a child of <xsl:stylesheet>.

Defined in

[1.0] XSLT section 7.1.1, “Literal Result Elements.”

[2.0] XSLT section 11.1.4, “Namespace Aliasing.”


As we mentioned before, this element is normally used to create an XSLT stylesheet that generates another stylesheet. Use <xsl:namespace-alias> when you want the output to contain an element or attribute that would normally be handled by the XSLT processor.

Our sample here creates a stylesheet that generates another stylesheet that copies any input document to the output. Here’s our original stylesheet that uses <xsl:namespace-alias> ...

Get XSLT, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.