Generating HTML

Create a 10x10 table and color the cells

xquery version "1.0"; (: $Id: table.xq 6434 2007-08-28 18:59:23Z ellefj $ :) (: An example found in Saxon: creates a table with 10x10 cells :) declare namespace f="http://my-namespaces.org"; declare function f:background-color($x as xs:double, $y as xs:integer) as xs:string { if($x mod 2 + $y mod 2 <= 0) then "lightgreen" else if($y mod 2 <= 0) then "yellow" else if($x mod 2 <= 0) then "lightblue" else "white" }; <body> <table>{ for $y in 1 to 10 return <tr> { for $x in 1 to 10 return let $bg := f:background-color($x, $y), $prod := $x * $y return <td bgcolor="{$bg}"> {if ($y > 1 and $x > 1) then $prod else <b>{$prod}</b>} </td> } </tr> }</table> </body>

Create a multiplication table

xquery version "1.0"; declare option exist:serialize "method=html5 media-type=text/html"; declare variable $max := 20; <table border="1" width="100%"> <th>1 x 1</th> { for $i in (1 to $max) return <th>{ $i}</th> } { for $a in (1 to $max) return <tr> <th>{ $a,"*"}</th> { for $b in (1 to $max) return if ($a = $b) then <td bgcolor="#F46978">{$a * $b}</td> else if ($a mod 2) then <td bgcolor="#A46978">{$a * $b}</td> else <td bgcolor="#A09224">{$a * $b}</td> } </tr> } </table>

Generate a list of the acts and scenes in Hamlet, with the roles appearing in each scene

declare option exist:serialize "method=html5 media-type=text/html"; <html> <body>{ for $act in doc("/db/apps/demo/data/hamlet.xml")/PLAY/ACT return <ul> <li> <h2>{$act/TITLE/text()}</h2> <ul> { for $scene in $act/SCENE return <li> <h3>{$scene/TITLE/text()}</h3> <ul> { for $speaker in distinct-values($scene//SPEAKER) order by $speaker return <li>{$speaker}</li> } </ul> </li> } </ul> </li> </ul> }</body> </html>