2013-04-17 13 views
21

は:XQueryでノードの属性値を選択する方法は?以下のXMLで

<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ので 私はXQueryで、私は表現の下にしようとしましたが、私のために動作しませんでした、それは/company/customers/customer/@cno知っている:

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

XQueryはプレーンXPathを使用します。あなたの試みは私のために働く。 'return $ 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であるため、そのことを考える。 –