2009-07-04 23 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

+0

それは本当に適切なタイトルではありません。タイトルを考えることができませんでした。提案? – Joel

答えて

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:apply-templates select="button"/> <!-- or your own selector --> 

(コンテキストノードの下のボタンの要素があるとる)

又は<xsl:call-template/>

+0

デフォルト値はコンテキストノードに関連しており、文字列リテラルではないことに注意してください。この例では、それぞれvalue = "@ name"とvalue = "@ href"を使用します。 –

+0

@Marc - あなたが参照している "コンテキストノード"は、処理されているファイルではなくXSLT内にあります...これはテンプレートを呼び出すには間違ったアプローチでしたか? –

+0

yah ..私たちはparams ..正しい答えを使うことができます.. –

2

限り、あなたは<xsl:include ... />又は<xsl:import ... />を使用するように、あなたのいずれかを使用することができるはず

関連する問題