2011-11-02 16 views
9

मैं "पैकेज" नोड्स जो एक "mtm" विशेषता के साथ एक "सिस्टम" पोता है प्राप्त करना चाहते हैं, और "mtm" विशेषता के मान "2055 है "। नीचे दिए गए उदाहरण दस्तावेज़ के लिए, केवल पहला पैकेज नोड वापस किया जाना चाहिए।XPath: जो एक विशेषता के साथ एक उपनोड है का चयन माता पिता नोड्स

मैं

"/Database/Package[/SystemCompatibility/System[@mtm='2055']]" 

का उपयोग, लेकिन यह काम नहीं करता। इस अभिव्यक्ति में क्या गलत है?

<?xml version="1.0" encoding="UTF-8"?> 
<Database version="300"> 
<Package id="6imb05ww" description="ThinkPad Modem Adapter"> 
    <SystemCompatibility> 
     <System mtm="8742" os="Windows XP" oslang="en" /> 
     <System mtm="2055" os="Windows XP" oslang="jp" /> 
    </SystemCompatibility> 
</Package> 
<Package id="6imb06ww" description="ThinkPad Modem Adapter"> 
    <SystemCompatibility> 
     <System mtm="3046" os="Windows XP" oslang="en" /> 
    </SystemCompatibility> 
</Package> 
</Database> 

उत्तर

13

निकालें /SystemCompatibility से पहले

/Database/Package[SystemCompatibility/System[@mtm='2055']] 
+0

यह काम करता है, धन्यवाद। मेरा बुरा, मैंने सोचा कि मैंने इस दृष्टिकोण की कोशिश की है लेकिन वास्तव में मैंने नहीं किया। – kennyzx

2

उपयोग करके देखें:

/Database/Package/descendant::System[@mtm='2055'] 

वंशज :: ऑपरेटर का उपयोग करके आप पैकेज के किसी भी प्रणाली पोता प्राप्त करने के लिए अनुमति देगा। http://www.w3schools.com/xpath/xpath_axes.asp

+0

यह केवल सिस्टम नोड और नहीं पूरे पैकेज नोड –

+0

आह वापस आ जाएगी, तुम सही हो। मैंने सवाल गलत समझा। यह बात बताने के लिए धन्यवाद। –

+2

यह कुछ संशोधन के साथ काम करेगा! नोट encapsulating कोष्ठक '/ डाटाबेस/पैकेज [वंशज :: सिस्टम [@ mtm = '2055']]' –

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