2008-09-19 15 views
32

क्या XPath का उपयोग केवल उन नोड्स का चयन करना संभव है जिनके पास एक विशेष बाल तत्व हैं? उदाहरण के लिए, इस एक्सएमएल से मैं केवल उन पालतू जानवरों के तत्व चाहता हूं जिनके पास 'बार' का बच्चा है। तो जिसके परिणामस्वरूप डाटासेट इस उदाहरण से lizard और pig तत्व होते हैं:क्या XPath केवल उन नोड्स को वापस कर सकता है जिनमें एक्स का बच्चा है?

<pets> 
    <cat> 
    <foo>don't care about this</foo> 
    </cat> 
    <dog> 
    <foo>not this one either</foo> 
    </dog> 
    <lizard> 
    <bar>lizard should be returned, because it has a child of bar</bar> 
    </lizard> 
    <pig> 
    <bar>return pig, too</bar> 
    </pig> 
</pets> 

यह Xpath मुझे सभी पालतू जानवरों को देता है: "/pets/*", लेकिन मैं केवल पालतू जानवर नाम 'bar' का एक बच्चा नोड है चाहता हूँ।

+1

पठनीयता और उपयोगिता के संदर्भ में W3C चश्मा कम मत समझना: आप निम्नलिखित xpath एक्सप्रेशन का उपयोग कर सकते हैं। the spec में इन सवालों के जवाब देखने के लिए शायद तेज़ है, जो कई उदाहरणों के साथ बहुत पठनीय और पूर्ण है। – Confusion

उत्तर

45
यहाँ

यह है, अपने सभी महिमा में

/pets/*[bar] 

अंग्रेजी: मुझे pets एक बच्चे bar

21
/pets/child::*[child::bar] 

मेरे क्षमा है कि सभी बच्चों को दे दो, मैं करने के लिए टिप्पणी नहीं देखा पिछला जवाब

लेकिन इस मामले में मैं नहीं बल्कि जो सभी तत्वों से नीचे शामिल descendant:: अक्ष, उपयोग करके अपनी पसंद निर्दिष्ट:

/pets[descendant::bar] 
4
बस मामले में आप बच्चों के बारे में और अधिक विशिष्ट होना चाहते थे

- आप भी उपयोग कर सकते हैं उन पर चयनकर्ताओं।

उदाहरण:

<pets> 
    <cat> 
     <foo>don't care about this</foo> 
    </cat> 
    <dog> 
     <foo>not this one either</foo> 
    </dog> 
    <lizard> 
     <bar att="baz">lizard should be returned, because it has a child of bar</bar> 
    </lizard> 
    <pig> 
     <bar>don't return pig - it has no att=bar </bar> 
    </pig> 
</pets> 

अब, आप केवल परवाह pets के बारे में सभी किसी भी बच्चे barमूल्य baz साथ एक विशेषता att है कि हो रही है।

//pets/*[descendant::bar[@att='baz']] 

परिणाम

<lizard> 
    <bar att="baz">lizard should be returned, because it has a child of bar</bar> 
</lizard> 
+0

तत्व के सभी पालतू जानवरों को चाहते हैं, तो विशिष्ट टेक्स्ट() है? ऐसा लगता है कि मैं इसे समझ नहीं सकता ... – jeremfg

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

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