module DTD_norback where import Xml2Haskell {-Type decls-} newtype Test = Test [Test_] deriving (Eq,Show) data Test_ = Test_One One | Test_Two Two deriving (Eq,Show) data One = One deriving (Eq,Show) data Two = Two deriving (Eq,Show) {-Instance decls-} instance XmlContent Test where fromElem (CElem (Elem "test" [] c0):rest) = (\(a,ca)-> (Just (Test a), rest)) (many fromElem c0) fromElem rest = (Nothing, rest) toElem (Test a) = [CElem (Elem "test" [] (concatMap toElem a))] instance XmlContent Test_ where fromElem c0 = case (fromElem c0) of (Just a,rest) -> (Just (Test_One a), rest) (Nothing,_) -> case (fromElem c0) of (Just a,rest) -> (Just (Test_Two a), rest) (Nothing,_) -> (Nothing, c0) fromElem rest = (Nothing, rest) toElem (Test_One a) = toElem a toElem (Test_Two a) = toElem a instance XmlContent One where fromElem (CElem (Elem "one" [] []):rest) = (Just One, rest) fromElem rest = (Nothing, rest) toElem One = [CElem (Elem "one" [] [])] instance XmlContent Two where fromElem (CElem (Elem "two" [] []):rest) = (Just Two, rest) fromElem rest = (Nothing, rest) toElem Two = [CElem (Elem "two" [] [])] {-Done-}