2012-02-01 7 views
5
<xsl:variable name="a">20</xsl:variable> 
    <xsl:variable name="b">10</xsl:variable> 

     <xsl:if test="($a) > ($b)"> 
     ------ 
    </xsl:if> 

मैं अगर condion में त्रुटि मिल रही है ..xsl में कौन सा चर है जो जांचता है?

+0

मेरे लिए ठीक लग रहा है। न तो libxslt और न ही ट्रांसफॉर्मिक्स एक त्रुटि प्रदर्शित करते हैं। – Saxoier

+0

सहायक @user_nums –

उत्तर

5

निम्नलिखित का प्रयास करें:

<xsl:if test="$a &gt; $b"> 

> (& gt;) के लिए चरित्र संस्थाओं उपयोग करने का प्रयास; में ऑपरेटरों और < (& लीटर) अभिव्यक्तियां, अन्यथा कुछ पार्सर्स सोचते हैं कि आप टैग को जल्दी बंद कर रहे हैं, या किसी अन्य को खोल रहे हैं।

+0

आपको '> 'से बचने की ज़रूरत नहीं है। '$ A> $ b' का उपयोग करना बिल्कुल संभव है। – Saxoier

+0

आप सही हैं, एक्सएसएलटी पार्सर मैंने कई चंद्रमाओं का इस्तेमाल किया था, मुझे पार्सर त्रुटियों से बचने के लिए उन्हें बचने के अभ्यास में मिला। अभी अभी चेक किया गया है और आपका कोड ठीक काम करता है। मैं हर दिन कुछ नया सीखता हूं, धन्यवाद! –

5

आपके द्वारा पोस्ट किया गया उदाहरण काम करना चाहिए। हालांकि, आपको यह नहीं करना चाहिए कि आपके मामले में दोनों चर प्रकार स्ट्रिंग हैं जो आश्चर्यजनक परिणाम दे सकते हैं जहां उनकी लंबाई अलग होती है। विभिन्न डेटाटाइप पर तुलना ऑपरेटर का व्यवहार xpath spec on booleans में निर्दिष्ट है।

से बचने के लिए यह आप select विशेषता का उपयोग चर घोषित या मैन्युअल रूप से तुलना के लिए number करने के लिए उन्हें परिवर्तित कर सकते हैं:

<xsl:variable name="a" select="20"/> 
<xsl:variable name="b" select="10"/> 
... 
<xsl:if test="number($a) > number($b)"> 
</xsl:if> 
+1

"जब न तो ऑब्जेक्ट की तुलना की जा सकती है वह नोड-सेट है और ऑपरेटर <=, <, > = या> है, तो ऑब्जेक्ट्स की तुलना दोनों ऑब्जेक्ट्स को संख्याओं में परिवर्तित करके और आईईईई 754 के अनुसार संख्याओं की तुलना करके की जाती है।" - कोई अपरिभाषित व्यवहार नहीं। – Saxoier

+0

@ सैक्सोएयर: आप सही हैं, आपके उद्धरण से पहले अनुच्छेद केवल ऑपरेटरों '= 'और'! = 'पर लागू होता है। –

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