2017-08-16 111 views
0

我使用xsl樣式表從xml創建PDF。有大量的模板用於顯示各個部分。模板中的xsl全局變量訪問

裏面許多模板,我用背景色

<fo:block ... background-color="#2D338E" ...>..</fo:block> 

顯示各種標頭現在,我想要的顏色是在某些條件而定。 所以,現在有對顏色值爲2 - #2D338E和#2D458E(只是一個例子) 我創造我有一個變量

<xsl:variable name="color"><!-- I define conditions here --> 
</xsl:variable> 

的問題是,爲了在使用它的模板,我必須在其中定義一個顏色參數,然後將該創建的變量作爲該參數的值傳遞。如果我不通過參數管道,我不能從模板定義中「看到」變量「顏色」。 這可以解決嗎?我可以在某個地方定義該變量,然後訪問它嗎?每個模板添加參數的時間太長。甚至更長的時間來傳遞它,因爲一些模板可以被多次調用。

+0

定義樣式表頂層的變量,在任何模板之外。那麼它將在任何模板的範圍內。 –

回答

1

這不是從你的描述很清楚,我的顏色是否將是一個轉型中的所有實例相同。如果是,您可以將其定義爲全局變量。但是,如果某些部分的顏色與其他部分的顏色不同,則這不起作用。

XSLT 2.0有該溶液中,即隧道參數。如果使用xsl:with-param[@tunnel='yes']設置參數,則可以間接調用模板以及直接調用的模板,這樣可以避免您在每個模板中聲明參數的問題。您在文章中沒有說過您是使用XSLT 2.0還是選擇遷移到XSLT 2.0。