0

以下はxmlファイルです-

<Countries>
  <Country>
    <Name>India</Name>
    <Capital>New Delhi</Capital>
  </Country>
  <Country>
    <Name>USA</Name>
    <Capital>Washington DC</Capital>
  </Country>
  <Country>
    <Name>England</Name>
    <Capital>London</Capital>
  </Country>
  <Country>
    <Name>Japan</Name>
    <Capital>Tokyo</Capital>
  </Country>
  <Country>
    <Name>Srilanka</Name>
    <Capital>Colombo</Capital>
  </Country>
</Countries>

XMLDBであるBaseXに保存しました。単純な DB のように、そこに格納していればselect、テーブルからデータを取得するための簡単なステートメントを記述したことになります。例えば:

select name, capital from country

両方の行を取得しました。右?XQuery を使用してこれを行うにはどうすればよいでしょうか。

4

3 に答える 3

1

リレーショナルデータベース(グラフィカルに「プレーンデータベース」として記述)では、すべてのクエリが入力としてテーブルを受け取り、出力としてテーブルを生成します。XMLデータベースでは、入力はXMLであり、出力はXMLです。したがって、作成するXMLを記述する必要があります。それが済んだら、あなたの質問に対する答えはイエスです:あなたは確かにその出力を生成するためにXQueryを書くことができます。

于 2012-07-06T13:14:59.393 に答える
1

nameすべてのandcapital要素のシーケンスが必要なようです:

 /Countries/Country/(Name|Capital)

このクエリによって生成される結果は次のとおりです。

<Name>India</Name>
<Capital>New Delhi</Capital>
<Name>USA</Name>
<Capital>Washington DC</Capital>
<Name>England</Name>
<Capital>London</Capital>
<Name>Japan</Name>
<Capital>Tokyo</Capital>
<Name>Srilanka</Name>
<Capital>Colombo</Capital>
于 2012-07-06T16:59:54.473 に答える
0

要素のない出力が必要な場合は、これを試してください

for $x in doc("Country")/Countries/Country
  return string-join( ($x/Name, $x/Capital), " - ")

出力は次のようになります -

`India - New Delhi USA - Washington DC England - London Japan - Tokyo Srilanka - Colombo`

それらを別々の行に入れたい場合は、これを使用する必要があります-

for $x in doc("Country")/Countries/Country
  return <li>{string-join( ($x/Name, $x/Capital), " - ")}</li>

代わりに、<li>他の関連するタグを使用できます。

于 2012-07-07T04:43:40.167 に答える