2012-06-20 8 views
11

है, मैं id="mydiv" वाले सभी डोम तत्वों को चुनने का प्रयास कर रहा हूं, लेकिन class="exclass" वाले उन लोगों को बाहर निकालें। अभी मैं पहला भाग //*[@id="mydiv"] कर रहा हूं। मैं कक्षा बहिष्करण भाग कैसे जोड़ूं?xpath उन वर्गों को बाहर करने के लिए जिनके पास कक्षा

पीएस यदि आप सोच रहे हैं कि मुझे एक ही आईडी वाले एकाधिक तत्वों का चयन करने की आवश्यकता क्यों है, तो मैं केवल एक मौजूदा डोम पर काम कर रहा हूं जिसे मैं नियंत्रित नहीं कर सकता।

+0

आपके पास एक ही आईडी के साथ कई तत्व हैं? यह स्वस्थ नहीं है, आप जानते हैं। http://stackoverflow.com/questions/2487074/what-are-the-side-effects-of-using-multiple-instances-of-a-single-id-name-in-htm – jolt

उत्तर

17

आप निषेध का उपयोग कर सकते हैं:

//*[@id="mydiv and @class!="exclass"] 

class विशेषता सभी नोड्स पर मौजूद नहीं कर सकते हैं, तो आप इस की जरूरत है:

//*[@id="mydiv" and (not(@class) or @class!="exclass")] 

पिछले (कुछ) अजीब तर्क क्या में बदल सकता है माइकल ने प्रस्तावित किया:

//*[@id="mydiv" and not(@class="exclass")] 

हालांकि, व्यक्तिगत रूप से, तथ्य यह है कि XPath तुलना नहीं कर सकता अगर विशेषता गुम हो रही है तो एक कमी की तरह थोड़ा सा लगता है।

+0

यह काफी नहीं है उपयोगकर्ता ने पूछा। Downvoting। मेरा जवाब देखें –

+0

@MichaelKay यह इंगित करने के लिए धन्यवाद, मैंने अपना जवाब अपडेट कर दिया है; जैसा कि मेरे अपडेट में बताया गया है, मुझे लगता है कि "कुछ भी तुलना नहीं की जा सकती" कुछ भी xpath की कमी का कुछ हद तक है; बस किसी भी कारण से नहीं सोच सकता कि यह व्यवहार उपयोगी क्यों होगा:/ –

5

सवाल लिखित रूप में करने के लिए इस सवाल का जवाब

//*[@id="mydiv" and not(@class="exclass")] 

यदि कोई @id विशेषता है और इसके मूल्य mydiv है हालत की पहली छमाही सत्य है। दूसरा आधा सच है यदि मान exclass के साथ कोई @class विशेषता नहीं है: यानी, यदि कोई वर्ग विशेषता नहीं है, या यदि कोई वर्ग विशेषता है और इसका मान "exclass" के अलावा कुछ और है।

उपयोग से बचें! = इस स्थिति में: 90% समय, यदि आप A=B लिखने के बारे में सोचते हैं, तो शायद आप not(A=B) चाहते थे। अर्थ उस मामले में अलग है जहां ए या बी एक सिंगलटन नहीं है, यानी, जहां यह खाली है, या इसमें कई मान हो सकते हैं।

+0

TriXPath (चाल के रूप में) नियम! – jolt

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

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