2011-09-19 82 views
2

我想根據xsl樣式表的入站參數調用模板。xsl:名稱由參數提供的calltemplate

在name屬性中使用參數失敗,因爲$在上下文中是非法的。這是否意味着我必須使用xsl:選擇來完成此操作?

+0

是的,我相信是的。我的意思是在XPath 2.0中,可以使用內聯「if」在用戶定義函數之間進行選擇,但只適用於有限的情況。 – LarsH

回答

3

如果您想調用動態選擇的模板,那麼通常可以使用xsl:apply-templates而不是xsl:call-template來完成。這樣做的一個非常普遍的方式是改變每個

<xsl:template name="n"> 

<xsl:template name="n" match="xsl:template[@name='n']"> 

,然後更改無效

<xsl:call-template name="$x"/> 

一個合法的

<xsl:apply-templates select="document('')/*/xsl:template[@name=$x]"> 

,並通過上下文項目爲一個參數如果需要。但是,如果我們更瞭解您正在嘗試解決的問題,我們可能會提出更好的解決方法。

+0

我試圖保留模板庫中的所有表單,然後根據請求輸出特定的表單,而不必在每次添加新的支持表單時更新選擇。儘管這樣做有效,但「下一個人」理解起來似乎有點困難。 –

相關問題