0

xml ファイルで Xquery コードを実行しようとすると、フィールドの 1 つで複数の結果が得られます。

ここに私のxmlファイルがあります

<Actors>
<Actor name="NTR">
    <Movie  TITLE="Yamadonga" Director="Rajamouli"></Movie>
        <Movie TITLE="AADI" Director="VV vinayak">
    </Movie>
</Actor>
<Actor name="Rajeev">
    <Movie  TITLE="Yamadonga" Director="Rajamouli" ></Movie>

</Actor>
<Actor name="mahesh">
    <Movie  TITLE="pokiri" Director="puri">
    </Movie>
</Actor>

私のxqueryファイル

<Director>
{
for $Movie in doc("actors.xml")/Actors/Actor/Movie
return
if($Movie/@TITLE=$title)
then
data($Movie/@Director)
else()
}
</Director>

最も重要なことは、私の結果です

<movies>
   <movie>
       <Title>Yamadonga</Title>
       <Actor>NTR</Actor>
       <Actor>Rajeev</Actor>
       <Director>Rajamouli Rajamouli</Director>
   </movie>
</movies>

director フィールドで値を 1 つだけ取得する方法は?

私の手順:- (../Movie/@TITLE) に対して個別の値関数を実行したところ、タイトルを表示するための答えが得られました。しかし、タイトルと監督は映画の属性であるため、一方を使用して他方にアクセスすることはできません。俳優を反復処理すると、1 つの映画に 1 人の監督を持つ 2 人の俳優が存在するため、監督名が 2 回出力されます。映画を反復処理するとき、それは属性ではないため、個別の値を使用できません。

4

2 に答える 2

1

あなたの XQuery は実際にはあまり効率的ではなく、読みやすいものでもありません。簡単な xpath を実行できます。

<Director>
{
data((doc("actors.xml")/Actors/Actor/Movie[@TITLE = $title])[1]/@Director)
}
</Director>
于 2013-03-04T21:45:10.410 に答える
0

これは、forが 2 つの映画を返しているためです。で XPath を使用してみませんdistinct-values()か?

<Director>
{
distinct-values(doc("actors.xml")/Actors/Actor/Movie[@TITLE=$title]/data(@Director))
}
</Director>
于 2013-03-04T21:42:52.707 に答える