2012-01-27 17 views
6

क्या कोई भी कृपया XPath अभिव्यक्ति प्रदान कर सकता है जो सभी नोड्स का चयन करता है जिनमें स्पष्ट 'xmlns' विशेषता है, उदा। <html xmlns="http://www.w3.org/1999/xhtml">? //*[@xmlns] काम नहीं करता है क्योंकि (जैसा कि यह निकला) xmlns को XPath द्वारा विशेषता के रूप में नहीं माना जाता है।XPath: स्पष्ट 'xmlns' विशेषता के साथ नोड्स का चयन करें

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"/> 
<title>Информация по счетам, картам</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
<meta http-equiv="cache-control" content="no-cache"/> 
<meta http-equiv="pragma" content="no-cache"/> 
....... 

मुझे यहां केवल 'html' नोड की आवश्यकता है।

+0

यह संभव है। यहां एक उत्तर दिया गया है: http://stackoverflow.com/a/3616018/1115187 – maxkoryukov

उत्तर

9

तकनीकी रूप से सही जवाब यह है कि है के बराबर है ...

संभव नहीं है। आपको उस स्रोत दस्तावेज़ के बीच अंतर करने की आवश्यकता है जो स्रोत टेक्स्ट का प्रतिनिधित्व करता है और वास्तविक स्रोत टेक्स्ट स्वयं ही। XPath स्रोत टेक्स्ट पर नहीं, और xmlns छद्म-विशेषता के बाद अमूर्त पर आधारित है, जो बाद में केवल प्रासंगिक है।

हालांकि

...

आप कर सकते थे एक तरह से नकली यह निम्नलिखित XPath 2.0 अभिव्यक्ति के साथ:

//*[not(namespace-uri()=ancestor::*/namespace-uri())] 

यह किसी भी तत्व है कि एक ही नाम स्थान में एक पूर्वज नहीं है का चयन करता है जो सैद्धांतिक रूप से इसका मतलब है कि यह उन सभी तत्वों का चयन करता है जहां नामस्थान घोषित किया गया है। हालांकि, यह नामस्थानों को फिर से घोषित नहीं किया जाएगा। उदाहरण के लिए, इस दस्तावेज़ पर विचार करें:

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head/> 
    <body> 
     <p xmlns="http://something"> 
      <p xmlns="http://something"/> 
     </p> 
    </body> 
</html> 

अभिव्यक्ति ऊपर html तत्व और पहली p चयन करता है। दूसरा p एक ही नामस्थान में पूर्वजों का है, इसलिए यह चयनित नहीं है, भले ही यह xmlns निर्दिष्ट करता है।

3

यह संभव नहीं होना चाहिए, क्योंकि

<a xmlns="http://www.org/1"> <b/> </a> 

<a xmlns="http://www.org/1"> <b xmlns="http://www.org/1"/> </a> 
संबंधित मुद्दे