view software/eXist/webapp/mpdl/_stuff/testDev/controller.xql @ 7:5589d865af7a

Erstellung XQL/XSL Applikation
author Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
date Tue, 08 Feb 2011 15:16:46 +0100
parents
children
line wrap: on
line source

xquery version "1.0";

(: Controller XQuery for the mpdl application. :)

let $id := "blabla"

return
if ($exist:path eq '/test.xql') 
then
  <dispatch xmlns="http://exist.sourceforge.net/NS/exist">
    <forward url="test2.xql">
      <add-parameter name="id" value="{$exist:resource}"/>
    </forward>
  </dispatch>
else if (starts-with($exist:path, '/ir/')) then
  <dispatch xmlns="http://exist.sourceforge.net/NS/exist">
    <forward url="/test">
      <add-parameter name="doc" value="{$exist:resource}"/>
    </forward>
  </dispatch>
else if ($exist:resource eq 'execute') then
    let $query := request:get-parameter("qu", ())
    let $startTime := util:system-time()
    return
        <dispatch xmlns="http://exist.sourceforge.net/NS/exist">
			<!-- Query is executed by XQueryServlet -->
            <forward servlet="XQueryServlet">
				<!-- Query is passed via the attribute 'xquery.source' -->
                <set-attribute name="xquery.source" value="{$query}"/>
				<!-- Results should be written into attribute 'results' -->
				<set-attribute name="xquery.attribute" value="results"/>
				<clear-attribute name="results"/>
				<!-- Errors should be passed through instead of terminating the request -->
				<set-attribute name="xquery.report-errors" value="yes"/>
            </forward>
			<view>
				<!-- Post process the result: store it into the HTTP session
					and return the number of hits only. -->
				<forward url="session.xql">
					<clear-attribute name="xquery.source"/>
					<clear-attribute name="xquery.attribute"/>
					<set-attribute name="elapsed" 
						value="{string(seconds-from-duration(util:system-time() - $startTime))}"/>
				</forward>
			</view>
        </dispatch>
(: Retrieve an item from the query results stored in the HTTP session. The
	format of the URL will be /sandbox/results/X, where X is the number of the
	item in the result set :)
else if (starts-with($exist:path, '/results/')) then
	<dispatch xmlns="http://exist.sourceforge.net/NS/exist">
		<forward url="../session.xql">
			<add-parameter name="num" value="{$exist:resource}"/>
		</forward>
	</dispatch>
else if (starts-with($exist:path, '/scripts/yui')) then
    <dispatch xmlns="http://exist.sourceforge.net/NS/exist">
		<forward url="/{replace($exist:path, '(/scripts/yui/.*)$', '$1')}"/>
	</dispatch>
else
    (: everything else is passed through :)
    <ignore xmlns="http://exist.sourceforge.net/NS/exist">
        <cache-control cache="yes"/>
    </ignore>