यह बटन की तरह HTML तत्व, (जानबूझकर सरलीकृत) को खोजने के लिए अच्छी तरह से काम करता है:क्या संघ के लिए एक DRYER XPath अभिव्यक्ति है?
//button[text()='Buy']
| //input[@type='submit' and @value='Buy']
| //a/img[@title='Buy']
अब मैं एक संदर्भ के लिए इस बाध्य करने की आवश्यकता। उदाहरण के लिए, खरीदें बटन है कि एक लेबल बॉक्स के अंदर प्रकट होता है:
//legend[text()='Flubber']
और यह, काम करता है (.. युक्त fieldset करने के लिए हमें हो जाता है):
//legend[text()='Flubber']/..//button[text()='Buy']
| //legend[text()='Flubber']/..//input[@type='submit' and @value='Buy']
| //legend[text()='Flubber']/..//a/img[@title='Buy']
लेकिन इस आसान बनाने के लिए किसी भी तरह से है ? दुःख की बात है बात की इस तरह काम नहीं करता है:
//legend[text()='Flubber']/..//(
button[text()='Buy']
| input[@type='submit' and @value='Buy']
| a/img[@title='Buy'])
(ध्यान दें कि यह ब्राउज़र के भीतर XPath के लिए है, इसलिए XSLT समाधान में मदद नहीं करेगा।)
हम्म , यह तुलना करें 3 मानों का समापन है, जो परस्पर अनन्य भागों के साथ इस सरलीकृत उदाहरण में काम करना चाहिए। दिलचस्प है कि मेरी मूल समस्या यूनियन ऑपरेटर का भारी हाथ कैसे है, और यह परिष्करण यूनियन का सूक्ष्म उपयोग है। –
@ क्रिस नोई: यह नोड सेट तुलना ("संगतता" नहीं) का उपयोग करता है और अंतिम भविष्य के अंदर उन सापेक्ष पथ स्वयं पर पारस्परिक रूप से अनन्य होते हैं क्योंकि वे सभी स्वयं धुरी से शुरू होते हैं: वे किसी भी दस्तावेज़ के साथ काम करेंगे चाहे वह सरल या जटिल हो। –
हाँ, यह कुछ नए क्षितिज खुलता है। धन्यवाद! –