XML: Header 个标签到组

XML: Header tags to groups

我有一个 XML 这样的:

    <video id="647599250">
        <studio/>
        <director/>
        <actorRef>916503210</actorRef>
        <title>National Geographic's Mysteries of Egypt</title>
        <dvd>22</dvd>
        <laserdisk/>
        <laserdisk_stock/>
        <genre>special</genre>
        <rating>R</rating>
        <runtime>110</runtime>
        <user_rating>3</user_rating>
        <summary>Experience the magnificence of Egypt like never before!</summary>
        <details>Legendary actor and native Egyptian Omar Sharif and Kate Maberly join National Geographic's award-winning filmmakers to weave a fascinating story of a grandfather who enchants his granddaughter with tales of tombs and treasures. Travel back more than 4,000 years to a time when the Great Pyramids of Giza were built.</details>
        <vhs>15</vhs>
        <beta_stock>5</beta_stock>
        <year>1999</year>
        <vhs_stock>88</vhs_stock>
        <dvd_stock>22</dvd_stock>
        <beta>14</beta>
    </video>

有很多电影标签。

我是运行以下代码:

for $movie in result/videos//video
order by $movie/genre, $movie/user_rating descending
return $movie/title

产生:

<?xml version="1.0" encoding="UTF-8"?>
<title>Enemy of the State</title>
<title>Star Wars</title>
<title>The Fugitive</title>
<title>Clerks</title>
<title>Six Days Seven Nights</title>
<title>Doquissåpan, avsnitt 1</title>
<title>Doquissåpan, avsnitt 2</title>
<title>Doquissåpan, avsnitt 4</title>
<title>Contact</title>
<title>2001: A Space Odyssey</title>
<title>Pinocchio</title>
<title>MUPPET TREASURE ISLAND</title>
<title>Au Revoir Les Enfants</title>
<title>La Femme Nikita</title>
<title>Seven</title>
<title>The Fear</title>
<title>Yellow Submarine</title>
<title>Carmen</title>
<title>Everest</title>
<title>National Geographic's Mysteries of Egypt</title>

此序列已按流派排序,然后在流派中按 user_rating 排序。我想知道是否可以为每个类型的电影组创建某种 header,像这样:

<genre genre="action">
<title>Enemy of the State</title>
<title>Star Wars</title >
<title>The Fugitive</title>
</genre > 
<genre genre="comedy">
<title>Clerks</title>
<title>Six Days Seven Nights</title>
</genre> 
<genre genre="drama">
<title>Contact</title>
<title>2001: A Space Odyssey</title>
</genre> 
<genre genre="family">
<title>Pinocchio</title>
<title>MUPPET TREASURE ISLAND</title>
</genre>
<genre genre="foreign">
<title>Au Revoir Les Enfants</title>
<title>La Femme Nikita</title>
</genre> 
<genre genre="horror">
<title>Seven</title>
<title>The Fear</title>
</genre> 
<genre genre="musical">
<title>Yellow Submarine</title>
<title>Carmen</title>
</genre> 
<genre genre="special">
<title>Everest</title>
<title>National Geographic’s Mysteries of Egypt</title>
</genre>
<genre genre="documentary">
<title>Doquissåpan, avsnitt 1</title> 
<title>Doquissåpan, avsnitt 2</title> 
<title>Doquissåpan, avsnitt 4</title>
</genre>

试试这个:

for $genre in distinct-values(result/videos/video/genre)
order by $genre
return
    <genre genre="{ data($genre) }">
    {
        for $movie in result/videos/video
        where $movie/genre = $genre
        order by $movie/user_rating
        return $movie/title
    }
    </genre>

也可以写成:

for $genre in distinct-values(result/videos/video/genre)
order by $genre
return 
    <genre genre="{ data($genre) }">
    {
        for $movie in result/videos/video[genre=$genre]            
        order by $movie/user_rating
        return $movie/title
    }
    </genre>