yuuko-2010.11.28: src/Yuuko/Text/XML/HXT/DOM/FormatXmlTree.hs
-- ------------------------------------------------------------
{- |
Module : Yuuko.Text.XML.HXT.DOM.FormatXmlTree
Copyright : Copyright (C) 2008 Uwe Schmidt
License : MIT
Maintainer : Uwe Schmidt (uwe@fh-wedel.de)
Stability : stable
Portability: portable
Format a xml tree in tree representation
-}
-- ------------------------------------------------------------
module Yuuko.Text.XML.HXT.DOM.FormatXmlTree
( formatXmlTree
, formatXmlContents
)
where
import Yuuko.Text.XML.HXT.DOM.Interface
import Yuuko.Text.XML.HXT.DOM.ShowXml
import Yuuko.Text.XML.HXT.DOM.XmlNode
import Data.Maybe
-- ------------------------------------------------------------
formatXmlContents :: XmlTree -> XmlTrees
formatXmlContents t
= [mkText (formatXmlTree t)]
formatXmlTree :: XmlTree -> String
formatXmlTree
= formatTree xnode2String
xnode2String :: XNode -> String
xnode2String n
| isElem n
= "XTag " ++ showName n ++ showAtts n
| isPi n
= "XPi " ++ showName n ++ showAtts n
| otherwise
= show n
where
showName :: XNode -> String
showName = maybe "" showQn . getName
showAtts :: XNode -> String
showAtts = concatMap showAl . fromMaybe [] . getAttrl
showAl :: XmlTree -> String
showAl t -- (NTree (XAttr an) av)
| isAttr t
= "\n| " ++ (maybe "" showQn . getName $ t) ++ "=" ++ show (xshow . getChildren $ t)
| otherwise
= show t
showQn :: QName -> String
showQn n
| null ns
= show $ qualifiedName n
| otherwise
= show $ "{" ++ ns ++ "}" ++ qualifiedName n
where
ns = namespaceUri n
-- ------------------------------------------------------------