I am working on the following xquery. For each studio, I need to list each dvd title with its review description. Here is what I have so far.
<Studios>
{
for $studio in distinct-values(doc("dvdtitles.xml")//dvdstore/dvd/studioproduction)
return
<studio>
<studioproduction> {$studio} </studioproduction>
<dvdtitles>
{
for $dvd in doc("dvdtitles.xml")//dvd[studioproduction = $studio], $title in $dvd/title
return $title
} </dvdtitles>
<comments>
{for $c in doc("dvdtitles.xml")//dvd[studioproduction = $studio], $title in $c/title, $reviewTitle in doc("dvdtitles.xml")//review/title,
$y in //review/comments
where $title = $reviewTitle
return $y
} </comments>
</studio> }
</Studios>
After running the xquery in BaseX, I get the following results:
<Studios>
<studio>
<studioproduction>Universal Studios</studioproduction>
<dvdtitles>
<title>A.I. Artificial Intelligence</title>
</dvdtitles>
<comments>
<comments>Amazing, visually stunning and thought-inspiring</comments>
<comments>What a JOKE!</comments>
<comments>A Disney film that deserves its Best Picture Nomination</comments>
<comments>Disappointed</comments>
<comments>This movie is insulting</comments>
<comments>An excellent adaptation</comments>
<comments>A tremendous disappointment</comments>
<comments>YOU'LL FALL IN LOVE WITH "GHOST!"</comments>
I need to list studio and title with its review description. I am trying to figure out how to tie it together in the comments section of the xquery. That is where I am getting confused.
Here is the xml document.
<?xml version="1.0"?>
<dvdstore>
<dvd>
<title>A.I. Artificial Intelligence</title>
<releaseDate>2002-03-05</releaseDate>
<studioproduction>Universal Studios</studioproduction>
<rated>PG-13</rated>
<regionCode>1</regionCode>
<director>Steven Spielberg</director>
<starring>Haley Joel Osment</starring>
<starring>Jude Law</starring>
</dvd>
<dvd>
<title>Beauty and the Beast</title>
<releaseDate>2002-10-08</releaseDate>
<studioproduction>Walt Disney Home Video</studioproduction>
<rated>G</rated>
<regionCode>4</regionCode>
<director>Kril Wise</director>
<director>Gary Trousdale</director>
<starring>Paige O'Hara</starring>
<starring>Robby Benson</starring>
</dvd>
<review>
<title>A.I. Artificial Intelligence</title>
<customer_rating>5</customer_rating>
<reviewer>Andrew</reviewer>
<reviewDate>2002-01-31</reviewDate>
<location>San Diego, CA</location>
<comments>Amazing, visually stunning and thought-inspiring</comments>
</review>
<review>
<title>Beauty and the Beast</title>
<customer_rating>5</customer_rating>
<reviewer>George</reviewer>
<reviewDate>2002-02-27</reviewDate>
<location>Baltimore, MD</location>
<comments>A Disney film that deserves its Best Picture Nomination</comments>
</review>
</dvdstore>
<comments/>
element? Shouldn't it be somehow associated to a title? Could you please post some expected output? As I don't know the exact question it is not answerable to me at the moment, but it sounds an awful lot like you actually want to usegroup by
: docs.basex.org/wiki/XQuery_3.0#Group_By – dirkk