2012-12-14 11 views
5

क्या XPath 1.0 में कोई ऑपरेटर है जो SQL में "इन" ऑपरेटर के रूप में कार्य करता है?XPath "in" ऑपरेटर

select * from tbl_students where id in (1,2,3) 

उत्तर

13

= XPath 1.0 का ऑपरेटर इस तरह से काम करता है, हालांकि XPath 1.0 अनुक्रम लेखन के लिए वाक्यविन्यास प्रदान नहीं करता है। तो अगर आप प्रपत्र

<doc> 
    <value>1</value> 
    <value>2</value> 
    <value>3</value> 
</doc> 

की एक XML दस्तावेज है तो //doc[value = 2] तरह एक अभिव्यक्ति है कि doc तत्व वापस आ जाएगी।

XPath 2.0 में, वाक्यविन्यास (1, 2, 3) तीन पूर्णांक का अनुक्रम बनाएगा, और आप $i = (1, 2, 3) जैसी स्थितियां लिख सकते हैं। लेकिन शाब्दिक अनुक्रम XPath 1.0 की विशेषता नहीं है - XPath अभिव्यक्ति के एक तरफ एकाधिक मान प्राप्त करने का एकमात्र तरीका पथ अभिव्यक्ति का उपयोग करना है जो एकाधिक नोड्स से मेल खाता है।

+0

+1 कुछ। –

4

मुझे एक ही समस्या थी, उपर्युक्त उत्तर सही है। यह और अधिक स्पष्ट करने के लिए, Xpath में कुछ इस तरह दिखेगा:

select * from documents where documenttype in ('newsletter','magazine') 
1

यह जानने के लिए 'आईडी' आप खोज के अनुक्रम में है:

//*:document[*:documentType=("magazine","newspaper")] 

जो की equivalant होगा (1, 2, 3, 4) index-of() एक विकल्प हो सकता है। ध्यान दें कि यह सूचकांक की सूची लौटाता है।

एक दस्तावेज भाग के लिए

तरह
<student id='1'/> 
<student id='101'/> 
<student id='1001'/> 

का चयन करेंगे एक सटीक जवाब के लिए की तरह

//*[not(empty(index-of((1, 2, 3, 4), @id)))]