2011-01-21 8 views
7

एक्सएमएल फिर ..xpath - चयनित के पहले 10 आइटम प्राप्त सेट

मैं एक उप एक सेट से (पृष्ठांकन प्रयोजनों के लिए) नोड्स के सेट का चयन करना चाहते हैं।

$nodes = $xml->query(//parent 
         /child[sex = 'male' 
           and position() >= 10 
           and position() < 21]); 

अगर मुझे गलत नहीं लगता है कि केवल 10 वें से 20 वें बच्चे के पुरुष बच्चे ही चुनेंगे।

मैं क्या जरूरत है चुनने के लिए पहले 10-20 (या 30-40) सेट में पुरुषों है ...

यकीन है कि मैं एक noob जा रहा हूँ और इससे पहले कि यह किया है, लेकिन इसके शुक्रवार ...

टा peeps

+0

अच्छा सवाल है, +1।समस्या का स्पष्टीकरण और चरण-दर-चरण स्पष्टीकरण के साथ एक सरल और संक्षिप्त समाधान के लिए मेरा उत्तर देखें। :) –

उत्तर

22

स्थिति हालत है अपने प्रारंभिक हालत का नतीजा nodeset पर कार्य करते हैं:

//parent/child[sex='male'][position() >= 10 and position() < 21] 
+0

+1 सही उत्तर, लेकिन कोष्ठक की कोई आवश्यकता नहीं है –

+0

जीबज़ - आपके दरवाजे को अंधेरे करने के लिए खेद है ... पता था कि यह सिमुलेशन था। tvm –

+0

कोई समस्या नहीं :), सुधार के लिए Alejandro धन्यवाद –

6

मैं selec करना चाहते हैं एक सेट से नोड्स का एक उप सेट ( पेजिनेशन उद्देश्यों के लिए)।

$nodes = $xml->query(//parent 
         /child[sex = 'male' 
           and position() >= 10 
           and position() < 21]); 

अगर मैं गलत है कि केवल चयन पुरुष बच्चों होगा जो 10 वीं 20 वीं बच्चे कर रहे हैं नहीं कर रहा हूँ।

मैं क्या जरूरत है

चुनने के लिए पहला 10-20 (या 30-40) सेट में पुरुषों है ... आप गलत रहे हैं ...

//parent/child 
      [sex = 'male' 
      and 
      position() >= 10 
      and 
      position() < 21 
      ] 

सभी child तत्वों (XML दस्तावेज़ में किसी भी parent तत्व का) का चयन करता है जिसमें sex स्टिंग मान "male" वाला बच्चा है और यह 10 में से एक है 20 वीं child उनके माता-पिता के बच्चे।

केवल कुछ ही हो सकते हैं, या यहां तक ​​कि ऐसे कोई भी तत्व नहीं हो सकते हैं।

क्या आप चाहते हैं है:

  1. (XML दस्तावेज़ में किसी भी parent तत्व के) सभी child तत्वों डंक मूल्य "male"

  2. चयनित लोगों से साथ एक sex बच्चा है कि चयन करता है ऊपर चरण 1 में केवल 10 से 20

तो, चरण 1 के लिए:

//parent/child[sex = 'male'] 

और चरण 2 जोड़ने:

//parent/child[sex = 'male'] 
       [position() >= 10 
       and 
       not(position() > 20 
       ] 
संबंधित मुद्दे