hxt-7.1: src/Text/XML/HXT/DOM/Namespace.hs
-- |
-- main namespace filter for propagation, checking, tracing and error handling
--
-- $Id: Namespace.hs,v 1.3 2005/01/06 10:48:07 hxml Exp $
--
module Text.XML.HXT.DOM.Namespace
( module Text.XML.HXT.DOM.Namespace
, module Text.XML.HXT.DOM.NamespaceFilter
)
where
import Text.XML.HXT.DOM.XmlTree
import Text.XML.HXT.DOM.XmlState
import Text.XML.HXT.DOM.NamespaceFilter
import Text.XML.HXT.Parser.XmlOutput
( traceTree
, traceSource
, traceMsg
)
-- -----------------------------------------------------------------------------
-- |
-- propagate all namespace declarations, check namespace constraints and issue errors.
-- If no error was found, result is the unchanged input tree, else the root node \"\/\" with an empty document is returned.
--
-- see also : 'propagateNamespaces', 'validateNamespaces'
propagateAndValidateNamespaces :: XmlStateFilter a
propagateAndValidateNamespaces
= traceMsg 2 "propagating namespaces"
.>>
liftMf propagateNamespaces
.>>
traceTree
.>>
traceSource
.>>
traceMsg 2 "validating namespaces"
.>>
validate
where
validate :: XmlStateFilter a
validate t
= let
errs = validateNamespaces t
in if null errs
then thisM t
else do
liftF this $$< errs
return (setStatus c_err "namespace propagation" t)
-- -----------------------------------------------------------------------------