Переопределение правил шаблона
<!-- Category: instruction -->
<xsl:apply-imports/>
Правило шаблона, которое должно использоваться для переопределения другого правила шаблона в импортированном стиле (см. ), может воспользоваться элементом xsl:apply-imports чтобы вызвать переопределенное правило шаблона.
При обработке стиля в каждой точке имеется некое текущее правило шаблона. Всякий раз, когда по образцу выбирается правило шаблона, для обработки оно становится текущим правилом шаблона. Когда обрабатывается элемент xsl:for-each, то при обработке содержимого этого элемента xsl:for-each текущее правило шаблона становится нулевым.
xsl:apply-imports обрабатывает текущий узел используя лишь те правила шаблона, которые были импортированы в тот элемент стиля, где это текущее правило шаблона находится. Узел обрабатывается в режиме текущего правила шаблона. Если xsl:apply-imports обрабатывается когда текущее правило шаблона нулевое, фиксируется ошибка.
Например, предположим что стиль doc.xsl содержит правило шаблона для элементов example:
<xsl:template match="example"> <pre><xsl:apply-templates/></pre> </xsl:template>
Другой стиль может импортировать doc.xsl и поменять обработку элементов example следующим образом:
<xsl:import href="doc.xsl"/>
<xsl:template match="example"> <div style="border: solid red"> <xsl:apply-imports/> </div> </xsl:template>
В результате суммарного действия example должен преобразовываться в элемент следующего вида:
<div style="border: solid red"><pre>...</pre></div>