2012-06-30 21 views
5

में दो टेम्पलेट्स के बीच चर को कैसे पास करें XSLT में दो टेम्पलेट्स के बीच चर कैसे पास करें।एक्सएसएलटी

मैं वैश्विक चर का उपयोग नहीं कर सकता क्योंकि चर का मान वर्तमान नोड पर मूल्यांकन के तहत निर्भर है।

<xsl:template match="product"> 
<xsl:variable name="pr-pos" select="count(./preceding-sibling::product)+1"/> 
.. 
.. 
.. 
<xsl:apply-templates select="countries/country"/> 
</xsl:template> 

<xsl:template match="countries/country"> 
<tr id="country-id"> 
    <td><a href="#" class="action" id="{concat('a-',$pr-pos)}">+</a></td> 
.. 
.. 

यह त्रुटि देता है के रूप में $ जनसंपर्क-स्थिति दूसरी टेम्पलेट में सुलभ नहीं है:

मैं इन सबसे छुटकारा XSLT है कहो।

मैं परिवर्तनीय pr-pos 'मान को अन्य टेम्पलेट में कैसे पास करूं? मैं यह कैसे कर सकता हूँ?

+0

आपके मामले में आपको वास्तव में एक चर पारित करने की आवश्यकता नहीं है। '$ Pr-pos' का मान जिसे आप पास करना चाहते हैं वह 'देश' टेम्पलेट के भीतर से समझ योग्य है। – Utkanos

+0

सभी प्रोग्रामिंग भाषाओं (अच्छी तरह से, अधिकांश) के पास अन्य निष्पादन इकाई को जानकारी पास करने का माध्यम है, और सीखना कि यह कैसे करना मूलभूत सिद्धांतों में से एक है। यह प्रश्न लगभग पूछने के बराबर है, मैं जावास्क्रिप्ट में दो कार्यों के बीच चर कैसे पारित कर सकता हूं, या कह रहा हूं कि "मैंने कोशिश की है"() {var i = 5; b();} function b() {alert (i); } 'लेकिन' i' दूसरे फ़ंक्शन में पहुंच योग्य नहीं है। " –

+0

@torazaburo: मैं एक उपयोगी नहीं कर सकता जो मुझे बताता है कि Google पर यह कैसे करें। मुझे यह नहीं पता था, इसलिए पूछा गया है कि अगर आपको प्रश्न पूछने वाले लोगों से समस्या है तो आप स्टैक ओवरव्लो पर अपना खाता क्यों अक्षम नहीं करते हैं। Google पर खोजें और मुझे बताएं कि आपको w3 दस्तावेज के अलावा इस पर कोई अच्छा दस्तावेज़ मिल गया है। – Harshdeep

उत्तर

10
<xsl:template match="product"> 
    <xsl:variable name="pr-pos" select="count(./preceding-sibling::product)+1"/> 
    .. 
    .. 
    .. 
    <xsl:apply-templates select="countries/country"> 
     <xsl:with-param name="pr-pos" select="$pr-pos" /> 
    </xsl:apply-templates> 
</xsl:template> 

<xsl:template match="countries/country"> 
    <xsl:param name="pr-pos" /> 
    <tr id="country-id"> 
     <td><a href="#" class="action" id="{concat('a-',$pr-pos)}">+</a></td> 
     .. 
     .. 
+0

मैंने कुछ और खोज की और स्टैक ओवरफ्लो पर उत्तर की जांच करने से पहले, वही काम किया, और यह काम किया। फिर भी आपकी मदद के लिए धन्यवाद :) – Harshdeep