2012-10-31 51 views
0

我有幾個樣式表和模板,我想爲它們添加一些行爲。 比方說,這樣的事情:將XSL參數傳遞給模板的通用方法

<xsl:template match="*" priority='10'> 
    <xsl:apply-templates select="." mode="someFunStuffsToDo"/> 
    <xsl:next-match/> 
</xsl:template> 

但是,正如我需要一些通用模板,我有使用參數的問題,因爲我不知道所有的不同類型的PARAM的我能有。

是否有「易」的方式來表達類似的東西:

<xsl:template match="*" priority='10'> 
    <xsl:param select="All the params you get"/> 
    <xsl:apply-templates select="." mode="someFunStuffsToDo"> 
     <xsl:with-param select="All the params you got"/> 
    </xsl:apply-templates> 
    <xsl:next-match/> 
</xsl:template> 

我可以基於通用PARAM其中將包括PARAMS的節點,但我需要重寫我的大部分實際的想象一些解決方案模板切換不同的細節PARAMS聲明一般一個...

編輯: 好吧,我想我只是發表我的問題之前剛剛找到一個解決方案: 隧道參數。 那是我的目的工作,我明白了,我的意思是,如果我只是之前和之後我的設置參數與屬性隧道=「是」

<xsl:template match="*" priority='10'> 
    <xsl:apply-templates select="." mode="someFunStuffsToDo"/> 
    <xsl:next-match/> 
</xsl:template> 

是否行得通呢? (我還沒有測試過,對我很慚愧,但我認爲下一場比賽會保留當前模式)

回答

0

是的,tunnel參數幫助,但是您需要確保您的傳遞代碼和接收模板<xsl:with-param name="foo" tunnel="yes" select="bar"/>分別爲<xsl:param name="foo" tunnel="yes"/>。但是之間的任何模板,如您所擁有的模板,都不需要with-param