2009-07-04 17 views
5

bir düğme oluşturmak için kullanılan, aşağıdaki gibi bir şablon varsa:XSLT: Başka bir şablonu içinde bir şablon yeniden nasıl

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

ben gibi başka şablonda bu düğmeyi kullanmak isterler Bu, düğme etiketini olduğu gibi çıkarır. Bununla birlikte, bu yalnızca düğme etiketini olduğu gibi çıkarır. Mevcut düğme şablonuyla işlenmesini istiyorum. Bu nasıl başarılabilir?

- Cevabınız için

Teşekkür David 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 şablonu artık şuna benzer:

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

Bunun adıyla ilgili emin değilim ... Açıklamak ister misiniz? – Noldorin

+0

Evet, gerçekten uygun bir başlık değil. Bir başlık düşünemedim. Öneri? – Joel

cevap

5

bu (kafamın üst kapalı) kullanmayı deneyin: İşte düğme şablonu için şimdi ne var

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

Ayrıca, iki parametrenizi de düğme şablonunuzda <xsl:param ...> kullanarak bildirmeniz gerekir.

+0

, varsayılan değerin bağlamsal düğümle ilgili olduğunu unutmayın - bunlar dize değişmezleri değildir. Verilen örnekte, sırasıyla value = "@ name" ve value = "@ href" kullanırdım. –

+0

@Marc - ama atıfta bulunduğunuz "bağlamsal düğüm" XSLT içinde, işlenmekte olan dosyada değil ... bu sadece bir şablon çağırmak için yanlış bir yaklaşım değildi? –

+0

yah .. Paramleri kullanabiliriz .. Doğru bir cevap .. –

2

Sürece <xsl:include ... /> veya <xsl:import ... /> kullanımı gibi, aşağıdakilerden birini kullanmak mümkün olmalıdır:

adı kullanarak

veya <xsl:call-template/> (bağlam düğümündeki düğme öğeleri vardır kabul)

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

İlgili konular