xpath

2010-04-14 16 views
35

में पहले तत्व को अनदेखा कैसे करें मैं पहले तत्व को कैसे अनदेखा कर सकता हूं और शेष तत्व प्राप्त कर सकता हूं?xpath

<ul> 
    <li><a href="#">some link</a></li> 
    <li><a href="#">some link 2</a></li> 
    <li><a href="#">link i want to find</a></li> 
</ul> 

धन्यवाद

+1

क्या आप परिभाषित कर सकते हैं कि "पहला तत्व" क्या है? उदाहरण एक्सएमएल से पहला तत्व 'उल' है, या यदि आपका मतलब है 'उल' से पहला तत्व 'li' है, या आप सभी' तत्व 'चुनना चाहते हैं तो उन में से पहला को छोड़ दें? –

+0

मैं पहले ली को अनदेखा करना चाहता हूं। – priyank

उत्तर

70

यदि आप उसके बाद ही तत्व "पहली" अनदेखा करना चाहते:

//li[position()>1] 
or 
(//a)[position()>1] 

आप पिछले चाहते हैं, तो केवल (अपने उदाहरण लगता है कि सुझाव देने के लिए):

//li[last()] 
or 
(//a)[last()] 
+3

याद रखें कि XPath में अनुक्रमणिका 1-आधारित हैं, 0-आधारित नहीं। तो अभिव्यक्ति 'ए [स्थिति()> 1]' पहले को छोड़कर सभी 'तत्व' लौटाती है। –

+0

स्थिति() संदर्भ तत्व की स्थिति देता है। प्रदान किए गए XPATH में, प्रत्येक 'ए' की स्थिति 1 और अंतिम() के बराबर होगी और प्रत्येक 'ए' तत्वों को वापस कर देगी, पहले को छोड़कर नहीं। –

+1

अपेक्षित के रूप में मूल्यांकन करने के लिए 'स्थिति()' प्राप्त करने के लिए, आपको कोष्ठक में तत्वों के चयन को नोड-सेट में समूहित करने और * फिर * स्थिति पर अनुमान फ़िल्टर को लागू करने की आवश्यकता है (यानी ('// a) [स्थिति()> 1] 'और' (// ए) [अंतिम()] ') –

10

आप "पहले" पर जाने के लिए position() का उपयोग कर सकते हैं, लेकिन किस तत्व के आधार पर आप आप रुचि रखते हैं और संदर्भ क्या है, आपको अपने XPATH पर थोड़ी भिन्नता की आवश्यकता हो सकती है।

उदाहरण के लिए, यदि आप li सभी तत्वों का पता और पहले को छोड़कर सभी प्राप्त करना चाहता था, आप इस्तेमाल कर सकते हैं:

//li[position()>1] 

और यह उम्मीद के रूप में काम करेगा, के लिए छोड़कर li सभी तत्वों के लौटने सबसे पहला।

हालांकि, अगर आप a तत्वों को संबोधित करना चाहते हैं तो आपको XPATH को थोड़ा संशोधित करने की आवश्यकता है। अभिव्यक्ति के संदर्भ में //a[position()>1]a तत्वों में से प्रत्येक में position() 1 और last() सत्य का मूल्यांकन करेगा। तो, यह हमेशा हर a वापस लौटाएगा और पहले व्यक्ति को छोड़ नहीं देगा।

आपको उस अभिव्यक्ति को लपेटने की आवश्यकता है जो a को नोड-सेट में समूहित करने के लिए कोष्ठक में चुनता है, फिर स्थिति पर पूर्वानुमान फ़िल्टर लागू करें।

//a[preceding::a] 

कि पहले एक को छोड़कर सभी a तत्वों मिलेगा (के बाद से कोई a पहले एक पूर्ववर्ती):

(//a)[position()>1]

वैकल्पिक रूप से, आप भी इस तरह एक अभिव्यक्ति इस्तेमाल कर सकते हैं।