паттернов.

Таблица 5.1. Приоритет паттернов

Вид паттерна Приоритет
QName 0
child::QName
@QName
attribute::QName
processing-instruction(литерал)
child::processing-instruction(литерал)
префикс:* -0.25
child::префикс:*
@префикс:*
attribute::префикс:*
NodeTest -0.5
child::NodeTest
@NodeTest
attribute::NodeTest
Другие паттерны 0.5

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

Пример

Вычислим в качестве упражнения приоритеты шаблонов для следующего примера.

Листинг 5.15. Преобразование

<xsl:stylesheet

 version='1.0'

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

 xmlns:a='a'>

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

Вы читаете Технология XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

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