HXQ-0.11.0: A Compiler from XQuery to Haskell

Text.XML.HXQ.XQuery

Contents

Description

HXQ is a fast and space-efficient compiler from XQuery (the standard query language for XML) to embedded Haskell code. The translation is based on Haskell templates. It also provides an interpreter for evaluating ad-hoc XQueries read from input or from files and optional database connectivity using HDBC. For more information, look at http://lambda.uta.edu/HXQ/.

Synopsis

The XML Data Representation

data XTree Source

A rose tree representation of XML data. An XML element is: XElem tagname atributes preorder parent children. The preorder numbering is the document order of elements. The parent is a cyclic reference to the parent element.

Constructors

XElem !Tag !AttList !Int XTree [XTree]

an XML tree node (element)

XText !String

an XML tree leaf (PCDATA)

XInt !Int

an XML tree leaf (int)

XFloat !Float

an XML tree leaf (float)

XBool !Bool

an XML tree leaf (boolean)

XPI Tag String

processing instruction

XGERef Tag

general entity reference

XComment String

comment

XError String

error report

XNull

null value

XNoPad

marker for no padding in XSeq

Instances

type XSeq = [XTree]Source

type AttList = [(Name, String)]Source

putXSeq :: XSeq -> IO ()Source

Print the XQuery result (which is a sequence of XML fragments) without buffering.

The XQuery Compiler

xq :: String -> Q ExpSource

Run an XQuery that may read XML documents. When evaluated, it returns IO XSeq.

xe :: String -> Q ExpSource

Run an XQuery expression that does not perform IO. When evaluated, it returns XSeq.

The XQuery Interpreter

xquery :: String -> IO XSeqSource

Evaluate the XQuery using the interpreter.

xfile :: String -> IO XSeqSource

Read an XQuery from a file and run it using the interpreter.

The XQuery Compiler with Database Connectivity

xqdb :: String -> Q ExpSource

Run an XQuery that reads XML documents and queries databases. When evaluated, it returns (IConnection conn) => conn -> IO XSeq.

The XQuery Interpreter with Database Connectivity

xqueryDB :: String -> Connection -> IO XSeqSource

Evaluate the XQuery with database connectivity using the interpreter.

xfileDB :: String -> Connection -> IO XSeqSource

Read an XQuery with database connectivity from a file and run it using the interpreter.

Shredding and Publishing XML Documents Using a Relational Database

genSchema :: Connection -> String -> String -> IO TableSource

Create a schema for an XML document into the database under the given name.

shred :: Connection -> String -> String -> IO ()Source

Store an XML document into the database under the given name.

shredC :: String -> String -> String -> Q ExpSource

Store an XML document into the database under the given name. Generates Haskell code.

printSchema :: Connection -> String -> IO ()Source

Print the relational schema of the XML document stored in the database under the given name

createIndex :: Connection -> String -> String -> IO ()Source

Create a secondary index on tagname for the shredded document under the given name..

Other Functions

data XMLEvent Source

Constructors

StartEvent Name [(Name, String)] 
EmptyEvent Name [(Name, String)] 
EndEvent Name 
TextEvent String 
PIEvent Name String 
GERefEvent Name 
CommentEvent String 
ErrorEvent String 

connect :: FilePath -> IO ConnectionSource

Connect to the relational database in filepath

commit :: conn -> IO ()Source

rollback :: conn -> IO ()Source

prepareSQL :: Connection -> String -> IO StatementSource

executeSQL :: Statement -> XSeq -> IO XSeqSource