1

以下の 2 つの xml ファイル (fruit.xml と toy.xml) があります。xquery を使用して、日本で生産されている果物とおもちゃを取得したいと考えていました。

期待される結果は以下のようになるはずです。おもちゃは果物の前に最初にリストする必要があります。

 <JapanProduct>
    <Prod type="Toy">Digimon<Prod>
    <Prod type="Toy">Doll<Prod>
    <Prod type="Fruit">Peach<Prod>
</JapanProduct>

以下は、私が書いた xquery コードで、現在ここでスタックしています。上記のように期待される結果を生成するにはどうすればよいですか?

for $f in doc("Fruit.xml")//Produce
for $t in doc("Toy.xml")//Produce

where $f[Country="Japan"] and $t[Country="Japan"]
return element JapanProduct {attribute Prod{if ($f[country=Japan"])then }

Fruit.XML
<fruitsOrigin>
  <Produce>      
     <Country>Australia</Country>
     <Prod>Kiwi</Prod>
     <Size>M</Size>
  </Produce>
  <Produce>
     <Country>China</Country>
     <Prod>Pear</Prod>
     <Size>M</Size>    
  </Produce>
  <Produce>
     <Country>Japan</Country>
     <Prod>Peach</Prod>
     <Size>L</Size> 
  </Produce>   
</fruitsOrigin>

Toy.XML
<ToyMaker>
   <Produce>
     <Country>Australia</Country>
     <Prod>Lego</Prod>
     <cost>$15</cost>
   </Produce>
   <Produce>
     <Country>Japan</Country>
     <Prod>Doll</Prod>
     <cost>$20</cost>      
   </Produce>
   <Produce>
     <Country>Japan</Country>
     <Prod>Digimon</Prod>
     <cost>$17</cost>
   </Produce>
</ToyMaker>
4

1 に答える 1

0

以下の作品..

<JapanProduct>
{
for $t in doc("Toy.xml")//Produce
  where $t[Country='Japan'] 
  order by $t
  return 
    <Prod type="Toy">{$t/Prod/string()}</Prod>

}
{
for $f in doc("Fruit.xml")//Produce
  where $f[Country='Japan'] 
  order by $f
  return 
    <Prod type="Fruit">{$f/Prod/string()}</Prod>

}
</JapanProduct>

ここで試してみることができますhttp://basex.org/products/live-demo/

于 2012-10-05T08:51:07.430 に答える