2009-05-06 14 views
17

वहाँ वैकल्पिक पैरामीटर के साथ एक XSL टेम्पलेट कॉल करने के लिए रास्ता नहीं है?वैकल्पिक पैरामीटर जब एक XSL टेम्पलेट बुला

उदाहरण के लिए

:

<xsl:call-template name="test"> 
    <xsl:with-param name="foo" select="'fooValue'" /> 
    <xsl:with-param name="bar" select="'barValue'" /> 
</xsl:call-template> 

और जिसके परिणामस्वरूप टेम्पलेट परिभाषा:

<xsl:template name="foo"> 
    <xsl:param name="foo" select="$foo" /> 
    <xsl:param name="bar" select="$bar" /> 
    <xsl:param name="baz" select="$baz" /> 
    ...possibly more params... 
</xsl:template> 

इस कोड इच्छा मुझे एक त्रुटि देता है "अभिव्यक्ति त्रुटि:। चर 'baz' नहीं मिला" क्या "बाज़" घोषणा छोड़ना संभव है?

आप xsl:param वाक्य रचना गलत प्रयोग कर रहे हैं धन्यवाद, हेनरी

उत्तर

40

इस बजाय कार्य करें:

<xsl:template name="foo"> 
    <xsl:param name="foo" /> 
    <xsl:param name="bar" /> 
    <xsl:param name="baz" select="DEFAULT_VALUE" /> 
    ...possibly more params... 
</xsl:template> 

परम xsl:with-paramxsl:param बयान के नाम से मेल का उपयोग कर पारित कर दिया पैरामीटर का मान लेता है। यदि कोई भी प्रदान नहीं किया जाता है तो यह select विशेषता पूर्ण XPath का मान लेता है।

अधिक जानकारी W3School's entry on param पर पाया जा सकता।

+0

कि चाल किया था ...... धन्यवाद !!!! – HumanSky

+0

+1। परम पर w3schools पृष्ठ के लिंक के लिए धन्यवाद। – GuruM

+0

मैं जानता हूँ कि यह पुराना है, लेकिन w3schools लिंक मर चुका है। – akousmata

2

परम तत्व का चयन भाग में मूल्य यदि आप एक पैरामीटर उत्तीर्ण नहीं इस्तेमाल किया जाएगा।

आप क्योंकि चर या पैरामीटर $ baz अभी तक अस्तित्व में नहीं है एक त्रुटि हो रही है। इसे अपने उदाहरण में काम करने के लिए शीर्ष स्तर पर परिभाषित करना होगा, जो वही नहीं है जो आप चाहते थे।

इसके अलावा, अगर आप किसी टेम्पलेट के लिए एक शाब्दिक मूल्य से गुजर रहे हैं तो आप इस तरह इसे पारित करना चाहिए।

<xsl:call-template name="test"> 
    <xsl:with-param name="foo">fooValue</xsl:with-param> 
3

व्यक्तिगत रूप से, मैं निम्न कार्य पसंद करते हैं:

<xsl:call-template name="test"> 
    <xsl:with-param name="foo"> 
     <xsl:text>fooValue</xsl:text> 
    </xsl:with-param> 

मैं पाठ के साथ स्पष्ट रूप से का उपयोग कर पसंद इतना है कि मैं अपने XSL पर XPath का उपयोग कर सकते खोज करने के लिए। एक्सएसएल पर विश्लेषण करते समय यह कई बार काम में आया है, मैंने लिखा नहीं था या याद नहीं किया था।

1

अगर आपको पठनीयता बढ़ाने के लिए इसकी आवश्यकता नहीं है तो कृपया <xsl:param .../> का उपयोग न करें।

यह महान काम करता है:

<xsl:template name="inner"> 
    <xsl:value-of select="$message" /> 
</xsl:template> 

<xsl:template name="outer"> 
    <xsl:call-template name="inner"> 
    <xsl:with-param name="message" select="'Welcome'" /> 
    </xsl:call-template> 
</xsl:template> 
संबंधित मुद्दे