{--------------------------------------------------------------
-
- A main program to test the XQuery processor
- Programmer: Leonidas Fegaras (fegaras@cse.uta.edu)
- Date: 03/30/2008
-
---------------------------------------------------------------}
{-# OPTIONS_GHC -fth #-}
module Main where
import XML.HXQ.XQuery
f(d,s) = $(xe "{$s//firstname/text(),' ',$s//lastname/text()}")
main = do a <- $(xq (" for $s in doc('data/cs.xml')//gradstudent "
++" order by $s/gpa descending, $s//lastname "
++" return {$s//firstname/text(),' ', "
++" $s//lastname/text(),' ', "
++" $s/gpa/text()} "))
putXSeq a
let query name = $(xq " doc('data/cs.xml')//gradstudent[.//lastname = $name]//firstname ")
b <- query $(xe " 'Galanis' ")
putXSeq b
c <- $(xq (" { "
++" let $d := doc('data/cs.xml') "
++" for $s in $d//gradstudent "
++" where $s/gpa = 4.0 "
++" return f($d//deptname,$s) "
++" } "))
putXSeq c
let q file = $(xq (" let $d := doc($file)//gradstudent "
++" return ($d/../deptname,count($d)) "))
d <- q $(xe " 'data/cs.xml' ")
putXSeq d
putStrLn "Type an XQuery:"
iquery <- getLine -- read an XQuery from input
e <- xquery iquery -- evaluate it using the XQuery interpreter
putXSeq e