XSL reference documentation generated from the W3C Recommendation 16 November 1999
<import>
href = uri-reference
Model: EMPTY
</import>
An XSLT stylesheet may import another XSLT stylesheet using an
xsl:import element. Importing a stylesheet is the same
as including it (see include) except that definitions
and template rules in the importing stylesheet take precedence over
template rules and definitions in the imported stylesheet; this is
described in more detail below. The xsl:import element
has an href attribute whose value is a URI reference
identifying the stylesheet to be imported. A relative URI is resolved
relative to the base URI of the xsl:import element (see
base-uri).
The xsl:import element is only allowed as a xsl:import element children must precede all other
element children of an xsl:stylesheet element, including
any xsl:include element children. When
xsl:include is used to include a stylesheet, any
xsl:import elements in the included document are moved up
in the including document to after any existing
xsl:import elements in the including document.
For example,
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="article.xsl"/>
<xsl:import href="bigfont.xsl"/>
<xsl:attribute-set name="note-style">
<xsl:attribute name="font-style">italic</xsl:attribute>
</xsl:attribute-set>
</xsl:stylesheet>
xsl:stylesheet elements encountered during processing of
a stylesheet that contains xsl:import elements are
treated as forming an xsl:stylesheet element has one import child for each
xsl:import element that it contains. Any
xsl:include elements are resolved before constructing the
import tree.xsl:stylesheet element in the import tree
is defined to have lower xsl:stylesheet element in the import tree if it would be
visited before that xsl:stylesheet element in a
post-order traversal of the import tree (i.e. a traversal of the
import tree in which an xsl:stylesheet element is visited
after its import children).xsl:stylesheet element that contains it.
For example, suppose
stylesheet A imports stylesheets B and C in that order;
stylesheet B imports stylesheet D;
stylesheet C imports stylesheet E.
Then the order of import precedence (lowest first) is D, B, E, C, A.
Note: Since xsl:import elements are required to occur
before any definitions or template rules, an implementation that
processes imported stylesheets at the point at which it encounters the
xsl:import element will encounter definitions and
template rules in increasing order of import precedence.
In general, a definition or template rule with higher import precedence takes precedence over a definition or template rule with lower import precedence. This is defined in detail for each kind of definition and for template rules.
It is an error if a stylesheet directly or indirectly imports
itself. Apart from this, the case where a stylesheet with a particular
URI is imported in multiple places is not treated specially. The
xsl:stylesheet for each place that it is
imported.
Note: If xsl:apply-imports is used (see apply-imports), the behavior may be different from the
behavior if the stylesheet had been imported only at the place with
the highest