hxt-8.3.0: doc/hdoc/src/Text-XML-HXT-DOM-TypeDefs.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
<title>Haskell Code by HsColour</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
<a name="line-2"></a>
<a name="line-3"></a><span class='comment'>{- |
<a name="line-4"></a> Module : Text.XML.HXT.DOM.TypeDefs
<a name="line-5"></a> Copyright : Copyright (C) 2008 Uwe Schmidt
<a name="line-6"></a> License : MIT
<a name="line-7"></a>
<a name="line-8"></a> Maintainer : Uwe Schmidt (uwe@fh-wedel.de)
<a name="line-9"></a> Stability : stable
<a name="line-10"></a> Portability: portable
<a name="line-11"></a>
<a name="line-12"></a> The core data types of the HXT DOM.
<a name="line-13"></a>
<a name="line-14"></a>-}</span>
<a name="line-15"></a>
<a name="line-16"></a><span class='comment'>-- ------------------------------------------------------------</span>
<a name="line-17"></a>
<a name="line-18"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>
<a name="line-19"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>AssocList</span>
<a name="line-20"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>
<a name="line-21"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>QualifiedName</span>
<a name="line-22"></a> <span class='layout'>)</span>
<a name="line-23"></a>
<a name="line-24"></a><span class='keyword'>where</span>
<a name="line-25"></a>
<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Parallel</span><span class='varop'>.</span><span class='conid'>Strategies</span>
<a name="line-27"></a>
<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>AssocList</span>
<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Tree</span><span class='varop'>.</span><span class='conid'>NTree</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>
<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Typeable</span>
<a name="line-31"></a>
<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>QualifiedName</span>
<a name="line-33"></a>
<a name="line-34"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
<a name="line-35"></a><span class='comment'>--</span>
<a name="line-36"></a><span class='comment'>-- Basic types for xml tree and filters</span>
<a name="line-37"></a>
<a name="line-38"></a><span class='comment'>-- | Node of xml tree representation</span>
<a name="line-39"></a>
<a name="line-40"></a><a name="XmlTree"></a><span class='keyword'>type</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>=</span> <span class='conid'>NTree</span> <span class='conid'>XNode</span>
<a name="line-41"></a>
<a name="line-42"></a><span class='comment'>-- | List of nodes of xml tree representation</span>
<a name="line-43"></a>
<a name="line-44"></a><a name="XmlTrees"></a><span class='keyword'>type</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>=</span> <span class='conid'>NTrees</span> <span class='conid'>XNode</span>
<a name="line-45"></a>
<a name="line-46"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
<a name="line-47"></a><span class='comment'>--</span>
<a name="line-48"></a><span class='comment'>-- XNode</span>
<a name="line-49"></a>
<a name="line-50"></a><span class='comment'>-- | Represents elements</span>
<a name="line-51"></a>
<a name="line-52"></a><a name="XNode"></a><span class='keyword'>data</span> <span class='conid'>XNode</span> <span class='keyglyph'>=</span> <span class='conid'>XText</span> <span class='conid'>String</span> <span class='comment'>-- ^ ordinary text (leaf)</span>
<a name="line-53"></a> <span class='keyglyph'>|</span> <span class='conid'>XCharRef</span> <span class='conid'>Int</span> <span class='comment'>-- ^ character reference (leaf)</span>
<a name="line-54"></a> <span class='keyglyph'>|</span> <span class='conid'>XEntityRef</span> <span class='conid'>String</span> <span class='comment'>-- ^ entity reference (leaf)</span>
<a name="line-55"></a> <span class='keyglyph'>|</span> <span class='conid'>XCmt</span> <span class='conid'>String</span> <span class='comment'>-- ^ comment (leaf)</span>
<a name="line-56"></a> <span class='keyglyph'>|</span> <span class='conid'>XCdata</span> <span class='conid'>String</span> <span class='comment'>-- ^ CDATA section (leaf)</span>
<a name="line-57"></a> <span class='keyglyph'>|</span> <span class='conid'>XPi</span> <span class='conid'>QName</span> <span class='conid'>XmlTrees</span> <span class='comment'>-- ^ Processing Instr with qualified name (leaf)</span>
<a name="line-58"></a> <span class='comment'>-- with list of attributes.</span>
<a name="line-59"></a> <span class='comment'>-- If tag name is xml, attributs are \"version\", \"encoding\", \"standalone\",</span>
<a name="line-60"></a> <span class='comment'>-- else attribute list is empty, content is a text child node</span>
<a name="line-61"></a> <span class='keyglyph'>|</span> <span class='conid'>XTag</span> <span class='conid'>QName</span> <span class='conid'>XmlTrees</span> <span class='comment'>-- ^ tag with qualified name and list of attributes (inner node or leaf)</span>
<a name="line-62"></a> <span class='keyglyph'>|</span> <span class='conid'>XDTD</span> <span class='conid'>DTDElem</span> <span class='conid'>Attributes</span> <span class='comment'>-- ^ DTD element with assoc list for dtd element features</span>
<a name="line-63"></a> <span class='keyglyph'>|</span> <span class='conid'>XAttr</span> <span class='conid'>QName</span> <span class='comment'>-- ^ attribute with qualified name, the attribute value is stored in children</span>
<a name="line-64"></a> <span class='keyglyph'>|</span> <span class='conid'>XError</span> <span class='conid'>Int</span> <span class='conid'>String</span> <span class='comment'>-- ^ error message with level and text</span>
<a name="line-65"></a> <span class='keyword'>deriving</span> <span class='layout'>(</span><span class='conid'>Eq</span><span class='layout'>,</span> <span class='conid'>Ord</span><span class='layout'>,</span> <span class='conid'>Show</span><span class='layout'>,</span> <span class='conid'>Read</span><span class='layout'>,</span> <span class='conid'>Typeable</span><span class='layout'>)</span>
<a name="line-66"></a>
<a name="line-67"></a><span class='keyword'>instance</span> <span class='conid'>NFData</span> <span class='conid'>XNode</span> <span class='keyword'>where</span>
<a name="line-68"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>s</span>
<a name="line-69"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XCharRef</span> <span class='varid'>i</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>i</span>
<a name="line-70"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XEntityRef</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>n</span>
<a name="line-71"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XCmt</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>c</span>
<a name="line-72"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XCdata</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>s</span>
<a name="line-73"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XPi</span> <span class='varid'>qn</span> <span class='varid'>ts</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>qn</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>ts</span>
<a name="line-74"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>qn</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>qn</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>cs</span>
<a name="line-75"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>de</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>de</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>al</span>
<a name="line-76"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>qn</span>
<a name="line-77"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='varid'>n</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>n</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>e</span>
<a name="line-78"></a>
<a name="line-79"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
<a name="line-80"></a><span class='comment'>--</span>
<a name="line-81"></a><span class='comment'>-- DTDElem</span>
<a name="line-82"></a>
<a name="line-83"></a><span class='comment'>-- | Represents a DTD element</span>
<a name="line-84"></a>
<a name="line-85"></a><a name="DTDElem"></a><span class='keyword'>data</span> <span class='conid'>DTDElem</span> <span class='keyglyph'>=</span> <span class='conid'>DOCTYPE</span> <span class='comment'>-- ^ attr: name, system, public, XDTD elems as children</span>
<a name="line-86"></a> <span class='keyglyph'>|</span> <span class='conid'>ELEMENT</span> <span class='comment'>-- ^ attr: name, kind</span>
<a name="line-87"></a> <span class='comment'>--</span>
<a name="line-88"></a> <span class='comment'>-- name: element name</span>
<a name="line-89"></a> <span class='comment'>--</span>
<a name="line-90"></a> <span class='comment'>-- kind: \"EMPTY\" | \"ANY\" | \"\#PCDATA\" | children | mixed</span>
<a name="line-91"></a> <span class='keyglyph'>|</span> <span class='conid'>CONTENT</span> <span class='comment'>-- ^ element content</span>
<a name="line-92"></a> <span class='comment'>--</span>
<a name="line-93"></a> <span class='comment'>-- attr: kind, modifier</span>
<a name="line-94"></a> <span class='comment'>--</span>
<a name="line-95"></a> <span class='comment'>-- modifier: \"\" | \"?\" | \"*\" | \"+\"</span>
<a name="line-96"></a> <span class='comment'>--</span>
<a name="line-97"></a> <span class='comment'>-- kind: seq | choice</span>
<a name="line-98"></a> <span class='keyglyph'>|</span> <span class='conid'>ATTLIST</span> <span class='comment'>-- ^ attributes:</span>
<a name="line-99"></a> <span class='comment'>-- name - name of element</span>
<a name="line-100"></a> <span class='comment'>--</span>
<a name="line-101"></a> <span class='comment'>-- value - name of attribute</span>
<a name="line-102"></a> <span class='comment'>--</span>
<a name="line-103"></a> <span class='comment'>-- type: \"CDATA\" | \"ID\" | \"IDREF\" | \"IDREFS\" | \"ENTITY\" | \"ENTITIES\" |</span>
<a name="line-104"></a> <span class='comment'>--</span>
<a name="line-105"></a> <span class='comment'>-- \"NMTOKEN\" | \"NMTOKENS\" |\"NOTATION\" | \"ENUMTYPE\"</span>
<a name="line-106"></a> <span class='comment'>--</span>
<a name="line-107"></a> <span class='comment'>-- kind: \"#REQUIRED\" | \"#IMPLIED\" | \"DEFAULT\"</span>
<a name="line-108"></a> <span class='keyglyph'>|</span> <span class='conid'>ENTITY</span> <span class='comment'>-- ^ for entity declarations</span>
<a name="line-109"></a> <span class='keyglyph'>|</span> <span class='conid'>PENTITY</span> <span class='comment'>-- ^ for parameter entity declarations</span>
<a name="line-110"></a> <span class='keyglyph'>|</span> <span class='conid'>NOTATION</span> <span class='comment'>-- ^ for notations</span>
<a name="line-111"></a> <span class='keyglyph'>|</span> <span class='conid'>CONDSECT</span> <span class='comment'>-- ^ for INCLUDEs, IGNOREs and peRefs: attr: type</span>
<a name="line-112"></a> <span class='comment'>--</span>
<a name="line-113"></a> <span class='comment'>-- type = INCLUDE, IGNORE or %...;</span>
<a name="line-114"></a> <span class='keyglyph'>|</span> <span class='conid'>NAME</span> <span class='comment'>-- ^ attr: name</span>
<a name="line-115"></a> <span class='comment'>--</span>
<a name="line-116"></a> <span class='comment'>-- for lists of names in notation types or nmtokens in enumeration types</span>
<a name="line-117"></a> <span class='keyglyph'>|</span> <span class='conid'>PEREF</span> <span class='comment'>-- ^ for Parameter Entity References in DTDs</span>
<a name="line-118"></a> <span class='keyword'>deriving</span> <span class='layout'>(</span><span class='conid'>Eq</span><span class='layout'>,</span> <span class='conid'>Ord</span><span class='layout'>,</span> <span class='conid'>Show</span><span class='layout'>,</span> <span class='conid'>Read</span><span class='layout'>,</span> <span class='conid'>Typeable</span><span class='layout'>)</span>
<a name="line-119"></a>
<a name="line-120"></a><span class='keyword'>instance</span> <span class='conid'>NFData</span> <span class='conid'>DTDElem</span>
<a name="line-121"></a>
<a name="line-122"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
<a name="line-123"></a>
<a name="line-124"></a><span class='comment'>-- | Attribute list</span>
<a name="line-125"></a><span class='comment'>--</span>
<a name="line-126"></a><span class='comment'>-- used for storing option lists and features of DTD parts</span>
<a name="line-127"></a>
<a name="line-128"></a><a name="Attributes"></a><span class='keyword'>type</span> <span class='conid'>Attributes</span> <span class='keyglyph'>=</span> <span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>String</span>
<a name="line-129"></a>
<a name="line-130"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
<a name="line-131"></a><span class='comment'>--</span>
<a name="line-132"></a><span class='comment'>-- Constants for error levels</span>
<a name="line-133"></a>
<a name="line-134"></a><a name="c_ok"></a><span class='comment'>-- | no error, everything is ok</span>
<a name="line-135"></a><span class='definition'>c_ok</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span>
<a name="line-136"></a><span class='definition'>c_ok</span> <span class='keyglyph'>=</span> <span class='num'>0</span>
<a name="line-137"></a>
<a name="line-138"></a><a name="c_warn"></a><span class='comment'>-- | Error level for XError, type warning</span>
<a name="line-139"></a><span class='definition'>c_warn</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span>
<a name="line-140"></a><span class='definition'>c_warn</span> <span class='keyglyph'>=</span> <span class='varid'>c_ok</span> <span class='varop'>+</span> <span class='num'>1</span>
<a name="line-141"></a>
<a name="line-142"></a><a name="c_err"></a><span class='comment'>-- | Error level for XError, type error</span>
<a name="line-143"></a><span class='definition'>c_err</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span>
<a name="line-144"></a><span class='definition'>c_err</span> <span class='keyglyph'>=</span> <span class='varid'>c_warn</span> <span class='varop'>+</span> <span class='num'>1</span>
<a name="line-145"></a>
<a name="line-146"></a><a name="c_fatal"></a><span class='comment'>-- | Error level for XError, type fatal error</span>
<a name="line-147"></a><span class='definition'>c_fatal</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span>
<a name="line-148"></a><span class='definition'>c_fatal</span> <span class='keyglyph'>=</span> <span class='varid'>c_err</span> <span class='varop'>+</span> <span class='num'>1</span>
<a name="line-149"></a>
<a name="line-150"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
<a name="line-151"></a>
<a name="line-152"></a><span class='comment'>-- | data type for representing a set of nodes as a tree structure</span>
<a name="line-153"></a><span class='comment'>--</span>
<a name="line-154"></a><span class='comment'>-- this structure is e.g. used to repesent the result of an XPath query</span>
<a name="line-155"></a><span class='comment'>-- such that the selected nodes can be processed or selected later in</span>
<a name="line-156"></a><span class='comment'>-- processing a document tree</span>
<a name="line-157"></a>
<a name="line-158"></a><a name="XmlNodeSet"></a><span class='keyword'>data</span> <span class='conid'>XmlNodeSet</span> <span class='keyglyph'>=</span> <span class='conid'>XNS</span> <span class='layout'>{</span> <span class='varid'>thisNode</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='comment'>-- ^ is this node part of the set ?</span>
<a name="line-159"></a> <span class='layout'>,</span> <span class='varid'>attrNodes</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>QName</span><span class='keyglyph'>]</span> <span class='comment'>-- ^ the set of attribute nodes</span>
<a name="line-160"></a> <span class='layout'>,</span> <span class='varid'>childNodes</span> <span class='keyglyph'>::</span> <span class='conid'>ChildNodes</span> <span class='comment'>-- ^ the set of child nodes, a list of pairs of index and node set </span>
<a name="line-161"></a> <span class='layout'>}</span>
<a name="line-162"></a> <span class='keyword'>deriving</span> <span class='layout'>(</span><span class='conid'>Eq</span><span class='layout'>,</span> <span class='conid'>Show</span><span class='layout'>,</span> <span class='conid'>Typeable</span><span class='layout'>)</span>
<a name="line-163"></a>
<a name="line-164"></a><a name="ChildNodes"></a><span class='keyword'>type</span> <span class='conid'>ChildNodes</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>XmlNodeSet</span><span class='layout'>)</span><span class='keyglyph'>]</span>
<a name="line-165"></a>
<a name="line-166"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>
</pre></body>
</html>