2013-04-17 23 views
21

नीचे एक्सएमएल में:XQuery में नोड के विशेषता मान का चयन कैसे करें?

<company> 
    <customers> 
    <customer cno="2222"> 
      <cname>Charles</cname> 
      <street>123 Main St.</street> 
      <city>Wichita</city> 
      <zip>67226</zip> 
      <phone>316-636-5555</phone> 
     </customer> 
     <customer cno="1000"> 
      <cname>Bismita</cname> 
      <street>Ashford Dunwoody</street> 
      <city>Wichita</city> 
      <zip>67226-1555</zip> 
      <phone>000-000-0000</phone> 
     </customer>  
    </customers> 
</company> 

मैं ग्राहक की कोई जो एक विशेषता है पाने के लिए की जरूरत है। XPath में मैं जानता हूँ कि यह /company/customers/customer/@cno है, XQuery में मैं अभिव्यक्ति नीचे की कोशिश की है लेकिन मेरे लिए काम नहीं किया:

for $c in /company/customers/customer 
return $c/@cno 
+0

XQuery सादा XPath का उपयोग करता है; आपका प्रयास मेरे लिए काम करता है। 'सी $ सी' आपको क्या देता है? – Tomalak

+0

मैं इसके लिए एडिटएक्स सॉफ्टवेयर का उपयोग कर रहा हूं, लेकिन यह त्रुटि दिखाता है "एक विशेषता नोड नहीं बना सकता जिसका माता-पिता दस्तावेज़ नोड है।" क्या आप कृपया मुझे बता सकते हैं कि आप किस टूल को आजमाते हैं, इसलिए मैं उस टूल पर स्विच कर सकता हूं। यह उपकरण विशिष्ट मुद्दा हो सकता है। –

+0

संभावित डुप्लिकेट [XQuery/XPath का प्रयोग किसी तत्व के पैरेंट नोड के गुण मान प्राप्त करने के लिए] (http://stackoverflow.com/questions/2166014/using-xquery-xpath-to-get-the-attribute-value-of -न-एलिमेंट्स-पैरेंट-नोड) – Tomalak

उत्तर

40

आप डेटा का उपयोग करना चाहिए विशेषता मान लेने के लिए: -

for $c in /company/customers/customer 
return data($c/@cno) 
10

आप विशेषता मान प्राप्त करने के लिए string का भी उपयोग कर सकते हैं:

for $c in /company/customers/customer 
    return $c/@cno/string() 
+0

मैं इसे काम करने में सक्षम था जहां डेटा में लपेटना() नहीं था। मुझे ऐसा लगता है क्योंकि मेरा पार्सर कड़ाई से पुराना xpath/xquery है। –

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