1

次の XML ファイルがあります。

<animals>
   <animal id="1" weight="56">Flipper</animal>
   <animal id="2" weight="230">Dumbo</animal>
   ...
</animals>

そして、重みだけを保持したい(したがって、「56 230 ...」が返されます)。私はこのリクエストを試しました:

//animal[@weight]

しかし、私はまだXMLコンテンツ全体を取得しています...私も試しました:

//animal/@weight

そして、私はこのエラーを受け取ります:

エラー SENR0001: 属性 'weight' に親要素がありません

ヒントは何ですか?

4

1 に答える 1

3

XQuery エンジンが 1 つ以上の XML ドキュメントを返すことを期待しているように見えます。属性ノードは XML 文書のルートに現れることができないので、それは不幸なことです。

(1) 属性ノードではなく、それらの値のみを返すようにクエリを作成してみてください。

for $w in //animal/@weight
return string($w)

エンジンが本当に XML 文書だけを返したい場合は、(1) もそれを満足させるものではありません。したがって、(2) XML 要素のシーケンスを返すことを試みることができます。

for $w in //animal/@weight
return <weight>{$w}</weight>

それでも満足できない場合は (3) 必要な文字列を XML ラッパーでラップすることができます。

<weights>
{ for $w in //animal/@weight return string($w) }
</weights>

それぞれを別の行に入れたい場合は、(4)

<weights> { 
  "&#xA;", 
  for $w in //animal/@weight 
  return (string($w), "&#xA;")
} </weights>
于 2012-12-17T15:07:36.133 に答える