2011-03-28 11 views
7

मेरे पास 2 अलग-अलग चर के लिए AND और OR का एक संयोजन है। और मैंने निम्नलिखित कोशिश की:सशर्त और दो अलग-अलग मान

<xsl:if test="$countryCode = '104' 
       and 
       (transactionType != 'Allowance' 
       or 
       revenueCenter != '1100')"> 

लेकिन यह काम नहीं करता है। क्या यह संभव है एक सशर्त परीक्षण करना या मैं इस तरह उसे विभाजित करने के लिए है करने के लिए:

<xsl:if test="$countryCode='104'> 

और एक दूसरे तत्व में मुझे क्या करना:

<xsl:if transactionType!='Allowance' or revenueCenter!='1100'> 

मैं इंटरनेट पर खोज की, लेकिन नहीं पा सके इस पर कोई संकेत। क्या कोई मुझे समाधान खोजने में मदद कर सकता है। आप सादर धन्यवाद, पीटर

+0

transactionType और revenueCenter क्या है? परिवर्तनीय संदर्भ के साथ कोई समस्या हो सकती है ($ क्यों उपयोग नहीं करें?) दूसरा दृष्टिकोण गलत है – HamoriZ

+0

यह "काम नहीं कर रहा है"? क्या आपको कोई परिणाम मिल रहा है; यदि हां, तो आप किस चीज से अपेक्षा करते हैं उससे अलग कैसे होते हैं? –

+0

हैलो जोल्टन, संदर्भ ठीक हैं। मैंने उन्हें तत्व में आउटपुट करके चेक किया था। यदि देश कोड 104 से मेल खाता है और अन्य स्थितियों में से एक सत्य है (संबंधित संदर्भ में कोई "भत्ता" नहीं है और कोई "1100" नहीं है तो एक निश्चित एक्सएमएल तत्व बनाया जाना चाहिए)। मैं "कंटेन" समारोह के साथ चारों ओर कोशिश कर रहा हूँ। शायद मुझे वांछित आउटपुट मिल जाए। – Peter

उत्तर

10

XPath अभिव्यक्ति:

$countryCode='104' 
    and 
    (transactionType!='Allowance' or revenueCenter!='1100') 

वाक्य रचना सही है।

हम अर्थशास्त्र के बारे में कुछ भी नहीं कह सकते हैं, क्योंकि कोई XML दस्तावेज़ प्रदान नहीं किया गया है और अभिव्यक्ति का चयन करने के लिए कोई स्पष्टीकरण नहीं है। इसके उपयोग तर्क है जब एक नोड-सेट (या क्रम या नोड सेट XPath 2.0 में) बहुत है -

हमेशा की तरह, वहाँ सिफारिश != ऑपरेटर OSE के लिए नहीं है, जब तक वास्तव में जरूरी है ज्यादातर लोगों की अपेक्षा से कहीं ज्यादा।

!= के बजाय

बेहतर कार्य not() का उपयोग करें:

$countryCode='104' 
and 
    (not(transactionType='Allowance') or not(revenueCenter='1100')) 

और इस आगे छोटे और बराबर करने के लिए पुनर्संशोधित जा सकता है:

$countryCode='104' 
and 
    not(transactionType='Allowance' and revenueCenter='1100') 
+0

हैलो डिमिट्रे, इस उत्तर के लिए बहुत बहुत धन्यवाद। मुझे ऑपरेटर "! =" के साथ समस्या का पता नहीं था। मैं इसका बहुत उपयोग कर रहा हूं लेकिन भविष्य में "नहीं()" का उपयोग करने की कोशिश करूंगा। मैंने आपके अंतिम उदाहरण कोड के साथ प्रयास किया और यह पूरी तरह से काम करता है - धन्यवाद! – Peter

+0

मुख्य अंतर यह है कि यदि कोई लेनदेन टाइप नहीं है, तो 'लेन-देन टाइप! =' भत्ता 'झूठा रिटर्न देता है, जबकि 'नहीं (लेनदेन प्रकार =' भत्ता ')' सत्य लौटाता है। भविष्य में कृपया कुछ स्रोत एक्सएमएल प्रदान करें ताकि आपकी मदद करना आसान हो। –

+0

@ पीटर: आपका स्वागत है। मैं तुरंत जवाब नहीं दे सका क्योंकि मैं ब्राउज़र में एक्सएसएलटी 2.0 को लागू करने पर @ माइकल-के द्वारा एक्सएमएल प्राग आलेख पढ़ने में व्यस्त था - महान सामान !!! –

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