xquery version "1.0";
declare option exist:serialize "expand-xincludes=no";
declare namespace session="http://exist-db.org/xquery/session";
declare namespace request="http://exist-db.org/xquery/request";
declare namespace util="http://exist-db.org/xquery/util";
declare namespace i18n="http://apache.org/cocoon/i18n/2.1";
import module namespace ristenutil="http://www.risten.no/shared/util" at "../xquery/ristenutil.xqm";
(: Create filter expression from query term :)
declare function local:filter-expr($term as xs:string) as xs:string
{
let $f := "label",
$t := concat("'", $term, "'")
return
concat(".//", $f, " &= ", $t)
};
(: Assemble the query string :)
declare function local:build-query($term as xs:string)
as xs:string
{
let $expr := local:filter-expr($term),
$coll := ristenutil:get-collection()
return
if ( string-length($term) = 0 ) then
concat("for $r in collection('",
$coll,
"')/classification return $r")
else
concat("for $r in collection('",
$coll,
"')/classification[",
$expr,
"] return $r")
};
(: Present an overview of query results :)
declare function local:displayHitlist($hits as node()+)
as element()
{
let $lang := request:get-parameter("showlang", "all"),
$showclass := request:get-parameter("class", "all"),
$collID := session:get-attribute("collection"),
$termcoll := ristenutil:get-termcolls-from-class( $collID ),
$classlangs := ristenutil:get-class-langs( $collID )
return
Query: «{$query}» !