XSL Combining
Many other stylesheets can be imported using xsl:import or been included using xsl:include
into the stylesheet.
A D V E R T I S E M E N T
Importing the stylesheet is same as including, except that the definitions
and the template rules in importing the stylesheet takes precedence over the template
rules and the definitions in a imported stylesheet. The Stylesheet 1 is imported into the
Stylesheet 2.
XML source
<?xml version="1.0"?>
<xslTutorial >
<H1>IMPORTING STYLESHEETS</H1>
</xslTutorial>
HTML output 1
IMPORTING STYLESHEETS
XSL stylesheet 1
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:variable name="id2">Stylesheet 1(id2.xsl)</xsl:variable>
<xsl:variable name="t">Variable t from id2.xsl</xsl:variable>
</xsl:stylesheet>
The XSL Templates
An "xsl:import" element children should precede all the other element children of the
xsl:stylesheet element, including any of the xsl:include element children. When the xsl:include
is been used to include the stylesheet, any of the xsl:import elements in a included document
are moved up in a including document to after any of the existing xsl:import elements in
a including document.
XML source
<?xml version="1.0"?>
<xslTutorial >
<H1>IMPORTING STYLESHEETS</H1>
</xslTutorial>
HTML output 3
<P>Stylesheet 1(id2.xsl)
XSL stylesheet 2
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:include href="id2.xsl"/>
<xsl:template match="/">
<P><xsl:value-of select="$id2"/></P>
<P><xsl:value-of select="$id3"/></P>
</xsl:template>
</xsl:stylesheet>
The Results of Stylesheet Combining
The Results of combining a stylesheet depends on the position of a xsl:include or the
xsl:import function.
XML source
<?xml version="1.0"?>
<xslTutorial >
<AAA/>
<BBB/>
<CCC/>
</xslTutorial>
HTML output 4
<DIV style="color:red">AAA (according to Stylesheet 1 (id2.xsl)</DIV>
<DIV style="color:red">BBB (according to Stylesheet 1 (id2.xsl)</DIV>
<DIV style="color:red">CCC (according to Stylesheet 1 (id2.xsl)</DIV>
XSL stylesheet 4
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="/">
<xsl:apply-templates/ >
</xsl:template>
<xsl:template match="/*/*">
<DIV style="color:blue">
<xsl:value-of select="name()"/>
<xsl:text> (according to this stylesheet)</xsl:text>
</DIV>
</xsl:template>
<xsl:include href="id2.xsl"/>
</xsl:stylesheet>
Apply-Import Function
You can do use the xsl:apply-imports element to get the information from the imported
template, whose behaviour are been changing. The Stylesheet 2 imports the Stylesheet 1
and it overrides the template.
XML source
<?xml version="1.0"?>
<xslTutorial >
<AAA/>
<BBB/>
<CCC/>
</xslTutorial>
HTML output 1
<DIV style="color:red">AAA</DIV>
<DIV style="color:red">BBB</DIV>
<DIV style="color:red">CCC</DIV>
XSL stylesheet 1
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="/*/*">
<DIV style="color:red">
<xsl:value-of select="name()"/>
</DIV>
</xsl:template>
</xsl:stylesheet>
Overrides
The Stylesheet 2 imports the Stylesheet 1 and overrides the template.
XML source
<?xml version="1.0"?>
<xslTutorial >
<AAA/>
<BBB/>
<CCC/>
</xslTutorial>
HTML output 2
<EM>AAA</EM>
<EM>BBB</EM>
<EM>CCC</EM>
XSL stylesheet 2
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:import href="id2.xsl"/>
<xsl:template match="/*/*">
<EM>
<xsl:value-of select="name()"/>
</EM>
</xsl:template>
</xsl:stylesheet>
Import Precedence
The Import precedence is more important than the priority precedence. Look at the
Stylesheet 2.
XML source
<?xml version="1.0"?>
<xslTutorial >
<AAA id='a1' pos='start'>
<BBB id='b1'/>
<BBB id='b2'/>
</AAA>
<AAA id='a2'>
<BBB id='b3'/>
<BBB id='b4'/>
<CCC id='c1'>
<CCC id='c2'/>
</CCC>
<BBB id='b5'>
<CCC id='c3'/>
</BBB>
</AAA>
</xslTutorial>
HTML output 1
<H3 style="color:blue">CCC (id=c1)</H3>
<H3 style="color:blue">CCC (id=c2)</H3>
<H3 style="color:blue">CCC (id=c3)</H3>
HTML output 2
XSL stylesheet 1
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="/">
<xsl:apply-templates select="//CCC"/>
</xsl:template>
<xsl:template match="CCC" priority="10">
<H3 style="color:blue">
<xsl:value-of select="name()"/>
<xsl:text> (id=</xsl:text>
<xsl:value-of select="@id"/>
<xsl:text> )</xsl:text>
</H3>
</xsl:template>
</xsl:stylesheet>
XSL stylesheet 2
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:import href="id2.xsl"/>
<xsl:template match="/">
<xsl:apply-templates select="//CCC"/>
</xsl:template>
<xsl:template match="CCC" priority="-100">
<H3 style="color:red">
<xsl:value-of select="name()"/>
<xsl:text> (id=</xsl:text>
<xsl:value-of select="@id"/>
<xsl:text> )</xsl:text>
</H3>
</xsl:template>
</xsl:stylesheet>
Be the first one to comment on this page.
Share And Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
Keywords XSL Combining, xsl element, xsl entity, xsl text, xsl css, xsl translate, xsl doctype,
xsl sort, xsl count, xsl editor, xsl xhtml, xsl schema, saxon xsl, jsp xsl, xsl href,
xsl encoding, w3c xsl, xsl stylesheet, rss xsl, xsl param, xsl template, xsl include,
xsl html, xsl if, xsl replace, xsl function, xsl parameter, xsl processor, xsl id,
xsl output, xsl node, xsl fop, xsl import, xsl date, xsl select, xsl dom, xsl fo,
docbook xsl, c# xsl, xsl stylesheets, xsl parser, xsl transformation, svg xsl, xalan xsl,
xsl tree, xsl escape, msxml xsl, xsl parsing, xsl empty, xsl tag, string xsl, display xsl,
value xsl, xsl using, xsl generate, convert xsl, xsl multiple, xml combine