2013-04-17 23 views
21

Trong phần dưới XML:cách chọn giá trị thuộc tính của một nút trong 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> 

Tôi cần phải nhận được khách hàng không thuộc tính nào. Trong XPath Tôi biết nó là /company/customers/customer/@cno, trong XQuery Tôi đã thử dưới đây biểu hiện nhưng không làm việc cho tôi:

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

XQuery sử dụng XPath đơn giản; nỗ lực của bạn làm việc cho tôi. Những gì hiện 'trở lại $ c' cung cấp cho bạn? – Tomalak

+0

Tôi đang sử dụng phần mềm EditX cho điều này, nhưng nó hiển thị lỗi "Không thể tạo nút thuộc tính có cha mẹ là nút tài liệu". Bạn có thể vui lòng cho tôi biết trong đó công cụ bạn thử này, vì vậy tôi có thể chuyển sang công cụ đó. Có thể là vấn đề cụ thể của công cụ. –

+0

có thể trùng lặp của [Sử dụng XQuery/XPath để lấy giá trị thuộc tính của nút cha của một phần tử] (http://stackoverflow.com/questions/2166014/using-xquery-xpath-to-get-the-attribute-value-of -an-elements-parent-node) – Tomalak

Trả lời

40

Bạn nên sử dụng dữ liệu để chọn giá trị thuộc tính: -

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

Bạn cũng có thể sử dụng string để nhận giá trị thuộc tính:

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

Tôi đã có thể nhận được điều này để làm việc, nơi gói nó trong dữ liệu() không. Tôi nghĩ nó vì trình phân tích cú pháp của tôi là xpath/xquery cũ hơn. –