एक समाधान ओपी द्वारा इच्छित प्रतिबिंबित करने के लिए अद्यतन मेल खाता है।
देखें @ डेविड के जवाब
नीचे एक नमूना एक्सएमएल के लिए,
<root>
<foo id="0">
<bar attr="val"/>
<foo id="1">
<bar attr="xxx"/>
</foo>
<foo id="2">
<bar attr="val">
<one>1</one>
<two>
<three>3</three>
</two>
</bar>
</foo>
</foo>
संदर्भ नोड के रूप में < तीन >, एक वैध के साथ रिवर्स अक्ष पर एक मान्य xpath समाधान
./ancestor::foo[bar[@attr='val']][position() = 1]
"./" वैकल्पिक है। स्थिति() = 1 वैकल्पिक नहीं है अन्यथा पूर्वजों foo
भविष्यवाणियों को संतुष्ट करने के लिए भी वापस कर दिया जाएगा।
पुराना जवाब: उपेक्षा
यह एक पुरानी सवाल है। लेकिन कोई भी जो दिलचस्पी लेता है, निम्नलिखित आपको मूल प्रश्न का इरादा लेना चाहिए।
रिवर्स अक्ष
//bar[@attr='val']/ancestor::*[position()=1]
फॉरवर्ड अक्ष
//*[child::bar[@attr='val']]
आपको क्या मिलता है? –
कुछ भी नहीं। यह वर्णित तत्व से मेल नहीं खा रहा है। क्या अभिव्यक्ति काम करनी चाहिए? –
कृपया, (न्यूनतम) XML दस्तावेज़ प्रदान करें जिस पर यह "काम नहीं करता"। हम केवल इतना जानते हैं कि आप "बैग में अपना हाथ डाल रहे हैं और आप जो चाहते हैं उसे नहीं ढूंढ रहे हैं" लेकिन हम नहीं जानते कि "बैग में क्या है" :) –