<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>

5.7 Режимы

Режимы позволяют обрабатывать элемент несколько раз, получая каждый раз другой результат.

Оба элемента xsl:template и xsl:apply-templates имеют необязательный атрибут mode. Значением атрибута mode является название QName, которое приводится к расширенному имени как было описано в главе [2.4 Полные имена]. Если xsl:template не имеет атрибута match , то он не должен иметь и атрибута mode. Если элемент xsl:apply-templates имеет атрибут mode, то он применяется только к тем правилам шаблона из элементов xsl:template, которые имеют атрибут mode с тем же значением. Если элемент xsl:apply-templates атрибута mode не имеет, то он применяется только к тем правилам шаблона из элементов xsl:template, которые также не имеют атрибута mode.

5.8 Встроенные правила шаблона

Имеется встроенное правило шаблона, позволяющее рекурсивно продолжать обработку в отсутствии успешного сравнения с явным правилом шаблона в стиле. Это правило шаблона используется как для узлов элементов, так и для корневого узла. Далее приведен эквивалент встроенного правила шаблона:

<xsl:template match='*|/'>

<xsl:apply-templates/>

</xsl:template>

Для каждого метода также есть встроенное правило шаблона, позволяющее рекурсивно продолжать обработку в том же самом режиме, в отсутствии успешного сравнения с образцом из явного правила шаблона в этом стиле. Это правило шаблона применяется как для узлов элементов, так и для корневого узла. Далее приведен эквивалент встроенного правила шаблона для режима m.

<xsl:template match='*|/' mode='m'>

<xsl:apply-templates mode='m'/>

</xsl:template>

Также есть встроенное правило шаблона для текстовых узлов и узлов атрибутов, которое просто копирует текст:

<xsl:template match='text()|@*'>

<xsl:value-of select='.'/>

</xsl:template>

Для инструкций обработки и комментариев встроенное правило шаблона не должно делать ничего.

<xsl:template match='processing-instruction()|comment()'/>

Встроенное правило шаблона для узлов пространства имён также не должно делать ничего. Нет образца, который бы мог соответствовать узлу пространства имён, поэтому встроенное правило шаблона является единственным правилом шаблона, которое применяется к узлам пространства имён.

Встроенные правила шаблона обрабатываются так, как будто они были неявно импортированы прежде стиля, а потому имеют меньший приоритет импорта, чем все остальные правила шаблона. Таким образом, автор может переопределить встроенное правило шаблона, явно включив новое правило шаблона.

6 Именованные шаблоны

<!– Category: instruction ->

<xsl:call-template

name = qname >

<!– Content: xsl:with-param * ->

</xsl:call-template>

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату