1

私は xQuery にまったく慣れていないので、次のクエリを作成する必要があります。

各監督の DVD のタイトルを表示します。

私のxQueryは;

let $doc := doc("DVDStore.xml")//DVDTitle
return <Directors>{
    for $dir in $doc/Directors/Name    
        let $t := $doc[$dir = Directors/Name]/Title
        return <DVDTitles> {$dir} {$t} </DVDTitles>
    } </Directors>

DVDStore.xml は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<DVDStore>
    <DVDTitles>
        <DVDTitle>
            <Title>A. I. Artificial Intelligence</Title>
            <Date>2002-03-05</Date>
            <Studio>Universal Studios</Studio>
            <Rated>PG-13</Rated>
            <Code>1</Code>
            <Directors>
                <Name>Steven Spielberg</Name>                
            </Directors>
            <Starrings>
                <Name>Haley Joel Osment</Name>
                <Name>Jude Law</Name>
            </Starrings>
        </DVDTitle>
        <DVDTitle>
            <Title>Terminator 2-Judgment Day</Title>
            <Date>2001-01-01</Date>
            <Studio>Artisan Entertainment</Studio>
            <Rated>R</Rated>
            <Code>6</Code>
            <Directors>
                <Name>James Cameron</Name>                
            </Directors>
            <Starrings>
                <Name>Arnold Schwarzenegger</Name>
                <Name>Linda Hamilton</Name>
            </Starrings>
        </DVDTitle>
        <DVDTitle>
            <Title>Titanic</Title>
            <Date>1999-08-31</Date>
            <Studio>Paramount Home Video</Studio>
            <Rated>PG-13</Rated>
            <Code>2</Code>
            <Directors>
                <Name>James Cameron</Name>  
            </Directors>
            <Starrings>
                <Name>Leonardo DiCaprio</Name>
                <Name>Kate Winslet</Name>
            </Starrings>
        </DVDTitle>
    </DVDTitles>
</DVDStore>

次の出力が得られます。

<?xml version="1.0" encoding="UTF-8"?>
<Directors>
   <DVDTitles>
      <Name>Steven Spielberg</Name>
      <Title>A. I. Artificial Intelligence</Title>
   </DVDTitles>
   <DVDTitles>
      <Name>James Cameron</Name>
      <Title>Terminator 2-Judgment Day</Title>
      <Title>Titanic</Title>
   </DVDTitles>
   <DVDTitles>
      <Name>James Cameron</Name>
      <Title>Terminator 2-Judgment Day</Title>
      <Title>Titanic</Title>
   </DVDTitles>
</Directors>

問題は、1 人の監督が 2 つ以上の映画を監督した場合、監督したようJames Cameronに、両方のタイトルを監督Terminator 2-Judgment DayTitanicグループ化する必要があることです。

誰か助けてくれませんか?

4

2 に答える 2

1

解決策を見つけました。キーワードの個別の値がありませんでした。作業クエリは次のとおりです。

let $doc := doc("DVDStore.xml")//DVDTitle
return <Directors>{
    for $dir in distinct-values($doc/Directors/Name)
        let $t := $doc[$dir = Directors/Name]/Title
        return <DVDTitles> {$dir} {$t} </DVDTitles>
    } </Directors>
于 2013-04-25T03:44:30.100 に答える