0

2 つの XML ファイルがあります。最初のファイルには気象測定値が含まれ、2 番目のファイルには位置データが含まれています。

メジャー.xml

<measure latitude="45.90298482482" longitude="8.92092094">
   ...
</measure>
<measure latitude="45.29848284" longitude="8.72474724">
   ...
</measure>
...

場所.xml

<location latlng="45.9029,8.9209">
    <address>8, Denver Road</address>
    <place>Goodcity</place>
</location>
<location latlng="45.2984,8.7247">
    <address>3, New Avenue</address>
    <place>Goodcity</place>
</location>

したがって、私がやりたいことは次のとおりです。特定の場所のすべての緯度経度を保存し、部分文字列を使用してそれに対応する測定値を取得しようとします。これが私が試したものですが、 0 を返し続けます:

for $l in //location
where $l/place/string() = 'Goodcity'
return
let $test := $l/@latlng/string() 
return
for $m in //measure
where concat(substring($m/@latitude/string(),0,8),',',substring($m/@longitude/string(),0,7)) = $test
return $m

何か案が?

susbtring(lat,0,8)EDIT : 問題は、私がandを使用しているという事実に起因するものではありませんsubstring(long,0,7)。私は自分の場所ファイルを知っており、これらは常に 4 桁の数値を返します。

EDIT 2:最終的には機能しますが、私のリクエストは本当に長いですが、それを簡素化する方法があると思いますか?

4

1 に答える 1

1

2 つの別個の XML ドキュメントがある場合、次のようなものが表示されると予想されます。

for $l in doc('location.xml')//location...

for $m in doc('measures.xml')//measure...

substring() を使用した比較は、非常にエラーが発生しやすいようです。45.90298482482 が 45.9030 ではなく 45.9029 に丸められるのはなぜですか? しかし、あなたは私たちよりも自分のデータをよく知っていると思います。

于 2012-12-23T17:12:31.393 に答える