2013-04-17 85 views
21

在下面的XML:如何在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使用plain XPath;你的嘗試適合我。什麼'返回$ c'給你? – Tomalak

+0

我爲此使用了EditX軟件,但它顯示錯誤「無法創建父級爲文檔節點的屬性節點。」您能否讓我知道您嘗試使用哪種工具,以便我可以切換到該工具。可能是工具特定的問題。 –

+0

[使用XQuery/XPath獲取元素父節點的屬性值]的可能重複(http://stackoverflow.com/questions/2166014/using-xquery-xpath-to-get-the-attribute-value-of -an-elements-parent-node) – 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

我能夠得到這個工作包裝它在data()沒有。我認爲它是因爲我的解析器嚴格老的xpath/xquery。 –

相關問題