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

हालांकि, यह केवल बटन टैग को आउटपुट करेगा। मैं मौजूदा बटन टेम्पलेट के माध्यम से संसाधित करना चाहता हूं। यह कैसे हासिल किया जा सकता है?

-

धन्यवाद आपका जवाब के लिए डेविड एम।

<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 ...> का उपयोग करके अपने बटन टेम्पलेट के भीतर अपने दो पैरामीटर घोषित करने की भी आवश्यकता होगी।

+0

ध्यान दें कि डिफ़ॉल्ट मान संदर्भ नोड से संबंधित है - वे स्ट्रिंग अक्षर नहीं हैं। दिए गए उदाहरण में, मैं क्रमशः मूल्य = "@ नाम" और मूल्य = "@ href" का उपयोग करूंगा। –

+0

@Marc - लेकिन "संदर्भ नोड" जिसे आप संदर्भित करते हैं, एक्सएसएलटी के भीतर था, फाइल को संसाधित नहीं किया जा रहा था ... यह टेम्पलेट को कॉल करने का गलत तरीका था? –

+0

याह .. हम पैराम का उपयोग कर सकते हैं .. यह एक सही जवाब है .. –

2

जब तक आप <xsl:include ... /> या <xsl:import ... /> का उपयोग करते समय, आपके उपयोग करने के लिए सक्षम होना चाहिए:

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

(जो मान लिया गया संदर्भ नोड के अंतर्गत बटन तत्वों देखते हैं)

या <xsl:call-template/> नाम का उपयोग

संबंधित मुद्दे