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