XSL позволяет комбинировать стили и тем самым создавать модульную структуру преобразований. Существует два механизма использования внешних стилей: включение и импорт. Включение осуществляется с помощью элемента верхнего уровня xsl:include, а импорт с помощью элемента верхнего уровня xsl:import.
Синтаксис:
| 1 2 | <xsl:include     href = "URI" /> | 
и
| 1 2 | <xsl:import     href = "URI" /> | 
Атрибуты:
- href— обязательный атрибут, содержит путь до файла с включаемым или импортируемым стилем
Элемент xsl:import должен быть всегда первым дочерним элементом xsl:stylesheet. На xsl:include таких ограничений не накладывается. Импортируемые и включаемые стили могут содержать другие импортируемые или включаемые стили, все они будут использованы в преобразовании. При этом стиль не должен прямо или косвенно включать или импортировать сам себя.
Импортируемые и включаемые стили могут содержать одинаковые шаблоны, переменные и прочие конфликтующие инструкции. Разрешаются эти конфликты в соответствии с приоритетом (порядком) импорта. Все шаблоны, переменные и инструкции имеют такой же приоритет импорта как и стиль, в котором они находятся. Применяться в преобразовании будет тот стиль (шаблон, переменная, инструкция), который обладает высшим приоритетом импорта по отношению к конфликтующему с ним. Приоритет импорта стиля определяется по следующим правилам:
- приоритет импорта основного стиля (тот, который импортирует остальные) всегда выше приоритета импортируемых;
- приоритет импорта включенного стиля (xsl:include) равен приоритету импорта основного стиля;
- если основной стиль импортирует несколько внешних стилей, то приоритет импорта этих внешних стилей будет возрастать от первого (который импортируется раньше/выше) к последнему (который импортируется позже/ниже);
- если импортируемые (внешние) стили в свою очередь импортируют другие стили, то приоритет этих дочерних стилей будет выше, чем у импортированных в основной стиль раньше родительского и ниже, чем у импортированных в основной стиль позже родительского.
Чтоб все это стало понятнее приведу пример:
main.xsl
| 1 2 3 4 5 | <xsl:stylesheet>     <xsl:import href="styleA.xsl" />     <xsl:import href="styleB.xsl" />     <xsl:include href="styleC.xsl" /> </xsl:stylesheet> | 
styleA.xsl
| 1 2 3 4 5 | <xsl:stylesheet>     <xsl:import href="styleA-a.xsl" />     <xsl:import href="styleA-b.xsl" />     <xsl:include href="styleA-c.xsl" /> </xsl:stylesheet> | 
styleB.xsl
| 1 2 3 4 5 | <xsl:stylesheet>     <xsl:import href="styleB-a.xsl" />     <xsl:import href="styleB-b.xsl" />     <xsl:include href="styleB-c.xsl" /> </xsl:stylesheet> | 
styleC.xsl
| 1 2 3 4 5 | <xsl:stylesheet>     <xsl:import href="styleC-a.xsl" />     <xsl:import href="styleC-b.xsl" />     <xsl:include href="styleC-c.xsl" /> </xsl:stylesheet> | 
Приоритет импорта в этом случае будет следующий (от большего к меньшему):
- main.xsl, styleC.xsl и styleC-c.xsl
- styleC-b.xsl
- styleC-a.xsl
- styleB.xsl и styleB-c.xsl
- styleB-b.xsl
- styleB-a.xsl
- styleA.xsl и styleA-c.xsl
- styleA-b.xsl
- styleA-a.xsl

