2012-05-10 12 views
47

वर्तमान में मेरे पास निम्नलिखित कोड के साथ एक एक्सएसएल है जहां मैं केवल "गिनती" प्रिंट करने की कोशिश कर रहा हूं यदि यह N/A के बराबर नहीं है। लेकिन लगता है जैसे "!=" काम नहीं कर रहा है।XSLT <xsl:if> में स्ट्रिंग की तुलना करते समय मैं "बराबर नहीं" कैसे निर्दिष्ट करूं?

<xsl:for-each select="Directory/Match"> 
    <xsl:if test = "Count != N/A"> 
     <tr> 
      <td><xsl:value-of select="@bookName" /></td> 
      <td><xsl:value-of select="@AuthorName" /></td> 
      <td><xsl:value-of select="Count" /></td> 
     </tr> 
    </xsl:if> 
</xsl:for-each> 

हालांकि, यह काम करता है अगर मैं संख्यात्मक मान के साथ तुलना की कोशिश करो।

उदाहरण:

<xsl:if test = "Occurrances != 0"> 

कोई मुझे बता सकते हैं: मैं तार तुलना करने के लिए मैं क्या उपयोग कर सकते हैं चाहते हैं, तो?

उत्तर

60

Filburt कहते हैं; लेकिन यह भी ध्यान दें कि यह आम तौर पर

test="not(Count = 'N/A')" 

लिखने के लिए अगर वहाँ एक गणना तत्व वे मतलब एक ही बात है वास्तव में बेहतर है, लेकिन वहाँ है कि अगर कोई गणना, या अगर वहाँ कई हैं, तो अर्थ अलग हैं।

6 साल बाद

के बाद से इस सवाल का जवाब लोकप्रिय हो गए हैं लगता है, लेकिन एक छोटे से कुछ पाठकों के लिए गुप्त हो सकता है, मुझे इसके विस्तार करते हैं।

XPath में "=" और "! =" ऑपरेटर मानों के दो सेटों की तुलना कर सकता है। आम तौर पर, यदि ए और बी मानों के सेट हैं, तो "=" सत्य लौटाता है यदि ए और बी के बराबर मानों की कोई जोड़ी है, जबकि "! =" असफल होने पर कोई भी जोड़ी है तो सत्य वापस आती है।

सामान्य मामले में जहां ए शून्य या एक नोड का चयन करता है, और बी स्थिर है (कहें "एनए"), इसका मतलब है कि not(A = "NA") सत्य लौटाता है यदि कोई अनुपस्थित है, या उसके पास मान " एनए "। इसके विपरीत, A != "NA" सत्य लौटाता है यदि कोई मौजूद है और "NA" के बराबर नहीं है। आम तौर पर आप "अनुपस्थित" केस को "बराबर नहीं" के रूप में माना जाना चाहते हैं, जिसका अर्थ है कि not(A = "NA") उपयुक्त फॉर्मूलेशन है।

28

आप एक स्ट्रिंग शाब्दिक आप में (एकल) डाल करने की आवश्यकता की तुलना करना चाहते हैं उद्धरण:

<xsl:if test="Count != 'N/A'"> 
+0

हे आपकी मदद के लिए धन्यवाद। एकल उद्धरण काम करता है। :) – Maxyie

+3

शायद यह जोड़ने लायक है कि उद्धरण चिह्नों की आवश्यकता है क्योंकि परीक्षण उनके बिना पूर्ण ज्ञान बनाता है: उस स्थिति में, हालांकि, यह पूछता है कि 'गणना' बाल तत्व का मूल्य कुछ 'ए' के ​​मूल्य के बराबर नहीं है 'एन' बाल तत्व का बाल तत्व। –

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