2013-04-17 4 views
21

:XQuery'deki bir düğümün özellik değeri nasıl seçilir? Aşağıdaki XML'de

<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> 

Bir niteliktir müşterinin hayır almak gerekir. XPath yılında Ben XQuery I ifadesi altında denedim ama benim için işe yaramadı, /company/customers/customer/@cno olduğunu biliyoruz:

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

XQuery plain XPath kullanır; Senin girişimin benim için çalışıyor. '$ C 'size ne verir? – Tomalak

+0

Bunun için EditX yazılımı kullanıyorum, ancak hata "Üst öğe, belge düğümü olan bir öznitelik düğümü oluşturamıyor." Bunu hangi aracı denediğiniz konusunda bilgilendirir misiniz, o yüzden bu araca geçebilirim. Bu araç belirli bir konu olabilir. –

+0

olası bir kopyası [Bir öğenin ana düğümünün özellik değerini almak için XQuery/XPath kullanma] (http://stackoverflow.com/questions/2166014/using-xquery-xpath-to-get-the-attribute-value-of -an-elements-parent-node) – Tomalak

cevap

40
Sen özellik değerini almak için veri kullanmalıdır

: -

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

You Özellik değerini edinmek için de string numaralı telefonu kullanabilirsiniz:

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

Bunu veri() 'de sarmanın işe yaramadığı yerde işe yaratabildim. Ben onun çözümleyici kesinlikle eski xpath/xquery olduğundan düşünüyorum. –