Валиков Алексей Н.
Шрифт:
Пять шаблонов этого преобразования могут соответствовать одним и тем же узлам, а значит, создавать множество конфликтов, которые будут разрешаться при помощи механизма приоритетов.
Приоритет первого шаблона, паттерн которого соответствует продукции QName, будет равен
Попробуем применить это преобразование к следующему документу:
Проследим за тем, как будет выполняться преобразование.
□ Инструкции по обработке
□ Корневому элементу
□ Следующему элементу,
□ Элемент
□ Следующему элементу
□ Элемент
Сравнивая этот анализ с сообщениями процессора, можно убедиться в верности прогноза:
Напомним, что приоритет преобразований может быть также явно указан в атрибуте
то его приоритет был бы выше, чем у всех остальных шаблонов, а поскольку он соответствует всем узлам в обрабатываемом документе, то во всех случаях применялся бы только он один. Сообщения процессора имели бы вид
Между тем, явное указание приоритета шаблона не может изменить порядок его импорта. То есть, если бы в предыдущем примере четвертый шаблон был бы вынесен во внешний модуль и импортирован в основное преобразование, в любом случае он бы применялся только в отсутствие более подходящих правил.