Разделение XSL-шаблона, повторное использование кода

Часто используемые шаблоны (template) могут быть вынесены в отдельные XSL-шаблоны, которые затем будут подключены и использованы в основных. Такое решение позволяет использовать один и тот же template в различных XSL-шаблона.

Подключение внешнего XSL-шаблона осуществляется с использованием <xsl:include> или <xsl:import>.

Использование <xsl:include>

<xsl:include href="import://123" />

где 123 — идентификатор подключаемого XSL-шаблона. Кроме идентификатора XSL-шаблона допускается использованием названия XSL-шаблона в случае его написания на английском языке.

Элемент <xsl:include> должен быть дочерним по отношению к <xsl:stylesheet>.

Включения обрабатываются по мере их возникновения на уровне дерева, подключаемый XML анализируется как XML-документ и дочерние элементы <xsl:stylesheet> в документе заменяют элемент <xsl:include> в том документе, куда включен данный документ.

В отличие от <xsl:import>, правила подключаемого шаблона имеют тот же приоритет импорта, что и правила в таблице стилей, куда включен шаблон. Если таблицы стилей содержат правила шаблона для одного и того же элемента, то вызываемый шаблон определяется по порядку появления в документе.

Использование <xsl:import>

<xsl:import href="import://123" />

где 123 — идентификатор подключаемого XSL-шаблона. Кроме идентификатора XSL-шаблона допускается использованием названия XSL-шаблона в случае его написания на английском языке.

Элемент <xsl:import> должен быть дочерним по отношению к <xsl:stylesheet>, при этом элемент <xsl:import> допустим только в качестве элемента верхнего уровня.

<xsl:import> должен предшествовать всем остальным дочерним элементам <xsl:stylesheet>, в том числе любым дочерним элементам <xsl:include>.

<xsl:import> эквивалентен <xsl:include>, с той разницей, что определения и правила шаблонов импортирующего файла имеют более высокий приоритет, чем определения и правила шаблонов импортируемого файла XSLT.

Пример подключаемого XSL-шаблона

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:hostcms="https://www.hostcms.ru/"
    exclude-result-prefixes="hostcms">

    <xsl:template match="shop_item">
        ...
    </xsl:template>

</xsl:stylesheet>

Пример подключения

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:hostcms="https://www.hostcms.ru/"
    exclude-result-prefixes="hostcms">

    <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>

    <xsl:include href="import://123"/>
    ...
</xsl:stylesheet>

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.