HXQ-0.9.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

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

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.

connect :: FilePath -> IO ConnectionSource

Connect to the relational database in filepath

prepareSQL :: IConnection conn => conn -> String -> IO StatementSource

executeSQL :: Statement -> XSeq -> IO XSeqSource

The XQuery Interpreter with Database Connectivity

xqueryDB :: IConnection conn => String -> conn -> IO XSeqSource

Evaluate the XQuery with database connectivity using the interpreter.

xfileDB :: IConnection conn => String -> conn -> 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

shred :: IConnection conn => conn -> String -> String -> IO ()Source

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

printSchema :: IConnection conn => conn -> String -> IO ()Source

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

createIndex :: IConnection conn => conn -> String -> String -> IO ()Source

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