Flor de retorno aninhada XQuery

Estou preso a um exercício XQuery aparentemente simples. Abaixo de uma parte do arquivo XML.

<Ships>
<Class name = "Kongo" type = "bc" country = "Japan" numGuns = "8" 
        bore = "14" displacement = "32000">
    <Ship name = "Kongo" launched = "1913" />
    <Ship name = "Hiei" launched = "1914" />
    <Ship name = "Kirishima" launched = "1915">
        <Battle outcome = "sunk">Guadalcanal</Battle>
    </Ship>
    <Ship name = "Haruna" launched = "1915" />
</Class>
</Ships>

Eu estou tentando transformar o XML em um XHTML com os atributos de nome de classe (Kongo) como cabeçalho e uma lista enumerada dos nomes de navios filhos e anos de execução:

<h1>Kongo</h1>
<table>
<tr><th>Name</th><th>Launched</th><tr>
<tr><td>Kongo</td><td>1913</td></tr>
<tr><td>Hiei</td><td>1914</td></tr>
<tr><td>Kirishima</td><td>1915</td></tr>
<tr><td>Haruna</td><td>1915</td></tr>

<h1>Next Class name</h1>
....

Eu estou preso com o seguinte retorno aninhado-FLOWR XQuery:

declare option output "method=xml";
declare option output "doctype-public=-//W3C//DTD XHTML 1.0 Strict//EN";
declare option output "doctype-system=http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";
declare option output "omit-xml-declaration=no";
declare option output "indent=yes";

<html xml:lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>XQ-7</title>
  </head>
  <body>
       {for $class in doc("xml/battleships.xml")/Ships/Class 
    let $cname := data($class/@name) 
    let $sname := data($class/Ship/@name)
    let $slaunched := data($class/Ship/@launched)
      return   
      <h1>{$cname}</h1>
      <table>
      {for $ship in doc("xmlbattleships.xml")/Ships/Class/Ship
      where data($ship/../@name) eq $cname
        let $sname := data($ship/@name)
        let $slaunched := data($ship/@launched)
        return
         <tr><td>{$sname}</td><td>{$slaunched}</td></tr>
  }
</table>
    }
   </body>
</html>

questionAnswers(2)

yourAnswerToTheQuestion