1

重複の可能性:
XQueryがエラーを返す..?

以下はXMLファイルです-

<Continents>
  <Continent name="Asia">
    <Country name="Japan">
    <City name="Tokyo"><Desc>Tokoyo is a most populated City</Desc></City>
    <City name="Horishima"><Desc>What to say.. Faced the destruction due to Atom Bomb</Desc></City>
    </Country>
    <Country name="India">
    <City name="New Delhi"><Desc>Capital of India</Desc></City>
    <City name="Mumbai"><Desc>Financial Capital of India</Desc></City>
    <City name="Lucknow"><Desc>City of Nawabs</Desc></City>
    </Country>
  </Continent>  
</Continents>

国の都市をリストしたい="India"

私のXQueryFLWORコードは-

for $x in doc("Continent")/Continents/Continent
  where $x/Country/@name='India'
  return $x/Country/City/@name

私は次のように出力したいと思っています-

 name="New Delhi" name="Mumbai" name="Lucknow"

しかし、出力を-として取得します

 name="Tokyo" name="Horishima" name="New Delhi" name="Mumbai" name="Lucknow"

誰かが私が正しい出力を得るのを手伝ってくれる?また、別の行にそれを取得する方法は?

4

3 に答える 3

2

ここでほぼ同じ質問をしましたが、同じ答えがここにも当てはまります。あなたが望むものは:

doc("Continent")/Continents/Continent/Country[@name = 'India']/City/@name

それぞれの結果をそれぞれの行に表示したい場合は、これを試してください:

string-join(
  doc("Continent")/Continents/Continent/Country[@name = 'India']/City/@name,
  '&#10;'
)

これにより、次のようになります。

New Delhi
Mumbai
Lucknow
于 2012-05-03T12:52:31.633 に答える
1
/*/*/Country[@name='India']/City/concat('name="', @name, '" ')

: これは純粋な XPath 2.0 式でもあります。

于 2012-05-04T14:27:08.453 に答える
1

必要な結果を得るために、FLWOR を少し書き直すこともできます。

for $x in doc("Continent")/Continents/Continent/Country
where $x/@name='India'
return $x/City/@name

(/Country の部分を移動していることに注意してください)

必要に応じて、Leo が提案するように、XPath 式の代替をラップするのと同じ方法で、この FLWOR を文字列結合でラップできます。

于 2012-05-03T15:09:58.297 に答える