Při importu stylu jsou speciálním způsobem ošetřeny konflikty. Instrukce z naimportovaného stylu mají nižší prioritu. Můžeme je proto snadno přepsat ve stylu, který provádí import. Odpovídající importovaná definice pak nebude přístupná.
Tento případ se hodí, pokud chceme z větší části využít již hotový styl, a jen ho drobně modifikovat. Například můžeme velice jednoduše upravit již existující styl pro formátování katalogu tak, aby přidal i odkazy.
Příklad 9.1. Import stylu – katalog-odkazy2.xsl
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="katalog-obrazky.xsl"/> <xsl:template match="nazev"> <TH> <A href="#{generate-id(..)}"> <xsl:apply-templates/> </A> </TH> </xsl:template> <xsl:template match="polozka" mode="detailni"> <A NAME="{generate-id(.)}"></A> <xsl:apply-templates mode="detailni"/> <HR/> </xsl:template> </xsl:stylesheet>
Takovýto přístup nám šetří práci a navíc nám umožňuje lépe spravovat styly. Změna v původním stylu (např. změna barev) se promítne i do toho upraveného.
Styly lze importovat v libovolném počtu úrovní (i importovaný styl, může importovat nějaký další styl).
Pokud chceme využít i kód v importem zastíněné šabloně, můžeme
toho dosáhnout pomocí <xsl:apply-imports>
.
Příklad 9.2. Import stylu s apply-imports
– katalog-odkazy3.xsl
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="katalog-obrazky.xsl"/> <xsl:template match="nazev"> <TH> <A href="#{generate-id(..)}"> <xsl:apply-templates/> </A> </TH> </xsl:template> <xsl:template match="polozka" mode="detailni"> <A NAME="{generate-id(.)}"></A> <xsl:apply-imports/> </xsl:template> </xsl:stylesheet>