У меня есть интересный вопрос об импорте/включении XSLT.xslt import/include 2 файла с тем же шаблоном
У меня есть 2 файла XSLT с тем же правилом.
Получение XSLT: (запускается сам по себе)
<xsl:template match="Booking" mode="extraStyle">
<link rel="stylesheet" href="../css/receipt.css" type="text/css" media="screen"/>
</xsl:template>
EmailCommon XSLT: (служит библиотека шаблонов для электронной почты документы, не запускается сам по себе)
<xsl:template match="Booking" mode="extraStyle">
<link rel="stylesheet" href="../css/email.css" type="text/css" media="screen"/>
</xsl:template>
Так что в зависимости от тип документа I вставляет правильные файлы CSS.
То, что я пытаюсь сделать, это включить эти два документа в еще один XSLT:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl"
version="1.0">
<xsl:include href="receipt.xsl"/>
<xsl:include href="email.xsl"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
Тем не менее, потому что правила одинаковы в обоих включены таблицы стилей сводится к Последнее правило, и я в конечном итоге включаю только email.css.
Мне было интересно, можно ли сделать что-то умное в этом случае?
Единственное, о чем я думал, это использовать другой режим, но тогда это не было бы интуитивно, а не накапливать код всех одинаковых правил. Не знаю, как и вообще ли это можно сделать в XSLT.
Спасибо за помощь!
P.S. К сожалению, я действительно пытаюсь понять правила форматирования на этом сайте, но я просто не могу :(gggrrr
Вы должны определить требуемое поведение более тесно. В каких обстоятельствах вы хотите, чтобы один шаблон запускался, и при каких обстоятельствах другой? – Tomalak
@Tomalak, дело в том, что в таблице стилей, где я включаю как receipt.xsl, так и email.xsl (это просто библиотека шаблонов) Я хочу, чтобы оба шаблона выполнялись. Но согласно правилу Last-in-first, тот же шаблон выполняется для последней включенной таблицы стилей, ei для email.xsl. Мне было интересно, есть ли умный способ убедиться, что оба шаблона из receipt.xsl и email.xsl могут быть выполнены. Или мне нужно использовать другой режим? Имеет ли смысл? – DashaLuna
Какова цель в атрибуте «режим» в существующем коде; поэтому оба шаблона определяются с помощью mode = 'extraStyle'; и как они вызывают? –