1
我在XSLT import/include中有一个有趣的问题。xslt导入/包含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 2010-03-03 12:49:30
@Tomalak,问题是,在包含receipt.xsl和email.xsl的样式表中(这只是一个模板库)我希望这两个模板都能被执行,但根据最后一条规则,为最新的包含样式表执行相同的模板,ei for email.xsl。 我想知道是否有一个聪明的方法来确保可以执行receipt.xsl和email.xsl中的两个模板。或者我需要使用不同的模式? 它有道理吗? – DashaLuna 2010-03-03 15:20:27
'mode'属性在现有代码中有什么作用;这就是为什么两个模板都是用mode ='extraStyle'定义的。他们是如何被调用的? – 2010-03-03 15:46:20