Вход/Регистрация
Технология XSLT
вернуться

Валиков Алексей Н.

Шрифт:

<xsl:stylesheet

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 version="1.0"

 xmlns:a="a">

 <xsl:import href="#"/>

 <xsl:strip-space elements="*"/>

 <xsl:template match="a:b">

<xsl:message>

<xsl:text>1</xsl:text>

<xsl:call-template name="print-name"/>

</xsl:message>

<xsl:apply-templates/>

 </xsl:template>

 <xsl:template match="a:a/a:b">

<xsl:message>

<xsl:text>2</xsl:text>

<xsl:call-template name="print-name"/>

</xsl:message>

<xsl:apply-templates/>

 </xsl:template>

 <xsl:template match="a:*">

<xsl:message>

<xsl:text>3</xsl:text>

<xsl:call-template name="print-name"/>

</xsl :message>

<xsl:apply-templates/>

 </xsl:template>

 <xsl:template match="b">

<xsl:message>

<xsl:text>5</xsl:text>

<xsl:call-template name="print-name"/>

</xsl:message>

<xsl:apply-templates/>

 </xsl:template>

</xsl:stylesheet>

Листинг 5.17. Преобразование b.xsl

<xsl:stylesheet

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 version="1.0"

 xmlns:a="a">

 <xsl:strip-space elements="*"/>

 <xsl:template match="node" priority="1">

<xsl:message>

<xsl:text>4</xsl:text>

<xsl:call-template name="print-name"/>

</xsl:message>

<xsl:apply-templates/>

 </xsl:template>

 <xsl:template name="print-name">

<xsl:text> template matched </xsl:text>

<xsl:value-of select="name"/>

<xsl:text>.</xsl:text>

 </xsl:template>

</xsl:stylesheet>

Как уже было сказано ранее, четвертое преобразование, вынесенное теперь в импортируемый модуль, при разрешении конфликтов шаблонов будет самым младшим вследствие того, что порядок его импорта меньше, чем у других преобразований. Сообщения процессора будут иметь вид

4 template matched ORA.

5 template matched b.

3 template matched a.

2 template matched b.

1 template matched b.

3 template matched c.

Кстати сказать, XSLT предоставляет возможность выполнять в преобразованиях импортированные шаблоны вместо тех, которые, по мнению процессора, лучше подходят. Подобно тому, как для применения шаблонных правил мы использовали элемент

xsl:apply-templates
, импортированные шаблоны могут быть вызваны элементом
xsl:apply-imports
.

Элемент xsl:apply-imports

Синтаксис этого элемента:

<xsl:apply-imports/>

Элемент

xsl:apply-imports
можно использовать в шаблонах для применения правил, которые были импортированы во внешних модулях, но затем переопределены шаблонами основного преобразования.

Пример

Предположим, что в преобразованиях часто используется шаблон, который заменяет элементы

home
ссылками на сайт http://www.xsltdev.ru:

  • Читать дальше
  • 1
  • ...
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: