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>