Я не эксперт по XSLT (скорее энтузиаст), но это был интересный и до сих пор без ответа вопрос. Я думаю, что ответ лежит в спецификации, но немного озадачивает, так как вам нужно выяснить, какой обход после заказа будет первым.
http://en.wikipedia.org/wiki/Tree_traversal
В спецификации дерева "приоритета импорта" есть пример:
http://www.w3.org/TR/xslt#dt-import-precedence
Например, предположим,
- таблица стилей A импортирует таблицы стилей B и C в указанном порядке;
- таблица стилей B импортирует таблицу стилей D;
- таблица стилей C импортирует таблицу стилей E.
Тогда порядок импорта приоритет
(низший первый) - это D, B, E, C, A.
Вам необходимо оценить прохождение после заказа, чтобы вы могли понять, почему таблицы стилей имеют этот порядок приоритета импорта. Википедия характеризует прохождение после заказа как «левый, правый, корневой».
Как правило, определение или шаблонное правило с более высоким приоритетом импорта имеет приоритет над определением или шаблонным правилом с более низким приоритетом импорта.
Итак, вернемся к вашим конкретным вопросам:
- Будет ли работать импорт для шаблона, который импортируется в импортируемый файл (вложенный импорт)?
Мое предположение было бы "да" (в соответствии с порядком приоритета), и оно даже вызывало бы несколько шаблонов, если вы вызываете их из соответствующего соответствующего шаблона. Как описано здесь:
http://www.w3.org/TR/xslt#element-apply-imports
Например, предположим, что таблица стилей
doc.xsl содержит шаблонное правило для
элементы примера:
<code><xsl:template match="example">
<pre><xsl:apply-templates/>
</ XSL: шаблон>
Другая таблица стилей может импортировать
doc.xsl и измените обработку
пример элементов следующим образом:
<xsl:import href="doc.xsl"/>
<xsl:template match="example">
<div style="border: solid red">
<xsl:apply-imports/>
</div>
</xsl:template>
Объединенный эффект будет
превратить пример в элемент
формы:
<code><div style="border: solid red"><pre>...
- А как насчет "импорта одного брата" (мастер-файл импортирует два файла с шаблонами, совпадающими с одинаковыми узлами)
Соответствующий шаблон будет выбран на основе более высокого приоритета импорта, и это определяется порядком импорта.
Я думаю, это будет работать так:
- таблица стилей A импортирует таблицы стилей B и C в указанном порядке;
Тогда порядок приоритета импорта (сначала младший) - B, C, A.
Таким образом, в этом случае будет выбран шаблон в таблице стилей C.
- таблица стилей A импортирует таблицы стилей C и B в указанном порядке;
Тогда порядок приоритета импорта (сначала младший) - C, B, A.
Таким образом, в этом случае будет выбран шаблон в таблице стилей B.