2009-07-04 118 views
5

如果我有一個模板,如下所示,這是用來創建一個按鈕:XSLT:如何另一個模板內重複使用的模板

<xsl:template match="button" name="button"> 
    <a class="button" href="{@href}"> 
    <xsl:value-of select="@name"/> 
    </a> 
</xsl:template> 

我希望能夠使用該按鈕在另一個模板,像這個:

<xsl:template match="createForm"> 
    ... 
    <button name="Create" href="/create"/> 
</xsl:template> 

但是,這將只是按原樣輸出按鈕標籤。我希望通過現有的按鈕模板進行處理。這怎麼能實現?

-

感謝大衛·M代表你的答案。以下是我現在有一個按鈕模板:

<xsl:template match="button" name="button"> 
    <xsl:param name="name" select="@name"/> 
    <xsl:param name="href" select="@href"/> 
    <a class="button" href="{$href}"> 
    <xsl:value-of select="$name"/> 
    </a> 
</xsl:template> 

的的CreateForm模板現在看起來是這樣的:

<xsl:template match="createForm"> 
    ... 
    <xsl:call-template name="button"> 
    <xsl:with-param name="name" select="'Create'"/> 
    </xsl:call-template> 
</xsl:template> 
+0

不確定這一個的標題...謹慎解釋? – Noldorin 2009-07-04 11:01:42

+0

是的,這不是一個真正合適的標題。想不到一個標題。建議? – Joel 2009-07-04 11:07:44

回答

5

嘗試使用這個(把我的頭頂部):

<xsl:call-template name="button"> 
    <xsl:with-param name="name" value="Create" /> 
    <xsl:with-param name="href" value="/create" /> 
</xsl:call-template> 

您還需要使用<xsl:param ...>在按鈕模板中聲明您的兩個參數。

2

只要使用<xsl:include ... /><xsl:import ... />,你應該能夠使用兩種:

<xsl:apply-templates select="button"/> <!-- or your own selector --> 

(其中假定有上下文節點下按鈕元素)使用名稱

<xsl:call-template/>