HXQ-0.9.0: src/hxml-0.2/ETree.hs
----------------------------------------------------------------------------
--
-- Module : HXML.ETree
-- Copyright : (C) 2000-2002 Joe English. Freely redistributable.
-- License : "MIT-style"
--
-- Author : Joe English <jenglish@flightlab.com>
-- Stability : experimental
-- Portability : portable
--
-- CVS : $Id: ETree.hs,v 1.3 2002/10/12 01:58:57 joe Exp $
--
----------------------------------------------------------------------------
--
-- 11 Mar 2002
--
-- Simplified XML representation with only the essential Infoset properties.
--
module ETree(ETree, xmlToETree, etreeToXML) where
import XML
import Tree
data ETree
= Element Name AttList [ETree]
| Text String
deriving Show
xmlToETree :: XML -> ETree
xmlToETree = maybe fallback id . foldTree etree mcons [] where
etree (TXNode txt) _ = Just $ Text txt
etree (ELNode gi atts) c = Just $ Element gi atts c
etree RTNode (c:_) = Just c
etree _ _ = Nothing
mcons = maybe id (:)
fallback = Text "Error: ill-formed XML input"
etreeToXML :: ETree -> XML
etreeToXML = anaTree psi where
psi (Text txt) = (TXNode txt,[])
psi (Element gi atts content) = (ELNode gi atts,content)
-- EOF --