packages feed

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>