packages feed

HXQ-0.6: data/q1.xq

declare function fact ($n) { if $n=1 then 1 else $n*fact($n-1) };

declare variable $x := fact(10);

declare function f ( $name, $gpa ) {
   <student>{ $name/firstname/text(),
              ' ',$name/lastname/text(),
              ': ',$gpa
   }</student>
};

<students>{
    for $s in doc('data/cs.xml')//gradstudent
    order by $s/gpa descending, $s//lastname
    return f( $s/name, $s/gpa/text() ),
    $x
}</students>