packages feed

HaXml 1.19.5 → 1.19.6

raw patch · 35 files changed

+8370/−6826 lines, 35 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Text.XML.HaXml.XmlContent: ANYContent :: a -> ANYContent
- Text.XML.HaXml.XmlContent: AttValue :: [Either String Reference] -> AttValue
- Text.XML.HaXml.XmlContent: CElem :: Element i -> i -> Content i
- Text.XML.HaXml.XmlContent: CMisc :: Misc -> i -> Content i
- Text.XML.HaXml.XmlContent: CRef :: Reference -> i -> Content i
- Text.XML.HaXml.XmlContent: CString :: Bool -> CharData -> i -> Content i
- Text.XML.HaXml.XmlContent: Default :: a -> Defaultable a
- Text.XML.HaXml.XmlContent: Document :: Prolog -> SymTab EntityDef -> Element i -> [Misc] -> Document i
- Text.XML.HaXml.XmlContent: Elem :: Name -> [Attribute] -> [Content i] -> Element i
- Text.XML.HaXml.XmlContent: ElemTag :: Name -> [Attribute] -> ElemTag
- Text.XML.HaXml.XmlContent: NonDefault :: a -> Defaultable a
- Text.XML.HaXml.XmlContent: NonEmpty :: [a] -> List1 a
- Text.XML.HaXml.XmlContent: Prolog :: Maybe XMLDecl -> [Misc] -> Maybe DocTypeDecl -> [Misc] -> Prolog
- Text.XML.HaXml.XmlContent: RefChar :: CharRef -> Reference
- Text.XML.HaXml.XmlContent: RefEntity :: EntityRef -> Reference
- Text.XML.HaXml.XmlContent: UnConverted :: [Content Posn] -> ANYContent
- Text.XML.HaXml.XmlContent: attr2str :: AttValue -> String
- Text.XML.HaXml.XmlContent: attributes :: (XmlAttributes a) => Element Posn -> XMLParser a
- Text.XML.HaXml.XmlContent: attval :: (Read a) => Element i -> a
- Text.XML.HaXml.XmlContent: choice :: (XmlContent a) => (a -> b) -> XMLParser b -> XMLParser b
- Text.XML.HaXml.XmlContent: class XmlAttrType a
- Text.XML.HaXml.XmlContent: class XmlAttributes a
- Text.XML.HaXml.XmlContent: class (HTypeable a) => XmlContent a
- Text.XML.HaXml.XmlContent: content :: String -> XMLParser (Content Posn)
- Text.XML.HaXml.XmlContent: data ANYContent
- Text.XML.HaXml.XmlContent: data AttValue
- Text.XML.HaXml.XmlContent: data Content i
- Text.XML.HaXml.XmlContent: data Defaultable a
- Text.XML.HaXml.XmlContent: data Document i
- Text.XML.HaXml.XmlContent: data ElemTag
- Text.XML.HaXml.XmlContent: data Element i
- Text.XML.HaXml.XmlContent: data List1 a
- Text.XML.HaXml.XmlContent: data Prolog
- Text.XML.HaXml.XmlContent: data Reference
- Text.XML.HaXml.XmlContent: defaultA :: (String -> Attribute -> Maybe a) -> a -> String -> [Attribute] -> Defaultable a
- Text.XML.HaXml.XmlContent: defaultToAttr :: (String -> a -> Maybe Attribute) -> String -> Defaultable a -> Maybe Attribute
- Text.XML.HaXml.XmlContent: definite :: (XmlContent a) => XMLParser a -> String -> String -> XMLParser a
- Text.XML.HaXml.XmlContent: definiteA :: (String -> Attribute -> Maybe a) -> String -> String -> [Attribute] -> a
- Text.XML.HaXml.XmlContent: element :: [String] -> XMLParser (Element Posn)
- Text.XML.HaXml.XmlContent: elementWith :: (String -> String -> Bool) -> [String] -> XMLParser (Element Posn)
- Text.XML.HaXml.XmlContent: fromAttrToStr :: String -> Attribute -> Maybe String
- Text.XML.HaXml.XmlContent: fromAttrToTyp :: (XmlAttrType a) => String -> Attribute -> Maybe a
- Text.XML.HaXml.XmlContent: fromAttrs :: (XmlAttributes a) => [Attribute] -> a
- Text.XML.HaXml.XmlContent: inElement :: String -> XMLParser a -> XMLParser a
- Text.XML.HaXml.XmlContent: inElementWith :: (String -> String -> Bool) -> String -> XMLParser a -> XMLParser a
- Text.XML.HaXml.XmlContent: instance (Eq a) => Eq (Defaultable a)
- Text.XML.HaXml.XmlContent: instance (Eq a) => Eq (List1 a)
- Text.XML.HaXml.XmlContent: instance (HTypeable a) => HTypeable (List1 a)
- Text.XML.HaXml.XmlContent: instance (Show a) => Show (Defaultable a)
- Text.XML.HaXml.XmlContent: instance (Show a) => Show (List1 a)
- Text.XML.HaXml.XmlContent: instance (XmlContent a) => XmlContent (List1 a)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b) => XmlContent (Either a b)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b) => XmlContent (a, b)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b, XmlContent c) => XmlContent (a, b, c)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d) => XmlContent (a, b, c, d)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e) => XmlContent (a, b, c, d, e)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f) => XmlContent (a, b, c, d, e, f)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g) => XmlContent (a, b, c, d, e, f, g)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h) => XmlContent (a, b, c, d, e, f, g, h)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i) => XmlContent (a, b, c, d, e, f, g, h, i)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j) => XmlContent (a, b, c, d, e, f, g, h, i, j)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k) => XmlContent (a, b, c, d, e, f, g, h, i, j, k)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l) => XmlContent (a, b, c, d, e, f, g, h, i, j, k, l)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m) => XmlContent (a, b, c, d, e, f, g, h, i, j, k, l, m)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n) => XmlContent (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
- Text.XML.HaXml.XmlContent: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o) => XmlContent (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
- Text.XML.HaXml.XmlContent: instance Eq ANYContent
- Text.XML.HaXml.XmlContent: instance HTypeable ANYContent
- Text.XML.HaXml.XmlContent: instance Show ANYContent
- Text.XML.HaXml.XmlContent: instance XmlContent ()
- Text.XML.HaXml.XmlContent: instance XmlContent ANYContent
- Text.XML.HaXml.XmlContent: instance XmlContent Bool
- Text.XML.HaXml.XmlContent: instance XmlContent Double
- Text.XML.HaXml.XmlContent: instance XmlContent Float
- Text.XML.HaXml.XmlContent: instance XmlContent Int
- Text.XML.HaXml.XmlContent: instance XmlContent Integer
- Text.XML.HaXml.XmlContent: interior :: Element Posn -> XMLParser a -> XMLParser a
- Text.XML.HaXml.XmlContent: maybeToAttr :: (String -> a -> Maybe Attribute) -> String -> Maybe a -> Maybe Attribute
- Text.XML.HaXml.XmlContent: mkAttr :: String -> String -> Attribute
- Text.XML.HaXml.XmlContent: mkElem :: (XmlContent a) => a -> [Content ()] -> Content ()
- Text.XML.HaXml.XmlContent: mkElemC :: String -> [Content ()] -> Content ()
- Text.XML.HaXml.XmlContent: parseContents :: (XmlContent a) => XMLParser a
- Text.XML.HaXml.XmlContent: posnElement :: [String] -> XMLParser (Posn, Element Posn)
- Text.XML.HaXml.XmlContent: posnElementWith :: (String -> String -> Bool) -> [String] -> XMLParser (Posn, Element Posn)
- Text.XML.HaXml.XmlContent: possibleA :: (String -> Attribute -> Maybe a) -> String -> [Attribute] -> Maybe a
- Text.XML.HaXml.XmlContent: str2attr :: String -> AttValue
- Text.XML.HaXml.XmlContent: text :: XMLParser String
- Text.XML.HaXml.XmlContent: toAttrFrStr :: String -> String -> Maybe Attribute
- Text.XML.HaXml.XmlContent: toAttrFrTyp :: (XmlAttrType a) => String -> a -> Maybe Attribute
- Text.XML.HaXml.XmlContent: toAttrs :: (XmlAttributes a) => a -> [Attribute]
- Text.XML.HaXml.XmlContent: toCData :: String -> [Content ()]
- Text.XML.HaXml.XmlContent: toContents :: (XmlContent a) => a -> [Content ()]
- Text.XML.HaXml.XmlContent: toText :: String -> [Content ()]
- Text.XML.HaXml.XmlContent: type Attribute = (Name, AttValue)
- Text.XML.HaXml.XmlContent: type XMLParser a = Parser (Content Posn) a
- Text.XML.HaXml.XmlContent: xFromChar :: (XmlContent a) => Char -> a
- Text.XML.HaXml.XmlContent: xToChar :: (XmlContent a) => a -> Char
+ Text.XML.HaXml.XmlContent.Haskell: fReadXml :: (XmlContent a) => FilePath -> IO a
+ Text.XML.HaXml.XmlContent.Haskell: fWriteXml :: (XmlContent a) => FilePath -> a -> IO ()
+ Text.XML.HaXml.XmlContent.Haskell: fpsHPutXml :: (XmlContent a) => Handle -> Bool -> a -> IO ()
+ Text.XML.HaXml.XmlContent.Haskell: fpsShowXml :: (XmlContent a) => Bool -> a -> ByteString
+ Text.XML.HaXml.XmlContent.Haskell: fpsWriteXml :: (XmlContent a) => FilePath -> a -> IO ()
+ Text.XML.HaXml.XmlContent.Haskell: fromXml :: (XmlContent a) => Document Posn -> Either String a
+ Text.XML.HaXml.XmlContent.Haskell: hGetXml :: (XmlContent a) => Handle -> IO a
+ Text.XML.HaXml.XmlContent.Haskell: hPutXml :: (XmlContent a) => Handle -> Bool -> a -> IO ()
+ Text.XML.HaXml.XmlContent.Haskell: instance (XmlContent a) => XmlContent (Maybe a)
+ Text.XML.HaXml.XmlContent.Haskell: instance (XmlContent a) => XmlContent [a]
+ Text.XML.HaXml.XmlContent.Haskell: instance (XmlContent a, XmlContent b) => XmlContent (Either a b)
+ Text.XML.HaXml.XmlContent.Haskell: instance XmlContent ()
+ Text.XML.HaXml.XmlContent.Haskell: instance XmlContent Bool
+ Text.XML.HaXml.XmlContent.Haskell: instance XmlContent Char
+ Text.XML.HaXml.XmlContent.Haskell: instance XmlContent Double
+ Text.XML.HaXml.XmlContent.Haskell: instance XmlContent Float
+ Text.XML.HaXml.XmlContent.Haskell: instance XmlContent Int
+ Text.XML.HaXml.XmlContent.Haskell: instance XmlContent Integer
+ Text.XML.HaXml.XmlContent.Haskell: readXml :: (XmlContent a) => String -> Either String a
+ Text.XML.HaXml.XmlContent.Haskell: showXml :: (XmlContent a) => Bool -> a -> String
+ Text.XML.HaXml.XmlContent.Haskell: toXml :: (XmlContent a) => Bool -> a -> Document ()
+ Text.XML.HaXml.XmlContent.Parser: ANYContent :: a -> ANYContent
+ Text.XML.HaXml.XmlContent.Parser: AttValue :: [Either String Reference] -> AttValue
+ Text.XML.HaXml.XmlContent.Parser: CElem :: Element i -> i -> Content i
+ Text.XML.HaXml.XmlContent.Parser: CMisc :: Misc -> i -> Content i
+ Text.XML.HaXml.XmlContent.Parser: CRef :: Reference -> i -> Content i
+ Text.XML.HaXml.XmlContent.Parser: CString :: Bool -> CharData -> i -> Content i
+ Text.XML.HaXml.XmlContent.Parser: Default :: a -> Defaultable a
+ Text.XML.HaXml.XmlContent.Parser: Document :: Prolog -> SymTab EntityDef -> Element i -> [Misc] -> Document i
+ Text.XML.HaXml.XmlContent.Parser: Elem :: Name -> [Attribute] -> [Content i] -> Element i
+ Text.XML.HaXml.XmlContent.Parser: ElemTag :: Name -> [Attribute] -> ElemTag
+ Text.XML.HaXml.XmlContent.Parser: NonDefault :: a -> Defaultable a
+ Text.XML.HaXml.XmlContent.Parser: NonEmpty :: [a] -> List1 a
+ Text.XML.HaXml.XmlContent.Parser: Prolog :: Maybe XMLDecl -> [Misc] -> Maybe DocTypeDecl -> [Misc] -> Prolog
+ Text.XML.HaXml.XmlContent.Parser: RefChar :: CharRef -> Reference
+ Text.XML.HaXml.XmlContent.Parser: RefEntity :: EntityRef -> Reference
+ Text.XML.HaXml.XmlContent.Parser: UnConverted :: [Content Posn] -> ANYContent
+ Text.XML.HaXml.XmlContent.Parser: attr2str :: AttValue -> String
+ Text.XML.HaXml.XmlContent.Parser: attributes :: (XmlAttributes a) => Element Posn -> XMLParser a
+ Text.XML.HaXml.XmlContent.Parser: attval :: (Read a) => Element i -> a
+ Text.XML.HaXml.XmlContent.Parser: choice :: (XmlContent a) => (a -> b) -> XMLParser b -> XMLParser b
+ Text.XML.HaXml.XmlContent.Parser: class XmlAttrType a
+ Text.XML.HaXml.XmlContent.Parser: class XmlAttributes a
+ Text.XML.HaXml.XmlContent.Parser: class (HTypeable a) => XmlContent a
+ Text.XML.HaXml.XmlContent.Parser: content :: String -> XMLParser (Content Posn)
+ Text.XML.HaXml.XmlContent.Parser: data ANYContent
+ Text.XML.HaXml.XmlContent.Parser: data AttValue
+ Text.XML.HaXml.XmlContent.Parser: data Content i
+ Text.XML.HaXml.XmlContent.Parser: data Defaultable a
+ Text.XML.HaXml.XmlContent.Parser: data Document i
+ Text.XML.HaXml.XmlContent.Parser: data ElemTag
+ Text.XML.HaXml.XmlContent.Parser: data Element i
+ Text.XML.HaXml.XmlContent.Parser: data List1 a
+ Text.XML.HaXml.XmlContent.Parser: data Prolog
+ Text.XML.HaXml.XmlContent.Parser: data Reference
+ Text.XML.HaXml.XmlContent.Parser: defaultA :: (String -> Attribute -> Maybe a) -> a -> String -> [Attribute] -> Defaultable a
+ Text.XML.HaXml.XmlContent.Parser: defaultToAttr :: (String -> a -> Maybe Attribute) -> String -> Defaultable a -> Maybe Attribute
+ Text.XML.HaXml.XmlContent.Parser: definite :: (XmlContent a) => XMLParser a -> String -> String -> XMLParser a
+ Text.XML.HaXml.XmlContent.Parser: definiteA :: (String -> Attribute -> Maybe a) -> String -> String -> [Attribute] -> a
+ Text.XML.HaXml.XmlContent.Parser: element :: [String] -> XMLParser (Element Posn)
+ Text.XML.HaXml.XmlContent.Parser: elementWith :: (String -> String -> Bool) -> [String] -> XMLParser (Element Posn)
+ Text.XML.HaXml.XmlContent.Parser: fromAttrToStr :: String -> Attribute -> Maybe String
+ Text.XML.HaXml.XmlContent.Parser: fromAttrToTyp :: (XmlAttrType a) => String -> Attribute -> Maybe a
+ Text.XML.HaXml.XmlContent.Parser: fromAttrs :: (XmlAttributes a) => [Attribute] -> a
+ Text.XML.HaXml.XmlContent.Parser: inElement :: String -> XMLParser a -> XMLParser a
+ Text.XML.HaXml.XmlContent.Parser: inElementWith :: (String -> String -> Bool) -> String -> XMLParser a -> XMLParser a
+ Text.XML.HaXml.XmlContent.Parser: instance (Eq a) => Eq (Defaultable a)
+ Text.XML.HaXml.XmlContent.Parser: instance (Eq a) => Eq (List1 a)
+ Text.XML.HaXml.XmlContent.Parser: instance (HTypeable a) => HTypeable (List1 a)
+ Text.XML.HaXml.XmlContent.Parser: instance (Show a) => Show (Defaultable a)
+ Text.XML.HaXml.XmlContent.Parser: instance (Show a) => Show (List1 a)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a) => XmlContent (List1 a)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b) => XmlContent (a, b)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b, XmlContent c) => XmlContent (a, b, c)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d) => XmlContent (a, b, c, d)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e) => XmlContent (a, b, c, d, e)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f) => XmlContent (a, b, c, d, e, f)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g) => XmlContent (a, b, c, d, e, f, g)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h) => XmlContent (a, b, c, d, e, f, g, h)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i) => XmlContent (a, b, c, d, e, f, g, h, i)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j) => XmlContent (a, b, c, d, e, f, g, h, i, j)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k) => XmlContent (a, b, c, d, e, f, g, h, i, j, k)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l) => XmlContent (a, b, c, d, e, f, g, h, i, j, k, l)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m) => XmlContent (a, b, c, d, e, f, g, h, i, j, k, l, m)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n) => XmlContent (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
+ Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d, XmlContent e, XmlContent f, XmlContent g, XmlContent h, XmlContent i, XmlContent j, XmlContent k, XmlContent l, XmlContent m, XmlContent n, XmlContent o) => XmlContent (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
+ Text.XML.HaXml.XmlContent.Parser: instance Eq ANYContent
+ Text.XML.HaXml.XmlContent.Parser: instance HTypeable ANYContent
+ Text.XML.HaXml.XmlContent.Parser: instance Show ANYContent
+ Text.XML.HaXml.XmlContent.Parser: instance XmlContent ANYContent
+ Text.XML.HaXml.XmlContent.Parser: interior :: Element Posn -> XMLParser a -> XMLParser a
+ Text.XML.HaXml.XmlContent.Parser: maybeToAttr :: (String -> a -> Maybe Attribute) -> String -> Maybe a -> Maybe Attribute
+ Text.XML.HaXml.XmlContent.Parser: mkAttr :: String -> String -> Attribute
+ Text.XML.HaXml.XmlContent.Parser: mkElem :: (XmlContent a) => a -> [Content ()] -> Content ()
+ Text.XML.HaXml.XmlContent.Parser: mkElemC :: String -> [Content ()] -> Content ()
+ Text.XML.HaXml.XmlContent.Parser: parseContents :: (XmlContent a) => XMLParser a
+ Text.XML.HaXml.XmlContent.Parser: posnElement :: [String] -> XMLParser (Posn, Element Posn)
+ Text.XML.HaXml.XmlContent.Parser: posnElementWith :: (String -> String -> Bool) -> [String] -> XMLParser (Posn, Element Posn)
+ Text.XML.HaXml.XmlContent.Parser: possibleA :: (String -> Attribute -> Maybe a) -> String -> [Attribute] -> Maybe a
+ Text.XML.HaXml.XmlContent.Parser: str2attr :: String -> AttValue
+ Text.XML.HaXml.XmlContent.Parser: text :: XMLParser String
+ Text.XML.HaXml.XmlContent.Parser: toAttrFrStr :: String -> String -> Maybe Attribute
+ Text.XML.HaXml.XmlContent.Parser: toAttrFrTyp :: (XmlAttrType a) => String -> a -> Maybe Attribute
+ Text.XML.HaXml.XmlContent.Parser: toAttrs :: (XmlAttributes a) => a -> [Attribute]
+ Text.XML.HaXml.XmlContent.Parser: toCData :: String -> [Content ()]
+ Text.XML.HaXml.XmlContent.Parser: toContents :: (XmlContent a) => a -> [Content ()]
+ Text.XML.HaXml.XmlContent.Parser: toText :: String -> [Content ()]
+ Text.XML.HaXml.XmlContent.Parser: type Attribute = (Name, AttValue)
+ Text.XML.HaXml.XmlContent.Parser: type XMLParser a = Parser (Content Posn) a
+ Text.XML.HaXml.XmlContent.Parser: xFromChar :: (XmlContent a) => Char -> a
+ Text.XML.HaXml.XmlContent.Parser: xToChar :: (XmlContent a) => a -> Char

Files

HaXml.cabal view
@@ -1,5 +1,5 @@ name:		HaXml-version:	1.19.5+version:	1.19.6 license:	LGPL license-file:	COPYRIGHT author:		Malcolm Wallace <Malcolm.Wallace@cs.york.ac.uk>@@ -46,6 +46,8 @@         Text.XML.HaXml.Verbatim,         Text.XML.HaXml.Wrappers,         Text.XML.HaXml.XmlContent,+        Text.XML.HaXml.XmlContent.Parser,+        Text.XML.HaXml.XmlContent.Haskell,         Text.XML.HaXml.Xtract.Combinators,         Text.XML.HaXml.Xtract.Lex,         Text.XML.HaXml.Xtract.Parse@@ -60,7 +62,7 @@   else     build-depends: base < 2 || >= 3, bytestring   extensions: CPP, ExistentialQuantification-  cpp-options: -DVERSION=1.19.4+  cpp-options: -DVERSION=1.19.6   nhc98-options: -K10M  Executable Canonicalise
Makefile view
@@ -1,11 +1,12 @@ SOFTWARE = HaXml-VERSION  = 1.19.5+VERSION  = 1.19.6  #CPP      = cpp -traditional CPP     = cpphs --text --noline	# useful e.g. on MacOS X  DIRS = Text Text/XML Text/XML/HaXml Text/XML/HaXml/Html \-	Text/XML/HaXml/Xtract Text/XML/HaXml/DtdToHaskell+	Text/XML/HaXml/Xtract Text/XML/HaXml/DtdToHaskell \+	Text/XML/HaXml/XmlContent  SRCS = \ 	src/Text/XML/HaXml.hs src/Text/XML/HaXml/Combinators.hs \@@ -17,7 +18,10 @@ 	src/Text/XML/HaXml/OneOfN.hs \ 	src/Text/XML/HaXml/ParseLazy.hs \ 	src/Text/XML/HaXml/ByteStringPP.hs \-	src/Text/XML/HaXml/TypeMapping.hs src/Text/XML/HaXml/XmlContent.hs \+	src/Text/XML/HaXml/TypeMapping.hs \+	src/Text/XML/HaXml/XmlContent.hs \+	src/Text/XML/HaXml/XmlContent/Parser.hs \+	src/Text/XML/HaXml/XmlContent/Haskell.hs \ 	src/Text/XML/HaXml/SAX.hs \ 	src/Text/XML/HaXml/ShowXmlLazy.hs \ 	src/Text/XML/HaXml/Util.hs \
configure view
@@ -2,7 +2,7 @@ #       configure -- prepare to compile/install the HaXml package #       author:   Malcolm.Wallace@cs.york.ac.uk, August 2002 -VERSION="1.19.5"+VERSION="1.19.6"  if [ -f obj/prefix ] then INSTALLDIR=`cat obj/prefix`
docs/HaXml/Text-XML-HaXml-OneOfN.html view
@@ -166,11 +166,11 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2" >OneOf2</A@@ -287,13 +287,13 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3" >OneOf3</A@@ -422,15 +422,15 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4" >OneOf4</A@@ -571,17 +571,17 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5" >OneOf5</A@@ -734,19 +734,19 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6" >OneOf6</A@@ -911,21 +911,21 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7" >OneOf7</A@@ -1102,23 +1102,23 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8" >OneOf8</A@@ -1307,25 +1307,25 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9" >OneOf9</A@@ -1526,27 +1526,27 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10" >OneOf10</A@@ -1759,29 +1759,29 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11" >OneOf11</A@@ -2006,31 +2006,31 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12" >OneOf12</A@@ -2267,33 +2267,33 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13" >OneOf13</A@@ -2542,35 +2542,35 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14" >OneOf14</A@@ -2831,37 +2831,37 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15" >OneOf15</A@@ -3134,39 +3134,39 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> p) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> p) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16" >OneOf16</A@@ -3451,41 +3451,41 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> q) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> q) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17" >OneOf17</A@@ -3782,43 +3782,43 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> q, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> r) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> r) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18" >OneOf18</A@@ -4127,45 +4127,45 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> q, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> r, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> r, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> s) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> s) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19" >OneOf19</A@@ -4486,47 +4486,47 @@ ></TR ><TR ><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> q, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> r, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> r, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> s, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> s, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A-> t) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> t) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20" >OneOf20</A
docs/HaXml/Text-XML-HaXml-ShowXmlLazy.html view
@@ -81,7 +81,7 @@ ><TD CLASS="decl" ><A HREF="#v%3AshowXmlLazy" >showXmlLazy</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > a =&gt; Bool -&gt; a -&gt; String</TD ></TR@@ -109,7 +109,7 @@ ></A ><B >showXmlLazy</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent" >XmlContent</A > a =&gt; Bool -&gt; a -&gt; String</TD ><TD CLASS="declbut"
docs/HaXml/Text-XML-HaXml-TypeMapping.html view
@@ -365,7 +365,7 @@ ><TD CLASS="decl" ><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable" >HTypeable</A-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent" >ANYContent</A ></TD ></TR@@ -739,7 +739,7 @@ >HTypeable</A > a =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable" >HTypeable</A-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1" >List1</A > a)</TD ></TR
+ docs/HaXml/Text-XML-HaXml-XmlContent-Haskell.html view
@@ -0,0 +1,674 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">+<!--Rendered using the Haskell Html Library v0.2-->+<HTML+><HEAD+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"+><TITLE+>Text.XML.HaXml.XmlContent.Haskell</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Text.XML.HaXml.XmlContent.Haskell</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>Re-export everything from Text.XML.HaXml.XmlContent.Parser.+</A+></DT+><DT+><A HREF="#2"+>Instances (only) for the XmlContent class, for datatypes that+</A+></DT+><DT+><A HREF="#3"+>Whole-document conversion functions+</A+></DT+></DL+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Description</TD+></TR+><TR+><TD CLASS="doc"+><P+>The class <TT+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+></TT+> is a kind of replacement for Read and Show:+   it provides conversions between a generic XML tree representation+   and your own more specialised typeful Haskell data trees.+</P+><P+>If you are starting with a set of Haskell datatypes, use DrIFT to+   derive instances of this class for you:+       http://repetae.net/john/computer/haskell/DrIFT+   and use the current module for instances of the standard Haskell+   datatypes list, Maybe, and so on.+</P+><P+>If you are starting with an XML DTD, use HaXml's tool DtdToHaskell+   to generate both the Haskell types and the corresponding instances,+   but _do_not_ use the current module for instances: use+   Text.XML.HaXml.XmlContent instead.+</P+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Synopsis</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>module <A HREF="Text-XML-HaXml-XmlContent-Parser.html"+>Text.XML.HaXml.XmlContent.Parser</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoXml"+>toXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfromXml"+>fromXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; Either String a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AreadXml"+>readXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; String -&gt; Either String a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AshowXml"+>showXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfpsShowXml"+>fpsShowXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; ByteString</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfReadXml"+>fReadXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; IO a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfWriteXml"+>fWriteXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfpsWriteXml"+>fpsWriteXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AhGetXml"+>hGetXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; IO a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AhPutXml"+>hPutXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfpsHPutXml"+>fpsHPutXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>Re-export everything from Text.XML.HaXml.XmlContent.Parser.+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+>module <A HREF="Text-XML-HaXml-XmlContent-Parser.html"+>Text.XML.HaXml.XmlContent.Parser</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="2"+>Instances (only) for the XmlContent class, for datatypes that+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="3"+>Whole-document conversion functions+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoXml"+></A+><B+>toXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#toXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert a fully-typed XML document to a string (with or without DTD).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfromXml"+></A+><B+>fromXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; Either String a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#fromXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read a Haskell value from an XML document, ignoring the DTD and+   using the Haskell result type to determine how to parse it.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AreadXml"+></A+><B+>readXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; String -&gt; Either String a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#readXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read a fully-typed XML document from a string.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AshowXml"+></A+><B+>showXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#showXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert a fully-typed XML document to a string (without DTD).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfpsShowXml"+></A+><B+>fpsShowXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; ByteString</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#fpsShowXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert a fully-typed XML document to a ByteString (without DTD).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfReadXml"+></A+><B+>fReadXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; IO a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#fReadXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read an XML document from a file and convert it to a fully-typed+   Haskell value.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfWriteXml"+></A+><B+>fWriteXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#fWriteXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Write a fully-typed Haskell value to the given file as an XML+   document.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfpsWriteXml"+></A+><B+>fpsWriteXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#fpsWriteXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Write any Haskell value to the given file as an XML document,+   using the FastPackedString interface (output will not be prettified).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AhGetXml"+></A+><B+>hGetXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; IO a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#hGetXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read a fully-typed XML document from a file handle.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AhPutXml"+></A+><B+>hPutXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#hPutXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Write a fully-typed XML document to a file handle.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfpsHPutXml"+></A+><B+>fpsHPutXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Haskell.html#fpsHPutXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Write a fully-typed XML document to a file handle, using the+   FastPackedString interface (output will not be prettified).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="botbar"+>Produced by <A HREF="http://www.haskell.org/haddock/"+>Haddock</A+> version 0.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-XmlContent-Parser.html view
@@ -0,0 +1,4341 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">+<!--Rendered using the Haskell Html Library v0.2-->+<HTML+><HEAD+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"+><TITLE+>Text.XML.HaXml.XmlContent.Parser</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>HaXml</TD+><TD CLASS="topbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Text.XML.HaXml.XmlContent.Parser</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+><B+>Contents</B+></TD+></TR+><TR+><TD+><DL+><DT+><A HREF="#1"+>Re-export the relevant set of generic XML document type definitions+</A+></DT+><DT+><A HREF="#2"+>The enabling classes, that define parsing/unparsing between Haskell+</A+></DT+><DD+><DL+><DT+><A HREF="#3"+>Auxiliaries for writing parsers in the XmlContent class+</A+></DT+><DT+><A HREF="#4"+>Auxiliaries for generating in the XmlContent class+</A+></DT+><DT+><A HREF="#5"+>Auxiliaries for the attribute-related classes+</A+></DT+></DL+></DD+><DT+><A HREF="#6"+>Explicit representation of Haskell datatype information+</A+></DT+><DT+><A HREF="#7"+>Types useful for some content models+</A+></DT+></DL+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Description</TD+></TR+><TR+><TD CLASS="doc"+><P+>The class <TT+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+></TT+> is a kind of replacement for Read and Show:+   it provides conversions between a generic XML tree representation+   and your own more specialised typeful Haskell data trees.+</P+><P+>If you are starting with a set of Haskell datatypes, use DrIFT to+   derive instances of this class for you:+       http://repetae.net/john/computer/haskell/DrIFT+   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell+   to generate both the Haskell types and the corresponding instances.+</P+><P+>This unified class interface replaces two previous (somewhat similar)+   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have+   separate classes depending on how you originally defined your datatypes.+   However, some instances for basic types like lists will depend on which +   direction you are using.  See Text.XML.HaXml.XmlContent and+   Text.XML.HaXml.XmlContent.Haskell.+</P+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Synopsis</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3ADocument"+>Document</A+> i = <A HREF="#v%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AProlog"+>Prolog</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"+>EntityDef</A+>) (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> i) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AElement"+>Element</A+> i = <A HREF="#v%3AElem"+>Elem</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>] [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> i]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AElemTag"+>ElemTag</A+>  = <A HREF="#v%3AElemTag"+>ElemTag</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AContent"+>Content</A+> i</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ACElem"+>CElem</A+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> i) i</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ACString"+>CString</A+> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+> i</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ACRef"+>CRef</A+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"+>Reference</A+> i</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ACMisc"+>CMisc</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+> i</TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AAttribute"+>Attribute</A+> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"+>AttValue</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AAttValue"+>AttValue</A+>  = <A HREF="#v%3AAttValue"+>AttValue</A+> [Either String <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"+>Reference</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AProlog"+>Prolog</A+>  = <A HREF="#v%3AProlog"+>Prolog</A+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"+>XMLDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AReference"+>Reference</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ARefEntity"+>RefEntity</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"+>EntityRef</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ARefChar"+>RefChar</A+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"+>CharRef</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>class</SPAN+> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a =&gt; <A HREF="#t%3AXmlContent"+>XmlContent</A+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="#v%3AparseContents"+>parseContents</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoContents"+>toContents</A+> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()]</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AxToChar"+>xToChar</A+> :: a -&gt; Char</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AxFromChar"+>xFromChar</A+> :: Char -&gt; a</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>class</SPAN+> <A HREF="#t%3AXmlAttributes"+>XmlAttributes</A+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="#v%3AfromAttrs"+>fromAttrs</A+> :: [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>] -&gt; a</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoAttrs"+>toAttrs</A+> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>]</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>class</SPAN+> <A HREF="#t%3AXmlAttrType"+>XmlAttrType</A+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="#v%3AfromAttrToTyp"+>fromAttrToTyp</A+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoAttrFrTyp"+>toAttrFrTyp</A+> :: String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AXMLParser"+>XMLParser</A+> a = Parser (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>) a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acontent"+>content</A+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AposnElement"+>posnElement</A+> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aelement"+>element</A+> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Ainterior"+>interior</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AinElement"+>inElement</A+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Atext"+>text</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aattributes"+>attributes</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlAttributes"+>XmlAttributes</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AposnElementWith"+>posnElementWith</A+> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AelementWith"+>elementWith</A+> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AinElementWith"+>inElementWith</A+> :: (String -&gt; String -&gt; Bool) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Achoice"+>choice</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; (a -&gt; b) -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> b -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> b</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Adefinite"+>definite</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmkElem"+>mkElem</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; a -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmkElemC"+>mkElemC</A+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmkAttr"+>mkAttr</A+> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoText"+>toText</A+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoCData"+>toCData</A+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmaybeToAttr"+>maybeToAttr</A+> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AdefaultToAttr"+>defaultToAttr</A+> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"+>Defaultable</A+> a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AdefiniteA"+>definiteA</A+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>] -&gt; a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AdefaultA"+>defaultA</A+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"+>Defaultable</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3ApossibleA"+>possibleA</A+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>] -&gt; Maybe a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfromAttrToStr"+>fromAttrToStr</A+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoAttrFrStr"+>toAttrFrStr</A+> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3ADefaultable"+>Defaultable</A+> a</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ADefault"+>Default</A+> a</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ANonDefault"+>NonDefault</A+> a</TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Astr2attr"+>str2attr</A+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"+>AttValue</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aattr2str"+>attr2str</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"+>AttValue</A+> -&gt; String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Aattval"+>attval</A+> :: Read a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> i -&gt; a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+>module <A HREF="Text-XML-HaXml-TypeMapping.html"+>Text.XML.HaXml.TypeMapping</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AList1"+>List1</A+> a = <A HREF="#v%3ANonEmpty"+>NonEmpty</A+> [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AANYContent"+>ANYContent</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <SPAN CLASS="keyword"+>forall</SPAN+> a . (XmlContent a, Show a) =&gt; <A HREF="#v%3AANYContent"+>ANYContent</A+> a</TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AUnConverted"+>UnConverted</A+> [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>]</TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>Re-export the relevant set of generic XML document type definitions+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3ADocument"+></A+><B+>Document</B+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Document"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The symbol table stored in a document holds all its general entity+   reference definitions.+</TD+></TR+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ADocument"+></A+><B+>Document</B+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AProlog"+>Prolog</A+> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"+>EntityDef</A+>) (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> i) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Document')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Document" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADocument"+>Document</A+></TD+></TR+><TR+><TD CLASS="decl"+>??? i =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADocument"+>Document</A+> i)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AElement"+></A+><B+>Element</B+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Element"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AElem"+></A+><B+>Elem</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>] [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> i]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Element')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Element" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+></TD+></TR+><TR+><TD CLASS="decl"+>??? i =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> i)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"+>Verbatim</A+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> i)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AElemTag"+></A+><B+>ElemTag</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#ElemTag"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AElemTag"+></A+><B+>ElemTag</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+> [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ElemTag')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:ElemTag" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElemTag"+>ElemTag</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AContent"+></A+><B+>Content</B+> i</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Content"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ACElem"+></A+><B+>CElem</B+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> i) i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ACString"+></A+><B+>CString</B+> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"+>CharData</A+> i</TD+><TD CLASS="rdoc"+>bool is whether whitespace is significant+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ACRef"+></A+><B+>CRef</B+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"+>Reference</A+> i</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ACMisc"+></A+><B+>CMisc</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+> i</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Content')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Content" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Functor <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+></TD+></TR+><TR+><TD CLASS="decl"+>(Eq i, ??? i) =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> i)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"+>Verbatim</A+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> i)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>type</SPAN+> <A NAME="t%3AAttribute"+></A+><B+>Attribute</B+> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"+>Name</A+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"+>AttValue</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Attribute"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AAttValue"+></A+><B+>AttValue</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#AttValue"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AAttValue"+></A+><B+>AttValue</B+> [Either String <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"+>Reference</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:AttValue')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:AttValue" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"+>AttValue</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"+>AttValue</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AProlog"+></A+><B+>Prolog</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Prolog"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3AProlog"+></A+><B+>Prolog</B+> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"+>XMLDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+>) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"+>Misc</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Prolog')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Prolog" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AProlog"+>Prolog</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AReference"+></A+><B+>Reference</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Reference"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ARefEntity"+></A+><B+>RefEntity</B+> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"+>EntityRef</A+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ARefChar"+></A+><B+>RefChar</B+> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"+>CharRef</A+></TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Reference')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Reference" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"+>Reference</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"+>Reference</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"+>Verbatim</A+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"+>Reference</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="2"+>The enabling classes, that define parsing/unparsing between Haskell+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>class</SPAN+> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a =&gt; <A NAME="t%3AXmlContent"+></A+><B+>XmlContent</B+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#XmlContent"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The <TT+>XmlContent</TT+> class promises that an XML Content element can be+   converted to and from a Haskell value.+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="section4"+>Methods</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AparseContents"+></A+><B+>parseContents</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#parseContents"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert from XML to Haskell+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoContents"+></A+><B+>toContents</B+> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#toContents"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert from Haskell to XML+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AxToChar"+></A+><B+>xToChar</B+> :: a -&gt; Char</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#xToChar"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Dummy functions (for most types): used <EM+>only</EM+> in the Char instance+   for coercing lists of Char into String.+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AxFromChar"+></A+><B+>xFromChar</B+> :: Char -&gt; a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#xFromChar"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:XmlContent')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:XmlContent" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent"+>ANYContent</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> Bool</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> Char</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> Char</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> Double</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> Float</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> Int</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> Integer</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> ()</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c, d)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c, d, e)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c, d, e, f)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c, d, e, f, g)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c, d, e, f, g, h)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c, d, e, f, g, h, i)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c, d, e, f, g, h, i, j)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c, d, e, f, g, h, i, j, k)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c, d, e, f, g, h, i, j, k, l)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c, d, e, f, g, h, i, j, k, l, m)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c, d, e, f, g, h, i, j, k, l, m, n)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1"+>List1</A+> a)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (Maybe a)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (Maybe a)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> [a]</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> [a]</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (Either a b)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"+>OneOf2</A+> a b)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"+>OneOf3</A+> a b c)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"+>OneOf4</A+> a b c d)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"+>OneOf5</A+> a b c d e)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"+>OneOf6</A+> a b c d e f)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"+>OneOf7</A+> a b c d e f g)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"+>OneOf8</A+> a b c d e f g h)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"+>OneOf9</A+> a b c d e f g h i)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"+>OneOf10</A+> a b c d e f g h i j)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"+>OneOf11</A+> a b c d e f g h i j k)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"+>OneOf12</A+> a b c d e f g h i j k l)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"+>OneOf13</A+> a b c d e f g h i j k l m)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"+>OneOf14</A+> a b c d e f g h i j k l m n)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"+>OneOf15</A+> a b c d e f g h i j k l m n o)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> p) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"+>OneOf16</A+> a b c d e f g h i j k l m n o p)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> q) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"+>OneOf17</A+> a b c d e f g h i j k l m n o p q)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> q, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> r) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"+>OneOf18</A+> a b c d e f g h i j k l m n o p q r)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> q, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> r, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> s) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"+>OneOf19</A+> a b c d e f g h i j k l m n o p q r s)</TD+></TR+><TR+><TD CLASS="decl"+>(<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> b, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> c, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> d, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> e, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> f, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> g, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> h, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> i, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> j, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> k, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> l, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> m, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> n, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> o, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> p, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> q, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> r, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> s, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> t) =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"+>OneOf20</A+> a b c d e f g h i j k l m n o p q r s t)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>class</SPAN+> <A NAME="t%3AXmlAttributes"+></A+><B+>XmlAttributes</B+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#XmlAttributes"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The <TT+>XmlAttributes</TT+> class promises that a list of XML tag attributes+   can be converted to and from a Haskell value.+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="section4"+>Methods</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfromAttrs"+></A+><B+>fromAttrs</B+> :: [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>] -&gt; a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#fromAttrs"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoAttrs"+></A+><B+>toAttrs</B+> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#toAttrs"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>class</SPAN+> <A NAME="t%3AXmlAttrType"+></A+><B+>XmlAttrType</B+> a  <SPAN CLASS="keyword"+>where</SPAN+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#XmlAttrType"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The <TT+>XmlAttrType</TT+> class promises that an attribute taking an XML+   enumerated type can be converted to and from a Haskell value.+</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="section4"+>Methods</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfromAttrToTyp"+></A+><B+>fromAttrToTyp</B+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#fromAttrToTyp"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoAttrFrTyp"+></A+><B+>toAttrFrTyp</B+> :: String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#toAttrFrTyp"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="3"+>Auxiliaries for writing parsers in the XmlContent class+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>type</SPAN+> <A NAME="t%3AXMLParser"+></A+><B+>XMLParser</B+> a = Parser (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>) a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#XMLParser"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>We need a parsing monad for reading generic XML Content into specific+   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly+   ones, where the input token type is fixed as XML Content.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Acontent"+></A+><B+>content</B+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#content"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>The most primitive combinator for XMLParser - get one content item.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AposnElement"+></A+><B+>posnElement</B+> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#posnElement"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>A specialisation of <TT+>posnElementWith (==)</TT+>.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aelement"+></A+><B+>element</B+> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#element"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Get the next content element, checking that it has one of the required+   tags.  (Skips over comments and whitespace, rejects text and refs.)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Ainterior"+></A+><B+>interior</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#interior"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Run an XMLParser on the contents of the given element (i.e. not on the+   current monadic content sequence), checking that the contents are+   exhausted, before returning the calculated value within the current+   parser context.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AinElement"+></A+><B+>inElement</B+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#inElement"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>A combination of element + interior.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Atext"+></A+><B+>text</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#text"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><TT+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Atext"+>text</A+></TT+> is a counterpart to <TT+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Aelement"+>element</A+></TT+>, parsing text content if it+   exists.  Adjacent text and references are coalesced.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aattributes"+></A+><B+>attributes</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlAttributes"+>XmlAttributes</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#attributes"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Do some parsing of the attributes of the given element+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AposnElementWith"+></A+><B+>posnElementWith</B+> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#posnElementWith"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Get the next content element, checking that it has one of the required+   tags, using the given matching function.+   (Skips over comments and whitespace, rejects text and refs.+    Also returns position of element.)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AelementWith"+></A+><B+>elementWith</B+> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>)</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#elementWith"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Like element, only permits a more flexible match against the tagname.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AinElementWith"+></A+><B+>inElementWith</B+> :: (String -&gt; String -&gt; Bool) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#inElementWith"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>A combination of elementWith + interior.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Achoice"+></A+><B+>choice</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; (a -&gt; b) -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> b -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> b</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#choice"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>'choice f p' means if parseContents succeeds, apply f to the result,+   otherwise use the continuation parser.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Adefinite"+></A+><B+>definite</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>XMLParser</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#definite"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>not sure this is needed now.   'definite p' previously ensured that+   an element was definitely present.  Now I think the monad might take+   care of that for us.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="4"+>Auxiliaries for generating in the XmlContent class+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmkElem"+></A+><B+>mkElem</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; a -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#mkElem"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Generate an element with no attributes, named for its HType.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmkElemC"+></A+><B+>mkElemC</B+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#mkElemC"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Generate an element with no attributes, named directly.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmkAttr"+></A+><B+>mkAttr</B+> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#mkAttr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Generate a single attribute.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoText"+></A+><B+>toText</B+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#toText"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Turn a simple string into XML text.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoCData"+></A+><B+>toCData</B+> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> ()]</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#toCData"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Turn a string into an XML CDATA section.+   (i.e. special characters like &amp; are preserved without interpretation.)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section2"+><A NAME="5"+>Auxiliaries for the attribute-related classes+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmaybeToAttr"+></A+><B+>maybeToAttr</B+> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#maybeToAttr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AdefaultToAttr"+></A+><B+>defaultToAttr</B+> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"+>Defaultable</A+> a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#defaultToAttr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AdefiniteA"+></A+><B+>definiteA</B+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>] -&gt; a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#definiteA"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AdefaultA"+></A+><B+>defaultA</B+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>] -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"+>Defaultable</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#defaultA"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3ApossibleA"+></A+><B+>possibleA</B+> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe a) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+>] -&gt; Maybe a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#possibleA"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfromAttrToStr"+></A+><B+>fromAttrToStr</B+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+> -&gt; Maybe String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#fromAttrToStr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoAttrFrStr"+></A+><B+>toAttrFrStr</B+> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Attribute</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#toAttrFrStr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3ADefaultable"+></A+><B+>Defaultable</B+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#Defaultable"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>If an attribute is defaultable, then it either takes the default+   value (which is omitted from the output), or a non-default value+   (which obviously must be printed).+</TD+></TR+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ADefault"+></A+><B+>Default</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANonDefault"+></A+><B+>NonDefault</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Defaultable')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Defaultable" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq a =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"+>Defaultable</A+> a)</TD+></TR+><TR+><TD CLASS="decl"+>Show a =&gt; Show (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"+>Defaultable</A+> a)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Astr2attr"+></A+><B+>str2attr</B+> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"+>AttValue</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#str2attr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aattr2str"+></A+><B+>attr2str</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"+>AttValue</A+> -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#attr2str"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Aattval"+></A+><B+>attval</B+> :: Read a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Element</A+> i -&gt; a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#attval"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read a single attribute called <A HREF="value.html"+>value</A+>.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="6"+>Explicit representation of Haskell datatype information+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+>module <A HREF="Text-XML-HaXml-TypeMapping.html"+>Text.XML.HaXml.TypeMapping</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="7"+>Types useful for some content models+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AList1"+></A+><B+>List1</B+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#List1"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>The List1 type represents lists with at least one element.+   It is required for DTD content models that use + as a modifier.+</TD+></TR+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ANonEmpty"+></A+><B+>NonEmpty</B+> [a]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:List1')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:List1" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>??? a =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1"+>List1</A+> a)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> a =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1"+>List1</A+> a)</TD+></TR+><TR+><TD CLASS="decl"+>??? a =&gt; Show (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1"+>List1</A+> a)</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> (<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1"+>List1</A+> a)</TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AANYContent"+></A+><B+>ANYContent</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent/Parser.html#ANYContent"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+><P+>A type corresponding to XML's ANY contentspec.+   It is either a list of unconverted xml <TT+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+></TT+>+   or some <TT+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+></TT+>-able value.+</P+><P+>Parsing functions (e.g. <TT+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AparseContents"+>parseContents</A+></TT+>) will always produce <TT+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AUnConverted"+>UnConverted</A+></TT+>.+ Note: The Show instance for <TT+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AUnConverted"+>UnConverted</A+></TT+> uses <TT+><A HREF="Text-XML-HaXml-Verbatim.html#v%3Averbatim"+>verbatim</A+></TT+>.+</P+></TD+></TR+><TR+><TD CLASS="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><SPAN CLASS="keyword"+>forall</SPAN+> a . (XmlContent a, Show a) =&gt; <A NAME="v%3AANYContent"+></A+><B+>ANYContent</B+> a</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AUnConverted"+></A+><B+>UnConverted</B+> [<A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Content</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+>]</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ANYContent')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:ANYContent" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent"+>ANYContent</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"+>HTypeable</A+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent"+>ANYContent</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent"+>ANYContent</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent"+>ANYContent</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="botbar"+>Produced by <A HREF="http://www.haskell.org/haddock/"+>Haddock</A+> version 0.8</TD+></TR+></TABLE+></BODY+></HTML+>
docs/HaXml/Text-XML-HaXml-XmlContent.html view
@@ -66,4723 +66,596 @@ ><DL ><DT ><A HREF="#1"->Re-export the relevant set of generic XML document type definitions-</A-></DT-><DT-><A HREF="#2"->The enabling classes, that define parsing/unparsing between Haskell-</A-></DT-><DD-><DL-><DT-><A HREF="#3"->Auxiliaries for writing parsers in the XmlContent class-</A-></DT-><DT-><A HREF="#4"->Auxiliaries for generating in the XmlContent class-</A-></DT-><DT-><A HREF="#5"->Auxiliaries for the attribute-related classes-</A-></DT-></DL-></DD-><DT-><A HREF="#6"->Whole-document conversion functions-</A-></DT-><DT-><A HREF="#7"->Explicit representation of Haskell datatype information-</A-></DT-><DT-><A HREF="#8"->Types useful for some content models-</A-></DT-></DL-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->The class <TT-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-></TT-> is a kind of replacement for Read and Show:-   it provides conversions between a generic XML tree representation-   and your own more specialised typeful Haskell data trees.-</P-><P->If you are starting with a set of Haskell datatypes, use DrIFT to-   derive instances of this class for you:-       http://repetae.net/john/computer/haskell/DrIFT-   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell-   to generate both the Haskell types and the corresponding instances.-</P-><P->This unified class interface replaces two previous (somewhat similar)-   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have-   separate classes depending on how you originally defined your datatypes.-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ADocument"->Document</A-> i = <A HREF="#v%3ADocument"->Document</A-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AProlog"->Prolog</A-> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"->SymTab</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"->EntityDef</A->) (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> i) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AElement"->Element</A-> i = <A HREF="#v%3AElem"->Elem</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->] [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> i]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AElemTag"->ElemTag</A->  = <A HREF="#v%3AElemTag"->ElemTag</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AContent"->Content</A-> i</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ACElem"->CElem</A-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> i) i</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ACString"->CString</A-> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"->CharData</A-> i</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ACRef"->CRef</A-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"->Reference</A-> i</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ACMisc"->CMisc</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A-> i</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AAttribute"->Attribute</A-> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"->AttValue</A->)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AAttValue"->AttValue</A->  = <A HREF="#v%3AAttValue"->AttValue</A-> [Either String <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"->Reference</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AProlog"->Prolog</A->  = <A HREF="#v%3AProlog"->Prolog</A-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"->XMLDecl</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A->] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"->DocTypeDecl</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A->]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AReference"->Reference</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ARefEntity"->RefEntity</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"->EntityRef</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ARefChar"->RefChar</A-> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"->CharRef</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->class</SPAN-> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"->HTypeable</A-> a =&gt; <A HREF="#t%3AXmlContent"->XmlContent</A-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AparseContents"->parseContents</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoContents"->toContents</A-> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()]</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AxToChar"->xToChar</A-> :: a -&gt; Char</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AxFromChar"->xFromChar</A-> :: Char -&gt; a</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->class</SPAN-> <A HREF="#t%3AXmlAttributes"->XmlAttributes</A-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AfromAttrs"->fromAttrs</A-> :: [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->] -&gt; a</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoAttrs"->toAttrs</A-> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->]</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->class</SPAN-> <A HREF="#t%3AXmlAttrType"->XmlAttrType</A-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AfromAttrToTyp"->fromAttrToTyp</A-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoAttrFrTyp"->toAttrFrTyp</A-> :: String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AXMLParser"->XMLParser</A-> a = Parser (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->) a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Acontent"->content</A-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AposnElement"->posnElement</A-> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aelement"->element</A-> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Ainterior"->interior</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A-> -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AinElement"->inElement</A-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Atext"->text</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aattributes"->attributes</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlAttributes"->XmlAttributes</A-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A-> -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AposnElementWith"->posnElementWith</A-> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AelementWith"->elementWith</A-> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AinElementWith"->inElementWith</A-> :: (String -&gt; String -&gt; Bool) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Achoice"->choice</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; (a -&gt; b) -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> b -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> b</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Adefinite"->definite</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkElem"->mkElem</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkElemC"->mkElemC</A-> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkAttr"->mkAttr</A-> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoText"->toText</A-> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoCData"->toCData</A-> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmaybeToAttr"->maybeToAttr</A-> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AdefaultToAttr"->defaultToAttr</A-> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"->Defaultable</A-> a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AdefiniteA"->definiteA</A-> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->] -&gt; a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AdefaultA"->defaultA</A-> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"->Defaultable</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3ApossibleA"->possibleA</A-> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->] -&gt; Maybe a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfromAttrToStr"->fromAttrToStr</A-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoAttrFrStr"->toAttrFrStr</A-> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ADefaultable"->Defaultable</A-> a</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ADefault"->Default</A-> a</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ANonDefault"->NonDefault</A-> a</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Astr2attr"->str2attr</A-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"->AttValue</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aattr2str"->attr2str</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"->AttValue</A-> -&gt; String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aattval"->attval</A-> :: Read a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> i -&gt; a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoXml"->toXml</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"->Document</A-> ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfromXml"->fromXml</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"->Document</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A-> -&gt; Either String a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AreadXml"->readXml</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; String -&gt; Either String a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AshowXml"->showXml</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Bool -&gt; a -&gt; String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfpsShowXml"->fpsShowXml</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Bool -&gt; a -&gt; ByteString</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfReadXml"->fReadXml</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; FilePath -&gt; IO a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfWriteXml"->fWriteXml</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; FilePath -&gt; a -&gt; IO ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfpsWriteXml"->fpsWriteXml</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; FilePath -&gt; a -&gt; IO ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhGetXml"->hGetXml</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Handle -&gt; IO a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhPutXml"->hPutXml</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfpsHPutXml"->fpsHPutXml</A-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HaXml-TypeMapping.html"->Text.XML.HaXml.TypeMapping</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AList1"->List1</A-> a = <A HREF="#v%3ANonEmpty"->NonEmpty</A-> [a]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AANYContent"->ANYContent</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <SPAN CLASS="keyword"->forall</SPAN-> a . (XmlContent a, Show a) =&gt; <A HREF="#v%3AANYContent"->ANYContent</A-> a</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3AUnConverted"->UnConverted</A-> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->]</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="1"->Re-export the relevant set of generic XML document type definitions-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ADocument"-></A-><B->Document</B-> i</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#Document"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->The symbol table stored in a document holds all its general entity-   reference definitions.-</TD-></TR-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ADocument"-></A-><B->Document</B-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AProlog"->Prolog</A-> (<A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"->SymTab</A-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityDef"->EntityDef</A->) (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> i) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Document')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Document" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Functor <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"->Document</A-></TD-></TR-><TR-><TD CLASS="decl"->??? i =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"->Document</A-> i)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AElement"-></A-><B->Element</B-> i</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#Element"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AElem"-></A-><B->Elem</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->] [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> i]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Element')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Element" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Functor <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-></TD-></TR-><TR-><TD CLASS="decl"->??? i =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> i)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"->Verbatim</A-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> i)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AElemTag"-></A-><B->ElemTag</B-> </TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#ElemTag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AElemTag"-></A-><B->ElemTag</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A-> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ElemTag')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:ElemTag" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElemTag"->ElemTag</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AContent"-></A-><B->Content</B-> i</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#Content"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ACElem"-></A-><B->CElem</B-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> i) i</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ACString"-></A-><B->CString</B-> Bool <A HREF="Text-XML-HaXml-Types.html#t%3ACharData"->CharData</A-> i</TD-><TD CLASS="rdoc"->bool is whether whitespace is significant-</TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ACRef"-></A-><B->CRef</B-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"->Reference</A-> i</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ACMisc"-></A-><B->CMisc</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A-> i</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Content')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Content" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Functor <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-></TD-></TR-><TR-><TD CLASS="decl"->(Eq i, ??? i) =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> i)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"->Verbatim</A-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> i)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AAttribute"-></A-><B->Attribute</B-> = (<A HREF="Text-XML-HaXml-Types.html#t%3AName"->Name</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"->AttValue</A->)</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#Attribute"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AAttValue"-></A-><B->AttValue</B-> </TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#AttValue"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AAttValue"-></A-><B->AttValue</B-> [Either String <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"->Reference</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:AttValue')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:AttValue" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"->AttValue</A-></TD-></TR-><TR-><TD CLASS="decl"->Show <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"->AttValue</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AProlog"-></A-><B->Prolog</B-> </TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#Prolog"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AProlog"-></A-><B->Prolog</B-> (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AXMLDecl"->XMLDecl</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A->] (Maybe <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"->DocTypeDecl</A->) [<A HREF="Text-XML-HaXml-Types.html#t%3AMisc"->Misc</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Prolog')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Prolog" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AProlog"->Prolog</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AReference"-></A-><B->Reference</B-> </TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#Reference"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ARefEntity"-></A-><B->RefEntity</B-> <A HREF="Text-XML-HaXml-Types.html#t%3AEntityRef"->EntityRef</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ARefChar"-></A-><B->RefChar</B-> <A HREF="Text-XML-HaXml-Types.html#t%3ACharRef"->CharRef</A-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Reference')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Reference" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"->Reference</A-></TD-></TR-><TR-><TD CLASS="decl"->Show <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"->Reference</A-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"->Verbatim</A-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"->Reference</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="2"->The enabling classes, that define parsing/unparsing between Haskell-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->class</SPAN-> <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"->HTypeable</A-> a =&gt; <A NAME="t%3AXmlContent"-></A-><B->XmlContent</B-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#XmlContent"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->The <TT->XmlContent</TT-> class promises that an XML Content element can be-   converted to and from a Haskell value.-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="section4"->Methods</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AparseContents"-></A-><B->parseContents</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#parseContents"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Convert from XML to Haskell-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtoContents"-></A-><B->toContents</B-> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()]</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#toContents"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Convert from Haskell to XML-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AxToChar"-></A-><B->xToChar</B-> :: a -&gt; Char</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#xToChar"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Dummy functions (for most types): used <EM->only</EM-> in the Char instance-   for coercing lists of Char into String.-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AxFromChar"-></A-><B->xFromChar</B-> :: Char -&gt; a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#xFromChar"->Source</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:XmlContent')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:XmlContent" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"->ANYContent</A-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> Bool</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> Char</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> Double</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> Float</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> Int</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> Integer</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> ()</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b, c)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b, c, d)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b, c, d, e)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b, c, d, e, f)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b, c, d, e, f, g)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b, c, d, e, f, g, h)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b, c, d, e, f, g, h, i)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b, c, d, e, f, g, h, i, j)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b, c, d, e, f, g, h, i, j, k)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b, c, d, e, f, g, h, i, j, k, l)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b, c, d, e, f, g, h, i, j, k, l, m)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b, c, d, e, f, g, h, i, j, k, l, m, n)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"->List1</A-> a)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (Maybe a)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> [a]</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (Either a b)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"->OneOf2</A-> a b)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"->OneOf3</A-> a b c)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"->OneOf4</A-> a b c d)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"->OneOf5</A-> a b c d e)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"->OneOf6</A-> a b c d e f)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"->OneOf7</A-> a b c d e f g)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"->OneOf8</A-> a b c d e f g h)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"->OneOf9</A-> a b c d e f g h i)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"->OneOf10</A-> a b c d e f g h i j)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"->OneOf11</A-> a b c d e f g h i j k)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> l) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"->OneOf12</A-> a b c d e f g h i j k l)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> m) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"->OneOf13</A-> a b c d e f g h i j k l m)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> n) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"->OneOf14</A-> a b c d e f g h i j k l m n)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> o) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"->OneOf15</A-> a b c d e f g h i j k l m n o)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> p) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"->OneOf16</A-> a b c d e f g h i j k l m n o p)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> q) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"->OneOf17</A-> a b c d e f g h i j k l m n o p q)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> r) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"->OneOf18</A-> a b c d e f g h i j k l m n o p q r)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> r, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> s) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"->OneOf19</A-> a b c d e f g h i j k l m n o p q r s)</TD-></TR-><TR-><TD CLASS="decl"->(<A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> b, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> c, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> d, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> e, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> f, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> g, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> h, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> i, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> j, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> k, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> l, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> m, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> n, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> o, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> p, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> q, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> r, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> s, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> t) =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"->OneOf20</A-> a b c d e f g h i j k l m n o p q r s t)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->class</SPAN-> <A NAME="t%3AXmlAttributes"-></A-><B->XmlAttributes</B-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#XmlAttributes"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->The <TT->XmlAttributes</TT-> class promises that a list of XML tag attributes-   can be converted to and from a Haskell value.-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="section4"->Methods</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AfromAttrs"-></A-><B->fromAttrs</B-> :: [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->] -&gt; a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#fromAttrs"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtoAttrs"-></A-><B->toAttrs</B-> :: a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->]</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#toAttrs"->Source</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->class</SPAN-> <A NAME="t%3AXmlAttrType"-></A-><B->XmlAttrType</B-> a  <SPAN CLASS="keyword"->where</SPAN-></TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#XmlAttrType"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->The <TT->XmlAttrType</TT-> class promises that an attribute taking an XML-   enumerated type can be converted to and from a Haskell value.-</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="section4"->Methods</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AfromAttrToTyp"-></A-><B->fromAttrToTyp</B-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#fromAttrToTyp"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtoAttrFrTyp"-></A-><B->toAttrFrTyp</B-> :: String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#toAttrFrTyp"->Source</A-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section2"-><A NAME="3"->Auxiliaries for writing parsers in the XmlContent class-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AXMLParser"-></A-><B->XMLParser</B-> a = Parser (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->) a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#XMLParser"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->We need a parsing monad for reading generic XML Content into specific-   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly-   ones, where the input token type is fixed as XML Content.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Acontent"-></A-><B->content</B-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->)</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#content"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->The most primitive combinator for XMLParser - get one content item.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AposnElement"-></A-><B->posnElement</B-> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->)</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#posnElement"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->A specialisation of <TT->posnElementWith (==)</TT->.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aelement"-></A-><B->element</B-> :: [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->)</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#element"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Get the next content element, checking that it has one of the required-   tags.  (Skips over comments and whitespace, rejects text and refs.)-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Ainterior"-></A-><B->interior</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A-> -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#interior"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Run an XMLParser on the contents of the given element (i.e. not on the-   current monadic content sequence), checking that the contents are-   exhausted, before returning the calculated value within the current-   parser context.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AinElement"-></A-><B->inElement</B-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#inElement"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->A combination of element + interior.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Atext"-></A-><B->text</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> String</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#text"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><TT-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Atext"->text</A-></TT-> is a counterpart to <TT-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aelement"->element</A-></TT->, parsing text content if it-   exists.  Adjacent text and references are coalesced.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aattributes"-></A-><B->attributes</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlAttributes"->XmlAttributes</A-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A-> -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#attributes"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Do some parsing of the attributes of the given element-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AposnElementWith"-></A-><B->posnElementWith</B-> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> (<A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->)</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#posnElementWith"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Get the next content element, checking that it has one of the required-   tags, using the given matching function.-   (Skips over comments and whitespace, rejects text and refs.-    Also returns position of element.)-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AelementWith"-></A-><B->elementWith</B-> :: (String -&gt; String -&gt; Bool) -&gt; [String] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->)</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#elementWith"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Like element, only permits a more flexible match against the tagname.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AinElementWith"-></A-><B->inElementWith</B-> :: (String -&gt; String -&gt; Bool) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#inElementWith"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->A combination of elementWith + interior.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Achoice"-></A-><B->choice</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; (a -&gt; b) -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> b -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> b</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#choice"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->'choice f p' means if parseContents succeeds, apply f to the result,-   otherwise use the continuation parser.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Adefinite"-></A-><B->definite</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a -&gt; String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->XMLParser</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#definite"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->not sure this is needed now.   'definite p' previously ensured that-   an element was definitely present.  Now I think the monad might take-   care of that for us.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section2"-><A NAME="4"->Auxiliaries for generating in the XmlContent class-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkElem"-></A-><B->mkElem</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; a -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#mkElem"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Generate an element with no attributes, named for its HType.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkElemC"-></A-><B->mkElemC</B-> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#mkElemC"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Generate an element with no attributes, named directly.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkAttr"-></A-><B->mkAttr</B-> :: String -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#mkAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Generate a single attribute.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtoText"-></A-><B->toText</B-> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()]</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#toText"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Turn a simple string into XML text.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtoCData"-></A-><B->toCData</B-> :: String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> ()]</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#toCData"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Turn a string into an XML CDATA section.-   (i.e. special characters like &amp; are preserved without interpretation.)-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section2"-><A NAME="5"->Auxiliaries for the attribute-related classes-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmaybeToAttr"-></A-><B->maybeToAttr</B-> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->) -&gt; String -&gt; Maybe a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#maybeToAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AdefaultToAttr"-></A-><B->defaultToAttr</B-> :: (String -&gt; a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->) -&gt; String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"->Defaultable</A-> a -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#defaultToAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AdefiniteA"-></A-><B->definiteA</B-> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a) -&gt; String -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->] -&gt; a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#definiteA"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AdefaultA"-></A-><B->defaultA</B-> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a) -&gt; a -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->] -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"->Defaultable</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#defaultA"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3ApossibleA"-></A-><B->possibleA</B-> :: (String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe a) -&gt; String -&gt; [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A->] -&gt; Maybe a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#possibleA"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AfromAttrToStr"-></A-><B->fromAttrToStr</B-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-> -&gt; Maybe String</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#fromAttrToStr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtoAttrFrStr"-></A-><B->toAttrFrStr</B-> :: String -&gt; String -&gt; Maybe <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Attribute</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#toAttrFrStr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ADefaultable"-></A-><B->Defaultable</B-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#Defaultable"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->If an attribute is defaultable, then it either takes the default-   value (which is omitted from the output), or a non-default value-   (which obviously must be printed).-</TD-></TR-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ADefault"-></A-><B->Default</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ANonDefault"-></A-><B->NonDefault</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Defaultable')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Defaultable" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq a =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"->Defaultable</A-> a)</TD-></TR-><TR-><TD CLASS="decl"->Show a =&gt; Show (<A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"->Defaultable</A-> a)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Astr2attr"-></A-><B->str2attr</B-> :: String -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"->AttValue</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#str2attr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aattr2str"-></A-><B->attr2str</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"->AttValue</A-> -&gt; String</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#attr2str"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aattval"-></A-><B->attval</B-> :: Read a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Element</A-> i -&gt; a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#attval"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Read a single attribute called <A HREF="value.html"->value</A->.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="6"->Whole-document conversion functions-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtoXml"-></A-><B->toXml</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"->Document</A-> ()</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#toXml"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Convert a fully-typed XML document to a string (with or without DTD).-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AfromXml"-></A-><B->fromXml</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"->Document</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A-> -&gt; Either String a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#fromXml"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Read a Haskell value from an XML document, ignoring the DTD and-   using the Haskell result type to determine how to parse it.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AreadXml"-></A-><B->readXml</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; String -&gt; Either String a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#readXml"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Read a fully-typed XML document from a string.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AshowXml"-></A-><B->showXml</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Bool -&gt; a -&gt; String</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#showXml"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Convert a fully-typed XML document to a string (without DTD).-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AfpsShowXml"-></A-><B->fpsShowXml</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Bool -&gt; a -&gt; ByteString</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsShowXml"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Convert a fully-typed XML document to a ByteString (without DTD).-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AfReadXml"-></A-><B->fReadXml</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; FilePath -&gt; IO a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#fReadXml"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Read an XML document from a file and convert it to a fully-typed-   Haskell value.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AfWriteXml"-></A-><B->fWriteXml</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; FilePath -&gt; a -&gt; IO ()</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#fWriteXml"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Write a fully-typed Haskell value to the given file as an XML-   document.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AfpsWriteXml"-></A-><B->fpsWriteXml</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; FilePath -&gt; a -&gt; IO ()</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsWriteXml"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Write any Haskell value to the given file as an XML document,-   using the FastPackedString interface (output will not be prettified).-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhGetXml"-></A-><B->hGetXml</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Handle -&gt; IO a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#hGetXml"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Read a fully-typed XML document from a file handle.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhPutXml"-></A-><B->hPutXml</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#hPutXml"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Write a fully-typed XML document to a file handle.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AfpsHPutXml"-></A-><B->fpsHPutXml</B-> :: <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsHPutXml"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Write a fully-typed XML document to a file handle, using the-   FastPackedString interface (output will not be prettified).-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="7"->Explicit representation of Haskell datatype information-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HaXml-TypeMapping.html"->Text.XML.HaXml.TypeMapping</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="8"->Types useful for some content models-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AList1"-></A-><B->List1</B-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#List1"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->The List1 type represents lists with at least one element.-   It is required for DTD content models that use + as a modifier.-</TD-></TR-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ANonEmpty"-></A-><B->NonEmpty</B-> [a]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:List1')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:List1" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->??? a =&gt; Eq (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"->List1</A-> a)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"->HTypeable</A-> a =&gt; <A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"->HTypeable</A-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"->List1</A-> a)</TD-></TR-><TR-><TD CLASS="decl"->??? a =&gt; Show (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"->List1</A-> a)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> a =&gt; <A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> (<A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"->List1</A-> a)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AANYContent"-></A-><B->ANYContent</B-> </TD-><TD CLASS="declbut"-><A HREF="src/Text/XML/HaXml/XmlContent.html#ANYContent"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"-><P->A type corresponding to XML's ANY contentspec.-   It is either a list of unconverted xml <TT-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-></TT->-   or some <TT-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-></TT->-able value.-</P-><P->Parsing functions (e.g. <TT-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AparseContents"->parseContents</A-></TT->) will always produce <TT-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AUnConverted"->UnConverted</A-></TT->.- Note: The Show instance for <TT-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AUnConverted"->UnConverted</A-></TT-> uses <TT-><A HREF="Text-XML-HaXml-Verbatim.html#v%3Averbatim"->verbatim</A-></TT->.-</P-></TD-></TR-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><SPAN CLASS="keyword"->forall</SPAN-> a . (XmlContent a, Show a) =&gt; <A NAME="v%3AANYContent"-></A-><B->ANYContent</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AUnConverted"-></A-><B->UnConverted</B-> [<A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Content</A-> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"->Posn</A->]</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ANYContent')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:ANYContent" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"->ANYContent</A-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable"->HTypeable</A-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"->ANYContent</A-></TD-></TR-><TR-><TD CLASS="decl"->Show <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"->ANYContent</A-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->XmlContent</A-> <A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"->ANYContent</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD+>Re-export everything from Text.XML.HaXml.XmlContent.Parser.+</A+></DT+><DT+><A HREF="#2"+>Contains instances of the XmlContent classes,+</A+></DT+><DT+><A HREF="#3"+>Whole-document conversion functions+</A+></DT+></DL+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Description</TD+></TR+><TR+><TD CLASS="doc"+><P+>The class <TT+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+></TT+> is a kind of replacement for Read and Show:+   it provides conversions between a generic XML tree representation+   and your own more specialised typeful Haskell data trees.+</P+><P+>If you are starting with an XML DTD, use HaXml's tool DtdToHaskell+   to generate both the Haskell types and the corresponding instances.+</P+><P+>If you are starting with a set of Haskell datatypes, use DrIFT to+   derive instances of this class for you:+       http://repetae.net/john/computer/haskell/DrIFT+   and _do_not_ use the current module, but rather+   Text.XML.HaXml.XmlContent.Haskell, for the correct matching+   instances for standard Haskell datatypes.+</P+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Synopsis</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>module <A HREF="Text-XML-HaXml-XmlContent-Parser.html"+>Text.XML.HaXml.XmlContent.Parser</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoXml"+>toXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfromXml"+>fromXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; Either String a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AreadXml"+>readXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; String -&gt; Either String a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AshowXml"+>showXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfpsShowXml"+>fpsShowXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; ByteString</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfReadXml"+>fReadXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; IO a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfWriteXml"+>fWriteXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfpsWriteXml"+>fpsWriteXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AhGetXml"+>hGetXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; IO a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AhPutXml"+>hPutXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfpsHPutXml"+>fpsHPutXml</A+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="1"+>Re-export everything from Text.XML.HaXml.XmlContent.Parser.+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+>module <A HREF="Text-XML-HaXml-XmlContent-Parser.html"+>Text.XML.HaXml.XmlContent.Parser</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="2"+>Contains instances of the XmlContent classes,+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+><A NAME="3"+>Whole-document conversion functions+</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AtoXml"+></A+><B+>toXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#toXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert a fully-typed XML document to a string (with or without DTD).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfromXml"+></A+><B+>fromXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> <A HREF="Text-XML-HaXml-Posn.html#t%3APosn"+>Posn</A+> -&gt; Either String a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fromXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read a Haskell value from an XML document, ignoring the DTD and+   using the Haskell result type to determine how to parse it.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AreadXml"+></A+><B+>readXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; String -&gt; Either String a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#readXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read a fully-typed XML document from a string.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AshowXml"+></A+><B+>showXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; String</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#showXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert a fully-typed XML document to a string (without DTD).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfpsShowXml"+></A+><B+>fpsShowXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Bool -&gt; a -&gt; ByteString</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsShowXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Convert a fully-typed XML document to a ByteString (without DTD).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfReadXml"+></A+><B+>fReadXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; IO a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fReadXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read an XML document from a file and convert it to a fully-typed+   Haskell value.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfWriteXml"+></A+><B+>fWriteXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fWriteXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Write a fully-typed Haskell value to the given file as an XML+   document.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfpsWriteXml"+></A+><B+>fpsWriteXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; FilePath -&gt; a -&gt; IO ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsWriteXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Write any Haskell value to the given file as an XML document,+   using the FastPackedString interface (output will not be prettified).+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AhGetXml"+></A+><B+>hGetXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; IO a</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#hGetXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Read a fully-typed XML document from a file handle.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AhPutXml"+></A+><B+>hPutXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#hPutXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Write a fully-typed XML document to a file handle.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AfpsHPutXml"+></A+><B+>fpsHPutXml</B+> :: <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>XmlContent</A+> a =&gt; Handle -&gt; Bool -&gt; a -&gt; IO ()</TD+><TD CLASS="declbut"+><A HREF="src/Text/XML/HaXml/XmlContent.html#fpsHPutXml"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Write a fully-typed XML document to a file handle, using the+   FastPackedString interface (output will not be prettified).+</TD ></TR ><TR ><TD CLASS="s15"
docs/HaXml/doc-index-A.html view
@@ -177,17 +177,17 @@ ><TD CLASS="indexannot" >1 (Type/Class)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AANYContent"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AANYContent"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexannot" >2 (Data Constructor)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AANYContent"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AANYContent"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -271,9 +271,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AAttValue" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttValue"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttValue"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -281,9 +281,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AAttValue" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AAttValue"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AAttValue"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -299,9 +299,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AAttribute" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AAttribute"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AAttribute"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -363,9 +363,9 @@ ><TD CLASS="indexentry" >attr2str</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aattr2str"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Aattr2str"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -387,9 +387,9 @@ ><TD CLASS="indexentry" >attributes</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aattributes"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Aattributes"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -411,9 +411,9 @@ ><TD CLASS="indexentry" >attval</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aattval"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Aattval"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ></TABLE ></TD
docs/HaXml/doc-index-C.html view
@@ -183,9 +183,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ACElem" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ACElem"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ACElem"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -201,9 +201,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ACMisc" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ACMisc"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ACMisc"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -219,9 +219,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ACRef" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ACRef"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ACRef"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -229,9 +229,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ACString" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ACString"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ACString"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -295,7 +295,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AConstr" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexannot"@@ -303,7 +303,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AConstr" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -319,9 +319,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AContent" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AContent"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AContent"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -367,8 +367,12 @@ ><TD CLASS="indexentry" >catMaybes</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AcatMaybes"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AcatMaybes"+>Text.XML.HaXml.XmlContent.Parser</A+>, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AcatMaybes" >Text.XML.HaXml.XmlContent</A+>, <A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AcatMaybes"+>Text.XML.HaXml.XmlContent.Haskell</A ></TD ></TR ><TR@@ -447,9 +451,9 @@ ><TD CLASS="indexentry" >choice</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Achoice"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Achoice"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -519,9 +523,9 @@ ><TD CLASS="indexannot" >6 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Acontent"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Acontent"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"
docs/HaXml/doc-index-D.html view
@@ -213,9 +213,9 @@ ><TD CLASS="indexentry" >Default</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3ADefault"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ADefault"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -249,9 +249,9 @@ ><TD CLASS="indexannot" >2 (Type/Class)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3ADefaultable"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADefaultable"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -271,7 +271,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3ADefined" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -291,9 +291,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3ADocument" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3ADocument"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3ADocument"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -301,9 +301,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ADocument" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ADocument"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ADocument"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -349,33 +349,33 @@ ><TD CLASS="indexentry" >defaultA</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AdefaultA"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AdefaultA"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >defaultToAttr</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AdefaultToAttr"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AdefaultToAttr"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >definite</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Adefinite"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Adefinite"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >definiteA</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AdefiniteA"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AdefiniteA"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"
docs/HaXml/doc-index-E.html view
@@ -359,9 +359,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AElem" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AElem"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AElem"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -373,9 +373,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AElemTag" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElemTag"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElemTag"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -383,9 +383,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AElemTag" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AElemTag"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AElemTag"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -397,9 +397,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AElement" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AElement"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AElement"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -825,17 +825,17 @@ ><TD CLASS="indexannot" >6 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Aelement"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Aelement"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >elementWith</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AelementWith"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AelementWith"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"
docs/HaXml/doc-index-F.html view
@@ -550,22 +550,46 @@ ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >fReadXml</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfReadXml" >Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AfReadXml"+>Text.XML.HaXml.XmlContent.Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >fWriteXml</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfWriteXml" >Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AfWriteXml"+>Text.XML.HaXml.XmlContent.Haskell</A+></TD+></TR+><TR ><TD CLASS="indexentry" >find</TD ><TD CLASS="indexlinks"@@ -598,59 +622,107 @@ ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >fpsHPutXml</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfpsHPutXml" >Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AfpsHPutXml"+>Text.XML.HaXml.XmlContent.Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >fpsShowXml</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfpsShowXml" >Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AfpsShowXml"+>Text.XML.HaXml.XmlContent.Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2" >fpsWriteXml</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfpsWriteXml" >Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AfpsWriteXml"+>Text.XML.HaXml.XmlContent.Haskell</A+></TD+></TR+><TR ><TD CLASS="indexentry" >fromAttrToStr</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfromAttrToStr"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AfromAttrToStr"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >fromAttrToTyp</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfromAttrToTyp"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AfromAttrToTyp"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >fromAttrs</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfromAttrs"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AfromAttrs"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >fromXml</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AfromXml" >Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AfromXml"+>Text.XML.HaXml.XmlContent.Haskell</A ></TD ></TR ><TR
docs/HaXml/doc-index-H.html view
@@ -167,7 +167,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHType" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -175,7 +175,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#t%3AHTypeable" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -210,14 +210,26 @@ >, Text.XML.HaXml</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >hGetXml</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AhGetXml" >Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AhGetXml"+>Text.XML.HaXml.XmlContent.Haskell</A+></TD+></TR+><TR ><TD CLASS="indexentry" >hName</TD ><TD CLASS="indexlinks"@@ -226,11 +238,23 @@ ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >hPutXml</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AhPutXml" >Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AhPutXml"+>Text.XML.HaXml.XmlContent.Haskell</A ></TD ></TR ><TR
docs/HaXml/doc-index-I.html view
@@ -333,17 +333,17 @@ ><TD CLASS="indexentry" >inElement</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AinElement"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AinElement"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >inElementWith</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AinElementWith"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AinElementWith"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -365,9 +365,9 @@ ><TD CLASS="indexentry" >interior</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Ainterior"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Ainterior"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"
docs/HaXml/doc-index-L.html view
@@ -187,7 +187,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AList" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -205,9 +205,9 @@ ><TD CLASS="indexannot" >2 (Type/Class)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AList1"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AList1"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"
docs/HaXml/doc-index-M.html view
@@ -195,7 +195,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AMaybe" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -269,17 +269,17 @@ ><TD CLASS="indexentry" >maybeToAttr</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AmaybeToAttr"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AmaybeToAttr"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >mkAttr</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AmkAttr"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AmkAttr"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -297,9 +297,9 @@ ><TD CLASS="indexannot" >2 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AmkElem"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AmkElem"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -313,9 +313,9 @@ ><TD CLASS="indexentry" >mkElemC</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AmkElemC"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AmkElemC"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"
docs/HaXml/doc-index-N.html view
@@ -377,17 +377,17 @@ ><TD CLASS="indexentry" >NonDefault</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3ANonDefault"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ANonDefault"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >NonEmpty</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3ANonEmpty"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ANonEmpty"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"
docs/HaXml/doc-index-P.html view
@@ -303,7 +303,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3APrim" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -323,9 +323,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AProlog" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AProlog"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AProlog"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexannot"@@ -333,9 +333,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3AProlog" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3AProlog"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AProlog"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -377,9 +377,9 @@ ><TD CLASS="indexentry" >parseContents</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AparseContents"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AparseContents"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -433,17 +433,17 @@ ><TD CLASS="indexentry" >posnElement</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AposnElement"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AposnElement"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >posnElementWith</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AposnElementWith"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AposnElementWith"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -465,9 +465,9 @@ ><TD CLASS="indexentry" >possibleA</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3ApossibleA"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ApossibleA"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"
docs/HaXml/doc-index-R.html view
@@ -175,9 +175,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ARefChar" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ARefChar"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ARefChar"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -185,9 +185,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#v%3ARefEntity" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#v%3ARefEntity"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3ARefEntity"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -195,9 +195,9 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-Types.html#t%3AReference" >Text.XML.HaXml.Types</A->, <A HREF="Text-XML-HaXml-XmlContent.html#t%3AReference"->Text.XML.HaXml.XmlContent</A->, Text.XML.HaXml</TD+>, <A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AReference"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell, Text.XML.HaXml</TD ></TR ><TR ><TD CLASS="indexentry"@@ -208,11 +208,23 @@ ></TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >readXml</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AreadXml" >Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AreadXml"+>Text.XML.HaXml.XmlContent.Haskell</A ></TD ></TR ><TR
docs/HaXml/doc-index-S.html view
@@ -603,7 +603,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AString" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -671,7 +671,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AshowConstr" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -679,17 +679,29 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AshowHType" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >showXml</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AshowXml" >Text.XML.HaXml.XmlContent</A ></TD ></TR ><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AshowXml"+>Text.XML.HaXml.XmlContent.Haskell</A+></TD+></TR+><TR ><TD CLASS="indexentry" >showXmlLazy</TD ><TD CLASS="indexlinks"@@ -737,9 +749,9 @@ ><TD CLASS="indexentry" >str2attr</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Astr2attr"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Astr2attr"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ></TABLE ></TD
docs/HaXml/doc-index-T.html view
@@ -843,7 +843,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3ATuple" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -1129,9 +1129,9 @@ ><TD CLASS="indexentry" >text</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3Atext"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3Atext"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -1165,41 +1165,41 @@ ><TD CLASS="indexentry" >toAttrFrStr</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoAttrFrStr"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AtoAttrFrStr"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >toAttrFrTyp</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoAttrFrTyp"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AtoAttrFrTyp"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >toAttrs</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoAttrs"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AtoAttrs"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >toCData</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoCData"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AtoCData"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >toContents</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoContents"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AtoContents"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -1207,7 +1207,7 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AtoDTD" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -1215,22 +1215,34 @@ ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-TypeMapping.html#v%3AtoHType" >Text.XML.HaXml.TypeMapping</A->, Text.XML.HaXml.XmlContent</TD+>, Text.XML.HaXml.XmlContent.Parser, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >toText</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoText"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AtoText"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR-><TD CLASS="indexentry"+><TD CLASS="indexentry" COLSPAN="2" >toXml</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD ><TD CLASS="indexlinks" ><A HREF="Text-XML-HaXml-XmlContent.html#v%3AtoXml" >Text.XML.HaXml.XmlContent</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html#v%3AtoXml"+>Text.XML.HaXml.XmlContent.Haskell</A ></TD ></TR ><TR
docs/HaXml/doc-index-U.html view
@@ -165,9 +165,9 @@ ><TD CLASS="indexentry" >UnConverted</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AUnConverted"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AUnConverted"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"
docs/HaXml/doc-index-X.html view
@@ -185,9 +185,9 @@ ><TD CLASS="indexentry" >XMLParser</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXMLParser"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXMLParser"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" COLSPAN="2"@@ -213,25 +213,25 @@ ><TD CLASS="indexentry" >XmlAttrType</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlAttrType"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlAttrType"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >XmlAttributes</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlAttributes"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlAttributes"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry" >XmlContent</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#t%3AXmlContent"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#t%3AXmlContent"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -253,9 +253,9 @@ ><TD CLASS="indexentry" >xFromChar</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AxFromChar"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AxFromChar"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"@@ -269,9 +269,9 @@ ><TD CLASS="indexentry" >xToChar</TD ><TD CLASS="indexlinks"-><A HREF="Text-XML-HaXml-XmlContent.html#v%3AxToChar"->Text.XML.HaXml.XmlContent</A-></TD+><A HREF="Text-XML-HaXml-XmlContent-Parser.html#v%3AxToChar"+>Text.XML.HaXml.XmlContent.Parser</A+>, Text.XML.HaXml.XmlContent, Text.XML.HaXml.XmlContent.Haskell</TD ></TR ><TR ><TD CLASS="indexentry"
docs/HaXml/index.html view
@@ -348,7 +348,8 @@ ></TD ></TR ><TR-><TD STYLE="padding-left: 1.25em;width: 44em"+><TD STYLE="width: 44em"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:5')" ALT="show/hide" ><A HREF="Text-XML-HaXml-XmlContent.html" >Text.XML.HaXml.XmlContent</A ></TD@@ -358,8 +359,34 @@ ></TD ></TR ><TR+><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:5" STYLE="display:block;"+><TR+><TD STYLE="padding-left: 1.25em;width: 42em"+><A HREF="Text-XML-HaXml-XmlContent-Haskell.html"+>Text.XML.HaXml.XmlContent.Haskell</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 42em"+><A HREF="Text-XML-HaXml-XmlContent-Parser.html"+>Text.XML.HaXml.XmlContent.Parser</A+></TD+><TD+></TD+><TD+></TD+></TR+></TABLE+></TD+></TR+><TR ><TD STYLE="width: 44em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:5')" ALT="show/hide"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:6')" ALT="show/hide" >Xtract</TD ><TD ></TD@@ -368,7 +395,7 @@ ></TR ><TR ><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:5" STYLE="display:block;"+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:6" STYLE="display:block;" ><TR ><TD STYLE="padding-left: 1.25em;width: 42em" ><A HREF="Text-XML-HaXml-Xtract-Combinators.html"
docs/HaXml/src/Text/XML/HaXml/XmlContent.html view
@@ -5,894 +5,182 @@ <title>src/Text/XML/HaXml/XmlContent.hs</title> </head> <body>-<pre><a name="line-1"></a><font color=Blue>{-# LANGUAGE ExistentialQuantification #-}</font>-<a name="line-2"></a>-<a name="line-3"></a><font color=Blue>-- | The class 'XmlContent' is a kind of replacement for Read and Show:</font>-<a name="line-4"></a><font color=Blue>--   it provides conversions between a generic XML tree representation</font>-<a name="line-5"></a><font color=Blue>--   and your own more specialised typeful Haskell data trees.</font>-<a name="line-6"></a><font color=Blue>--</font>-<a name="line-7"></a><font color=Blue>--   If you are starting with a set of Haskell datatypes, use DrIFT to</font>-<a name="line-8"></a><font color=Blue>--   derive instances of this class for you:</font>-<a name="line-9"></a><font color=Blue>--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT</font>-<a name="line-10"></a><font color=Blue>--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell</font>-<a name="line-11"></a><font color=Blue>--   to generate both the Haskell types and the corresponding instances.</font>-<a name="line-12"></a><font color=Blue>--</font>-<a name="line-13"></a><font color=Blue>--   This unified class interface replaces two previous (somewhat similar)</font>-<a name="line-14"></a><font color=Blue>--   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have</font>-<a name="line-15"></a><font color=Blue>--   separate classes depending on how you originally defined your datatypes.</font>-<a name="line-16"></a>-<a name="line-17"></a><font color=Blue>--   The methods 'toContents' and 'parseContents' convert a value to and from</font>-<a name="line-18"></a><font color=Blue>--   a generic internal representation of an XML document /without/ a DTD.</font>-<a name="line-19"></a><font color=Blue>--   The functions 'toXml' and 'fromXml' convert a value to and from a generic</font>-<a name="line-20"></a><font color=Blue>--   internal representation of an XML document /including/ a DTD.</font>-<a name="line-21"></a><font color=Blue>--   The functions 'readXml' and 'showXml' convert to and from Strings.</font>-<a name="line-22"></a><font color=Blue>--   The functions 'fReadXml' and 'fWriteXml' do the conversion to and from</font>-<a name="line-23"></a><font color=Blue>--   the given filenames.</font>-<a name="line-24"></a><font color=Blue>--   The functions 'hGetXml' and 'hPutXml' do the conversion to and from</font>-<a name="line-25"></a><font color=Blue>--   the given file handles.</font>-<a name="line-26"></a><font color=Blue>--   (See the type signatures.)</font>-<a name="line-27"></a><font color=Blue>--</font>-<a name="line-28"></a>-<a name="line-29"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent-<a name="line-30"></a>  <font color=Cyan>(</font> <font color=Blue>-- * Re-export the relevant set of generic XML document type definitions</font>-<a name="line-31"></a>    Document<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-32"></a>  <font color=Cyan>,</font> Element<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-33"></a>  <font color=Cyan>,</font> ElemTag<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-34"></a>  <font color=Cyan>,</font> Content<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-35"></a>  <font color=Cyan>,</font> Attribute()-<a name="line-36"></a>  <font color=Cyan>,</font> AttValue<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-37"></a>  <font color=Cyan>,</font> Prolog<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-38"></a>  <font color=Cyan>,</font> Reference<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-39"></a>  <font color=Blue>-- * The enabling classes, that define parsing\/unparsing between Haskell</font>-<a name="line-40"></a>  <font color=Blue>--   datatypes and a generic XML representation.</font>-<a name="line-41"></a>  <font color=Cyan>,</font> XmlContent<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-42"></a>  <font color=Cyan>,</font> XmlAttributes<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-43"></a>  <font color=Cyan>,</font> XmlAttrType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-44"></a>  <font color=Blue>-- ** Auxiliaries for writing parsers in the XmlContent class</font>-<a name="line-45"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly-<a name="line-46"></a>  <font color=Cyan>,</font> XMLParser-<a name="line-47"></a>  <font color=Cyan>,</font> content<font color=Cyan>,</font> posnElement<font color=Cyan>,</font> element<font color=Cyan>,</font> interior<font color=Cyan>,</font> inElement<font color=Cyan>,</font> text<font color=Cyan>,</font> attributes-<a name="line-48"></a>  <font color=Cyan>,</font> posnElementWith<font color=Cyan>,</font> elementWith<font color=Cyan>,</font> inElementWith-<a name="line-49"></a>  <font color=Cyan>,</font> choice<font color=Cyan>,</font> definite <font color=Blue>-- ???</font>-<a name="line-50"></a>  <font color=Blue>-- ** Auxiliaries for generating in the XmlContent class</font>-<a name="line-51"></a>  <font color=Cyan>,</font> mkElem<font color=Cyan>,</font> mkElemC<font color=Cyan>,</font> mkAttr-<a name="line-52"></a>  <font color=Cyan>,</font> toText<font color=Cyan>,</font> toCData-<a name="line-53"></a>  <font color=Blue>-- ** Auxiliaries for the attribute-related classes</font>-<a name="line-54"></a>  <font color=Cyan>,</font> maybeToAttr<font color=Cyan>,</font> defaultToAttr-<a name="line-55"></a>  <font color=Cyan>,</font> definiteA<font color=Cyan>,</font> defaultA<font color=Cyan>,</font> possibleA<font color=Cyan>,</font> fromAttrToStr<font color=Cyan>,</font> toAttrFrStr-<a name="line-56"></a>  <font color=Cyan>,</font> Defaultable<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-57"></a>  <font color=Cyan>,</font> str2attr<font color=Cyan>,</font> attr2str<font color=Cyan>,</font> attval-<a name="line-58"></a>  <font color=Cyan>,</font> catMaybes   <font color=Blue>-- re-exported from Maybe</font>-<a name="line-59"></a>  <font color=Blue>-- * Whole-document conversion functions</font>-<a name="line-60"></a>  <font color=Cyan>,</font> toXml<font color=Cyan>,</font> fromXml-<a name="line-61"></a>  <font color=Cyan>,</font> readXml<font color=Cyan>,</font> showXml<font color=Cyan>,</font> fpsShowXml-<a name="line-62"></a>  <font color=Cyan>,</font> fReadXml<font color=Cyan>,</font> fWriteXml<font color=Cyan>,</font> fpsWriteXml-<a name="line-63"></a>  <font color=Cyan>,</font> hGetXml<font color=Cyan>,</font>  hPutXml<font color=Cyan>,</font> fpsHPutXml-<a name="line-64"></a>  <font color=Blue>-- * Explicit representation of Haskell datatype information</font>-<a name="line-65"></a>  <font color=Blue>--   (for conversion to a DTD)</font>-<a name="line-66"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping-<a name="line-67"></a>  <font color=Blue>-- * Types useful for some content models</font>-<a name="line-68"></a>  <font color=Cyan>,</font> List1<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-69"></a>  <font color=Cyan>,</font> ANYContent<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-70"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-71"></a>-<a name="line-72"></a><font color=Green><u>import</u></font> IO-<a name="line-73"></a><font color=Green><u>import</u></font> Maybe <font color=Cyan>(</font>catMaybes<font color=Cyan>)</font>-<a name="line-74"></a><font color=Green><u>import</u></font> Char  <font color=Cyan>(</font>chr<font color=Cyan>,</font> isSpace<font color=Cyan>)</font>-<a name="line-75"></a><font color=Green><u>import</u></font> List  <font color=Cyan>(</font>isPrefixOf<font color=Cyan>,</font> isSuffixOf<font color=Cyan>)</font>-<a name="line-76"></a>-<a name="line-77"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>-<a name="line-78"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty <font color=Green><u>as</u></font> PP-<a name="line-79"></a>-<a name="line-80"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types-<a name="line-81"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping-<a name="line-82"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn     <font color=Cyan>(</font>Posn<font color=Cyan>,</font> posInNewCxt<font color=Cyan>)</font>-<a name="line-83"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty   <font color=Cyan>(</font>document<font color=Cyan>)</font>-<a name="line-84"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse    <font color=Cyan>(</font>xmlParse<font color=Cyan>)</font>-<a name="line-85"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim <font color=Cyan>(</font>Verbatim<font color=Cyan>(</font>verbatim<font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-86"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>ByteStringPP <font color=Green><u>as</u></font> FPS <font color=Cyan>(</font>document<font color=Cyan>)</font>-<a name="line-87"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8 <font color=Green><u>as</u></font> FPS-<a name="line-88"></a>-<a name="line-89"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly-<a name="line-90"></a>-<a name="line-91"></a><font color=Blue>--  #define DEBUG</font>-<a name="line-92"></a>-<a name="line-93"></a><font color=Magenta><em>#if defined(DEBUG)</em></font>-<a name="line-94"></a><font color=Green><u>import</u></font> Debug<font color=Cyan>.</font>Trace<font color=Cyan>(</font>trace<font color=Cyan>)</font>-<a name="line-95"></a><a name="debug"></a><font color=Blue>debug</font> <font color=Red>::</font> a <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> a-<a name="line-96"></a><a name="debug"></a><font color=Blue>v</font> <font color=Cyan>`debug`</font> s <font color=Red>=</font> trace s v-<a name="line-97"></a><font color=Magenta><em>#else</em></font>-<a name="line-98"></a><font color=Blue>debug</font> <font color=Red>::</font> t <font color=Red>-&gt;</font> t1 <font color=Red>-&gt;</font> t-<a name="line-99"></a><a name="debug"></a><font color=Blue>v</font> <font color=Cyan>`debug`</font> <font color=Green><u>_</u></font> <font color=Red>=</font> v-<a name="line-100"></a><font color=Magenta><em>#endif</em></font>-<a name="line-101"></a>-<a name="line-102"></a>-<a name="line-103"></a><a name="attval"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-104"></a><font color=Blue>-- | Read a single attribute called "value".</font>-<a name="line-105"></a><font color=Blue>attval</font> <font color=Red>::</font> <font color=Cyan>(</font>Read a<font color=Cyan>)</font> <font color=Red>=&gt;</font> Element i <font color=Red>-&gt;</font> a-<a name="line-106"></a><font color=Blue>attval</font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Red>[</font><font color=Cyan>(</font><font color=Magenta>"value"</font><font color=Cyan>,</font>v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> <font color=Red>=</font> read <font color=Cyan>(</font>show v<font color=Cyan>)</font>-<a name="line-107"></a>-<a name="line-108"></a><a name="mkAttr"></a><font color=Blue>-- | Generate a single attribute.</font>-<a name="line-109"></a><font color=Blue>mkAttr</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Attribute-<a name="line-110"></a><font color=Blue>mkAttr</font> n v <font color=Red>=</font> <font color=Cyan>(</font>n<font color=Cyan>,</font> AttValue <font color=Red>[</font>Left v<font color=Red>]</font><font color=Cyan>)</font>-<a name="line-111"></a>-<a name="line-112"></a><a name="mkElem"></a><font color=Blue>-- | Generate an element with no attributes, named for its HType.</font>-<a name="line-113"></a><font color=Blue>mkElem</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font> <font color=Red>-&gt;</font> Content ()-<a name="line-114"></a><font color=Blue>mkElem</font> x cs  <font color=Red>=</font> CElem <font color=Cyan>(</font>Elem <font color=Cyan>(</font>showHType <font color=Cyan>(</font>toHType x<font color=Cyan>)</font> <font color=Magenta>""</font><font color=Cyan>)</font> [] cs<font color=Cyan>)</font> ()-<a name="line-115"></a>-<a name="line-116"></a><a name="mkElemC"></a><font color=Blue>-- | Generate an element with no attributes, named directly.</font>-<a name="line-117"></a><font color=Blue>mkElemC</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font> <font color=Red>-&gt;</font> Content ()-<a name="line-118"></a><font color=Blue>mkElemC</font> x cs <font color=Red>=</font> CElem <font color=Cyan>(</font>Elem x [] cs<font color=Cyan>)</font> ()-<a name="line-119"></a>-<a name="line-120"></a><a name="toText"></a><font color=Blue>-- | Turn a simple string into XML text.</font>-<a name="line-121"></a><font color=Blue>toText</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>-<a name="line-122"></a><font color=Blue>toText</font> s <font color=Red>=</font> <font color=Red>[</font>CString False s ()<font color=Red>]</font>-<a name="line-123"></a>-<a name="line-124"></a><a name="toCData"></a><font color=Blue>-- | Turn a string into an XML CDATA section.</font>-<a name="line-125"></a><font color=Blue>--   (i.e. special characters like '&amp;' are preserved without interpretation.)</font>-<a name="line-126"></a><font color=Blue>toCData</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>-<a name="line-127"></a><font color=Blue>toCData</font> s <font color=Red>=</font> <font color=Red>[</font>CString True s ()<font color=Red>]</font>-<a name="line-128"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-129"></a>-<a name="line-130"></a>        <font color=Blue>-- probably want to write DTD separately from value, and have</font>-<a name="line-131"></a>        <font color=Blue>-- easy ways to combine DTD + value into a document, or write</font>-<a name="line-132"></a>        <font color=Blue>-- them to separate files.</font>-<a name="line-133"></a>-<a name="line-134"></a><a name="fReadXml"></a><font color=Blue>-- | Read an XML document from a file and convert it to a fully-typed</font>-<a name="line-135"></a><font color=Blue>--   Haskell value.</font>-<a name="line-136"></a><font color=Blue>fReadXml</font>  <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> IO a-<a name="line-137"></a><font color=Blue>fReadXml</font> fp <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-138"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdin-<a name="line-139"></a>           <font color=Green><u>else</u></font> openFile fp ReadMode <font color=Cyan>)</font>-<a name="line-140"></a>    x <font color=Red>&lt;-</font> hGetContents f-<a name="line-141"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse fp x-<a name="line-142"></a>        y' <font color=Red>=</font> CElem y <font color=Cyan>(</font>posInNewCxt fp Nothing<font color=Cyan>)</font>-<a name="line-143"></a>    either fail return <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents <font color=Red>[</font>y'<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-144"></a>-<a name="line-145"></a><a name="fWriteXml"></a><font color=Blue>-- | Write a fully-typed Haskell value to the given file as an XML</font>-<a name="line-146"></a><font color=Blue>--   document.</font>-<a name="line-147"></a><font color=Blue>fWriteXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()-<a name="line-148"></a><font color=Blue>fWriteXml</font> fp x <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-149"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout-<a name="line-150"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>-<a name="line-151"></a>    hPutXml f False x-<a name="line-152"></a>    hClose f-<a name="line-153"></a>-<a name="line-154"></a><a name="fpsWriteXml"></a><font color=Blue>-- | Write any Haskell value to the given file as an XML document,</font>-<a name="line-155"></a><font color=Blue>--   using the FastPackedString interface (output will not be prettified).</font>-<a name="line-156"></a><font color=Blue>fpsWriteXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()-<a name="line-157"></a><font color=Blue>fpsWriteXml</font> fp x <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-158"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout-<a name="line-159"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>-<a name="line-160"></a>    fpsHPutXml f False x-<a name="line-161"></a>    hClose f-<a name="line-162"></a>-<a name="line-163"></a><a name="readXml"></a><font color=Blue>-- | Read a fully-typed XML document from a string.</font>-<a name="line-164"></a><font color=Blue>readXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> Either String a-<a name="line-165"></a><font color=Blue>readXml</font> s <font color=Red>=</font>-<a name="line-166"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"string input"</font> s <font color=Green><u>in</u></font>-<a name="line-167"></a>    fst <font color=Cyan>(</font>runParser parseContents-<a name="line-168"></a>                   <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"string input"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>-<a name="line-169"></a>-<a name="line-170"></a><a name="showXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (without DTD).</font>-<a name="line-171"></a><font color=Blue>showXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> String-<a name="line-172"></a><font color=Blue>showXml</font> dtd x <font color=Red>=</font>-<a name="line-173"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>-<a name="line-174"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x-<a name="line-175"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Magenta>""</font>-<a name="line-176"></a>-<a name="line-177"></a><a name="fpsShowXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a ByteString (without DTD).</font>-<a name="line-178"></a><font color=Blue>fpsShowXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>ByteString-<a name="line-179"></a><font color=Blue>fpsShowXml</font> dtd x <font color=Red>=</font>-<a name="line-180"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>-<a name="line-181"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x-<a name="line-182"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>empty-<a name="line-183"></a>-<a name="line-184"></a>-<a name="line-185"></a><a name="toXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (with or without DTD).</font>-<a name="line-186"></a><font color=Blue>toXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Document ()-<a name="line-187"></a><font color=Blue>toXml</font> dtd value <font color=Red>=</font>-<a name="line-188"></a>    <font color=Green><u>let</u></font> ht <font color=Red>=</font> toHType value <font color=Green><u>in</u></font>-<a name="line-189"></a>    Document <font color=Cyan>(</font>Prolog <font color=Cyan>(</font>Just <font color=Cyan>(</font>XMLDecl <font color=Magenta>"1.0"</font> Nothing Nothing<font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-190"></a>                     [] <font color=Cyan>(</font><font color=Green><u>if</u></font> dtd <font color=Green><u>then</u></font> Just <font color=Cyan>(</font>toDTD ht<font color=Cyan>)</font> <font color=Green><u>else</u></font> Nothing<font color=Cyan>)</font> []<font color=Cyan>)</font>-<a name="line-191"></a>             emptyST-<a name="line-192"></a>             <font color=Cyan>(</font> <font color=Green><u>case</u></font> <font color=Cyan>(</font>ht<font color=Cyan>,</font> toContents value<font color=Cyan>)</font> <font color=Green><u>of</u></font>-<a name="line-193"></a>                 <font color=Cyan>(</font>Tuple <font color=Green><u>_</u></font><font color=Cyan>,</font> cs<font color=Cyan>)</font>       <font color=Red>-&gt;</font> Elem <font color=Cyan>(</font>showHType ht <font color=Magenta>""</font><font color=Cyan>)</font> [] cs-<a name="line-194"></a>                 <font color=Cyan>(</font>Defined <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>,</font> cs<font color=Cyan>)</font> <font color=Red>-&gt;</font> Elem <font color=Cyan>(</font>showHType ht <font color=Magenta>"-XML"</font><font color=Cyan>)</font> [] cs-<a name="line-195"></a>                 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Red>[</font>CElem e ()<font color=Red>]</font><font color=Cyan>)</font>   <font color=Red>-&gt;</font> e <font color=Cyan>)</font>-<a name="line-196"></a>             []-<a name="line-197"></a>-<a name="line-198"></a><a name="fromXml"></a><font color=Blue>-- | Read a Haskell value from an XML document, ignoring the DTD and</font>-<a name="line-199"></a><font color=Blue>--   using the Haskell result type to determine how to parse it.</font>-<a name="line-200"></a><font color=Blue>fromXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Document Posn <font color=Red>-&gt;</font> Either String a-<a name="line-201"></a><font color=Blue>fromXml</font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font>-<a name="line-202"></a>  <font color=Red>|</font> <font color=Magenta>"tuple"</font> <font color=Cyan>`isPrefixOf`</font> n <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents cs<font color=Cyan>)</font>-<a name="line-203"></a>  <font color=Red>|</font> <font color=Magenta>"-XML"</font>  <font color=Cyan>`isSuffixOf`</font> n <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents cs<font color=Cyan>)</font>-<a name="line-204"></a>  <font color=Red>|</font> otherwise <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents-<a name="line-205"></a>                               <font color=Red>[</font>CElem e <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"document"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>-<a name="line-206"></a>-<a name="line-207"></a>-<a name="line-208"></a><a name="hGetXml"></a><font color=Blue>-- | Read a fully-typed XML document from a file handle.</font>-<a name="line-209"></a><font color=Blue>hGetXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> IO a-<a name="line-210"></a><font color=Blue>hGetXml</font> h <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-211"></a>    x <font color=Red>&lt;-</font> hGetContents h-<a name="line-212"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"file handle"</font> x-<a name="line-213"></a>    either fail return-<a name="line-214"></a>           <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents-<a name="line-215"></a>                           <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"file handle"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-216"></a>-<a name="line-217"></a><a name="hPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle.</font>-<a name="line-218"></a><font color=Blue>hPutXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()-<a name="line-219"></a><font color=Blue>hPutXml</font> h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-220"></a>    <font color=Cyan>(</font>hPutStrLn h <font color=Cyan>.</font> render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x-<a name="line-221"></a>-<a name="line-222"></a><a name="fpsHPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle, using the</font>-<a name="line-223"></a><font color=Blue>--   FastPackedString interface (output will not be prettified).</font>-<a name="line-224"></a><font color=Blue>fpsHPutXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()-<a name="line-225"></a><font color=Blue>fpsHPutXml</font> h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-226"></a>    <font color=Cyan>(</font>FPS<font color=Cyan>.</font>hPut h <font color=Cyan>.</font> FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x-<a name="line-227"></a>-<a name="line-228"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-229"></a>-<a name="line-230"></a><a name="XMLParser"></a><font color=Blue>-- | We need a parsing monad for reading generic XML Content into specific</font>-<a name="line-231"></a><a name="XMLParser"></a><font color=Blue>--   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly</font>-<a name="line-232"></a><a name="XMLParser"></a><font color=Blue>--   ones, where the input token type is fixed as XML Content.</font>-<a name="line-233"></a><a name="XMLParser"></a><font color=Green><u>type</u></font> XMLParser a <font color=Red>=</font> Parser <font color=Cyan>(</font>Content Posn<font color=Cyan>)</font> a-<a name="line-234"></a>-<a name="line-235"></a>-<a name="line-236"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-237"></a><font color=Blue>-- Some useful parsing combinators</font>-<a name="line-238"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-239"></a>-<a name="line-240"></a><a name="content"></a><font color=Blue>-- | The most primitive combinator for XMLParser - get one content item.</font>-<a name="line-241"></a><font color=Blue>content</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Content Posn<font color=Cyan>)</font>-<a name="line-242"></a><font color=Blue>content</font> word <font color=Red>=</font> next <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>" when expecting "</font><font color=Cyan>++</font>word<font color=Cyan>)</font>-<a name="line-243"></a>-<a name="line-244"></a><a name="posnElementWith"></a><font color=Blue>-- | Get the next content element, checking that it has one of the required</font>-<a name="line-245"></a><font color=Blue>--   tags, using the given matching function.</font>-<a name="line-246"></a><font color=Blue>--   (Skips over comments and whitespace, rejects text and refs.</font>-<a name="line-247"></a><font color=Blue>--    Also returns position of element.)</font>-<a name="line-248"></a><font color=Blue>posnElementWith</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font>-<a name="line-249"></a>                   <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Posn<font color=Cyan>,</font> Element Posn<font color=Cyan>)</font>-<a name="line-250"></a><font color=Blue>posnElementWith</font> match tags <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-251"></a>    <font color=Cyan>{</font> c <font color=Red>&lt;-</font> content <font color=Cyan>(</font>formatted tags<font color=Cyan>)</font>-<a name="line-252"></a>    <font color=Cyan>;</font> <font color=Green><u>case</u></font> c <font color=Green><u>of</u></font>-<a name="line-253"></a>          CElem e<font color=Red>@</font><font color=Cyan>(</font>Elem t <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> pos-<a name="line-254"></a>              <font color=Red>|</font> any <font color=Cyan>(</font>match t<font color=Cyan>)</font> tags <font color=Red>-&gt;</font> return <font color=Cyan>(</font>pos<font color=Cyan>,</font> e<font color=Cyan>)</font>-<a name="line-255"></a>              <font color=Red>|</font> otherwise          <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found a &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;, but expected "</font>-<a name="line-256"></a>                                           <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>-<a name="line-257"></a>          CString b s pos-<a name="line-258"></a>              <font color=Red>|</font> not b <font color=Cyan>&amp;&amp;</font> all isSpace s <font color=Red>-&gt;</font> posnElementWith match tags-<a name="line-259"></a>                                                        <font color=Blue>-- ignore blank space</font>-<a name="line-260"></a>              <font color=Red>|</font> otherwise <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found text content, but expected "</font>-<a name="line-261"></a>                                  <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\ntext is: "</font><font color=Cyan>++</font>s-<a name="line-262"></a>                                  <font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>-<a name="line-263"></a>          CRef r pos <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found reference, but expected "</font>-<a name="line-264"></a>                             <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\nreference is: "</font><font color=Cyan>++</font>verbatim r-<a name="line-265"></a>                             <font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>-<a name="line-266"></a>          CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> posnElementWith match tags  <font color=Blue>-- skip comments, PIs, etc.</font>-<a name="line-267"></a>    <font color=Cyan>}</font>-<a name="line-268"></a>  <font color=Green><u>where</u></font>-<a name="line-269"></a>    formatted <font color=Red>[</font>t<font color=Red>]</font>  <font color=Red>=</font> <font color=Magenta>"a &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;"</font>-<a name="line-270"></a>    formatted tgs <font color=Red>=</font> <font color=Magenta>"one of"</font><font color=Cyan>++</font> concatMap <font color=Cyan>(</font><font color=Red>\</font>t<font color=Red>-&gt;</font><font color=Magenta>" &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>)</font> tgs-<a name="line-271"></a>-<a name="line-272"></a><a name="posnElement"></a><font color=Blue>-- | A specialisation of @posnElementWith (==)@.</font>-<a name="line-273"></a><font color=Blue>posnElement</font> <font color=Red>::</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Posn<font color=Cyan>,</font> Element Posn<font color=Cyan>)</font>-<a name="line-274"></a><font color=Blue>posnElement</font> <font color=Red>=</font> posnElementWith <font color=Cyan>(</font><font color=Cyan>==</font><font color=Cyan>)</font>-<a name="line-275"></a>-<a name="line-276"></a><a name="element"></a><font color=Blue>-- | Get the next content element, checking that it has one of the required</font>-<a name="line-277"></a><font color=Blue>--   tags.  (Skips over comments and whitespace, rejects text and refs.)</font>-<a name="line-278"></a><font color=Blue>element</font> <font color=Red>::</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Element Posn<font color=Cyan>)</font>-<a name="line-279"></a><font color=Blue>element</font> tags <font color=Red>=</font> fmap snd <font color=Cyan>(</font>posnElement tags<font color=Cyan>)</font>-<a name="line-280"></a>                                <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Element: "</font><font color=Cyan>++</font>unwords tags<font color=Cyan>++</font><font color=Magenta>"\n"</font><font color=Cyan>)</font>-<a name="line-281"></a>-<a name="line-282"></a><a name="elementWith"></a><font color=Blue>-- | Like element, only permits a more flexible match against the tagname.</font>-<a name="line-283"></a><font color=Blue>elementWith</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Element Posn<font color=Cyan>)</font>-<a name="line-284"></a><font color=Blue>elementWith</font> match tags <font color=Red>=</font> fmap snd <font color=Cyan>(</font>posnElementWith match tags<font color=Cyan>)</font>-<a name="line-285"></a>                                <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Element: "</font><font color=Cyan>++</font>unwords tags<font color=Cyan>++</font><font color=Magenta>"\n"</font><font color=Cyan>)</font>-<a name="line-286"></a>-<a name="line-287"></a><a name="interior"></a><font color=Blue>-- | Run an XMLParser on the contents of the given element (i.e. not on the</font>-<a name="line-288"></a><font color=Blue>--   current monadic content sequence), checking that the contents are</font>-<a name="line-289"></a><font color=Blue>--   exhausted, before returning the calculated value within the current</font>-<a name="line-290"></a><font color=Blue>--   parser context.</font>-<a name="line-291"></a><font color=Blue>interior</font> <font color=Red>::</font> Element Posn <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a-<a name="line-292"></a><font color=Blue>interior</font> <font color=Cyan>(</font>Elem e <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> p <font color=Red>=</font>-<a name="line-293"></a>    <font color=Green><u>case</u></font> runParser p cs <font color=Green><u>of</u></font>-<a name="line-294"></a>        <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> fail msg-<a name="line-295"></a>        <font color=Cyan>(</font>Right x<font color=Cyan>,</font> []<font color=Cyan>)</font> <font color=Red>-&gt;</font> return x-<a name="line-296"></a>        <font color=Cyan>(</font>Right x<font color=Cyan>,</font> ds<font color=Red>@</font><font color=Cyan>(</font>d<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-297"></a>            <font color=Red>|</font> all onlyMisc ds <font color=Red>-&gt;</font> return x-<a name="line-298"></a>            <font color=Red>|</font> otherwise       <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Too many elements inside &lt;"</font><font color=Cyan>++</font>e<font color=Cyan>++</font><font color=Magenta>"&gt; at\n"</font>-<a name="line-299"></a>                                      <font color=Cyan>++</font>show <font color=Cyan>(</font>info d<font color=Cyan>)</font><font color=Cyan>++</font><font color=Magenta>"\n"</font>-<a name="line-300"></a>                                      <font color=Cyan>++</font><font color=Magenta>"Found excess: "</font><font color=Cyan>++</font>verbatim d<font color=Cyan>)</font>-<a name="line-301"></a>  <font color=Green><u>where</u></font> onlyMisc <font color=Cyan>(</font>CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True-<a name="line-302"></a>        onlyMisc <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>|</font> all isSpace s <font color=Red>=</font> True-<a name="line-303"></a>        onlyMisc <font color=Green><u>_</u></font> <font color=Red>=</font> False-<a name="line-304"></a>-<a name="line-305"></a><a name="inElement"></a><font color=Blue>-- | A combination of element + interior.</font>-<a name="line-306"></a><font color=Blue>inElement</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a-<a name="line-307"></a><font color=Blue>inElement</font> tag p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font>tag<font color=Red>]</font><font color=Cyan>;</font> commit <font color=Cyan>(</font>interior e p<font color=Cyan>)</font> <font color=Cyan>}</font>-<a name="line-308"></a>-<a name="line-309"></a><a name="inElementWith"></a><font color=Blue>-- | A combination of elementWith + interior.</font>-<a name="line-310"></a><font color=Blue>inElementWith</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a-<a name="line-311"></a><font color=Blue>inElementWith</font> match tag p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> elementWith match <font color=Red>[</font>tag<font color=Red>]</font>-<a name="line-312"></a>                               <font color=Cyan>;</font> commit <font color=Cyan>(</font>interior e p<font color=Cyan>)</font> <font color=Cyan>}</font>-<a name="line-313"></a>-<a name="line-314"></a><a name="attributes"></a><font color=Blue>-- | Do some parsing of the attributes of the given element</font>-<a name="line-315"></a><font color=Blue>attributes</font> <font color=Red>::</font> XmlAttributes a <font color=Red>=&gt;</font> Element Posn <font color=Red>-&gt;</font> XMLParser a-<a name="line-316"></a><font color=Blue>attributes</font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Green><u>as</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> return <font color=Cyan>(</font>fromAttrs <font color=Green><u>as</u></font><font color=Cyan>)</font>-<a name="line-317"></a>-<a name="line-318"></a><a name="text"></a><font color=Blue>-- | 'text' is a counterpart to 'element', parsing text content if it</font>-<a name="line-319"></a><font color=Blue>--   exists.  Adjacent text and references are coalesced.</font>-<a name="line-320"></a><font color=Blue>text</font> <font color=Red>::</font> XMLParser String-<a name="line-321"></a><font color=Blue>text</font> <font color=Red>=</font> text' []-<a name="line-322"></a>  <font color=Green><u>where</u></font> text' acc <font color=Red>=</font>-<a name="line-323"></a>          <font color=Green><u>do</u></font> <font color=Cyan>{</font> c <font color=Red>&lt;-</font> content <font color=Magenta>"plain text"</font>-<a name="line-324"></a>             <font color=Cyan>;</font> <font color=Green><u>case</u></font> c <font color=Green><u>of</u></font>-<a name="line-325"></a>                 CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font>        <font color=Red>-&gt;</font> text' <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font>-<a name="line-326"></a>                 CRef <font color=Cyan>(</font>RefChar s<font color=Cyan>)</font> <font color=Green><u>_</u></font>   <font color=Red>-&gt;</font> text' <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"&amp;#"</font><font color=Cyan>++</font>show s<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font> <font color=Red><b>:</b></font>acc<font color=Cyan>)</font>-<a name="line-327"></a>                 CRef <font color=Cyan>(</font>RefEntity s<font color=Cyan>)</font> <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> text' <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>'&amp;'</font><font color=Red><b>:</b></font>s<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font><font color=Red><b>:</b></font>acc<font color=Cyan>)</font>-<a name="line-328"></a>                 CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font>            <font color=Red>-&gt;</font> text' acc-<a name="line-329"></a>                 CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font>         <font color=Red>-&gt;</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> reparse <font color=Red>[</font>c<font color=Red>]</font> <font color=Blue>-- put it back!</font>-<a name="line-330"></a>                                         <font color=Cyan>;</font> <font color=Green><u>if</u></font> null acc <font color=Green><u>then</u></font> fail <font color=Magenta>"empty string"</font>-<a name="line-331"></a>                                           <font color=Green><u>else</u></font> return <font color=Cyan>(</font>concat <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-332"></a>                                         <font color=Cyan>}</font>-<a name="line-333"></a>             <font color=Cyan>}</font>-<a name="line-334"></a>          <font color=Cyan>`onFail`</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> null acc <font color=Green><u>then</u></font> fail <font color=Magenta>"empty string"</font>-<a name="line-335"></a>                     <font color=Green><u>else</u></font> return <font color=Cyan>(</font>concat <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>)</font>-<a name="line-336"></a>-<a name="line-337"></a>-<a name="line-338"></a><a name="choice"></a><font color=Blue>-- | 'choice f p' means if parseContents succeeds, apply f to the result,</font>-<a name="line-339"></a><font color=Blue>--   otherwise use the continuation parser.</font>-<a name="line-340"></a><font color=Blue>choice</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> <font color=Cyan>(</font>a <font color=Red>-&gt;</font> b<font color=Cyan>)</font> <font color=Red>-&gt;</font> XMLParser b <font color=Red>-&gt;</font> XMLParser b-<a name="line-341"></a><font color=Blue>choice</font> cons <font color=Cyan>(</font>P other<font color=Cyan>)</font> <font color=Red>=</font>-<a name="line-342"></a>    P <font color=Cyan>(</font><font color=Red>\</font>cs<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> runParser parseContents cs <font color=Green><u>of</u></font>-<a name="line-343"></a>                 <font color=Cyan>(</font>Left <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font> other cs-<a name="line-344"></a>                 <font color=Cyan>(</font>Right x<font color=Cyan>,</font> cs'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>cons x<font color=Cyan>)</font><font color=Cyan>,</font> cs'<font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-345"></a>-<a name="line-346"></a><font color=Blue>--choice cons other = fmap cons parseContents `onFail` other</font>-<a name="line-347"></a>-<a name="line-348"></a><a name="definite"></a><font color=Blue>-- | not sure this is needed now.   'definite p' previously ensured that</font>-<a name="line-349"></a><font color=Blue>--   an element was definitely present.  Now I think the monad might take</font>-<a name="line-350"></a><font color=Blue>--   care of that for us.</font>-<a name="line-351"></a><font color=Blue>definite</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> XMLParser a <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> XMLParser a-<a name="line-352"></a><font color=Blue>definite</font> p inner tag <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>cs<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> runParser p cs <font color=Green><u>of</u></font>-<a name="line-353"></a>                                   <font color=Cyan>(</font>Left <font color=Green><u>_</u></font><font color=Cyan>,</font> cs'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>msg'<font color=Cyan>)</font><font color=Cyan>,</font> cs'<font color=Cyan>)</font>-<a name="line-354"></a>                                   <font color=Cyan>(</font>Right x<font color=Cyan>,</font> cs'<font color=Cyan>)</font>  <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right x<font color=Cyan>,</font>   cs'<font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-355"></a>  <font color=Green><u>where</u></font> msg' <font color=Red>=</font> <font color=Magenta>"content error: expected "</font><font color=Cyan>++</font>inner<font color=Cyan>++</font><font color=Magenta>" inside &lt;"</font><font color=Cyan>++</font>tag-<a name="line-356"></a>               <font color=Cyan>++</font><font color=Magenta>"&gt; element\n"</font>-<a name="line-357"></a>-<a name="line-358"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-359"></a>-<a name="line-360"></a><a name="XmlContent"></a><font color=Blue>-- | The @XmlContent@ class promises that an XML Content element can be</font>-<a name="line-361"></a><a name="XmlContent"></a><font color=Blue>--   converted to and from a Haskell value.</font>-<a name="line-362"></a><a name="XmlContent"></a><font color=Green><u>class</u></font> HTypeable a <font color=Red>=&gt;</font> XmlContent a <font color=Green><u>where</u></font>-<a name="line-363"></a>    <font color=Blue>-- | Convert from XML to Haskell</font>-<a name="line-364"></a>    parseContents <font color=Red>::</font> XMLParser a-<a name="line-365"></a>    <font color=Blue>-- | Convert from Haskell to XML</font>-<a name="line-366"></a>    toContents    <font color=Red>::</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>-<a name="line-367"></a>-<a name="line-368"></a>    <font color=Blue>-- | Dummy functions (for most types): used /only/ in the Char instance</font>-<a name="line-369"></a>    <font color=Blue>--   for coercing lists of Char into String.</font>-<a name="line-370"></a>    xToChar       <font color=Red>::</font> a <font color=Red>-&gt;</font> Char-<a name="line-371"></a>    xFromChar     <font color=Red>::</font> Char <font color=Red>-&gt;</font> a-<a name="line-372"></a>    xToChar        <font color=Red>=</font> error <font color=Magenta>"HaXml.XmlContent.xToChar used in error"</font>-<a name="line-373"></a>    xFromChar      <font color=Red>=</font> error <font color=Magenta>"HaXml.XmlContent.xFromChar used in error"</font>-<a name="line-374"></a>-<a name="line-375"></a><a name="XmlAttributes"></a><font color=Blue>-- | The @XmlAttributes@ class promises that a list of XML tag attributes</font>-<a name="line-376"></a><a name="XmlAttributes"></a><font color=Blue>--   can be converted to and from a Haskell value.</font>-<a name="line-377"></a><a name="XmlAttributes"></a><font color=Green><u>class</u></font> XmlAttributes a <font color=Green><u>where</u></font>-<a name="line-378"></a>    fromAttrs <font color=Red>::</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> a-<a name="line-379"></a>    toAttrs   <font color=Red>::</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font>-<a name="line-380"></a><a name="XmlAttrType"></a><font color=Blue>-- | The @XmlAttrType@ class promises that an attribute taking an XML</font>-<a name="line-381"></a><a name="XmlAttrType"></a><font color=Blue>--   enumerated type can be converted to and from a Haskell value.</font>-<a name="line-382"></a><a name="XmlAttrType"></a><font color=Green><u>class</u></font> XmlAttrType a <font color=Green><u>where</u></font>-<a name="line-383"></a>    fromAttrToTyp <font color=Red>::</font> String <font color=Red>-&gt;</font> Attribute <font color=Red>-&gt;</font> Maybe a-<a name="line-384"></a>    toAttrFrTyp   <font color=Red>::</font> String <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Maybe Attribute-<a name="line-385"></a>-<a name="line-386"></a>-<a name="line-387"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-388"></a><font color=Blue>-- Instances for all the standard basic datatypes.</font>-<a name="line-389"></a><font color=Blue>-- These are for Haskell datatypes being derived to go to XML.</font>-<a name="line-390"></a><font color=Blue>-- DtdToHaskell does not use these instances.</font>-<a name="line-391"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-392"></a>-<a name="line-393"></a><font color=Green><u>instance</u></font> XmlContent Bool <font color=Green><u>where</u></font>-<a name="line-394"></a>    toContents b   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"bool"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show b<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>-<a name="line-395"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"bool"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>-<a name="line-396"></a>-<a name="line-397"></a><font color=Green><u>instance</u></font> XmlContent Int <font color=Green><u>where</u></font>-<a name="line-398"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"int"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>-<a name="line-399"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"int"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>-<a name="line-400"></a>-<a name="line-401"></a><font color=Green><u>instance</u></font> XmlContent Integer <font color=Green><u>where</u></font>-<a name="line-402"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"integer"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>-<a name="line-403"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"integer"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>-<a name="line-404"></a>-<a name="line-405"></a><font color=Green><u>instance</u></font> XmlContent Float <font color=Green><u>where</u></font>-<a name="line-406"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"float"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>-<a name="line-407"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"float"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>-<a name="line-408"></a>-<a name="line-409"></a><font color=Green><u>instance</u></font> XmlContent Double <font color=Green><u>where</u></font>-<a name="line-410"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"double"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>-<a name="line-411"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"double"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>-<a name="line-412"></a>-<a name="line-413"></a><font color=Green><u>instance</u></font> XmlContent Char <font color=Green><u>where</u></font>-<a name="line-414"></a>    <font color=Blue>-- NOT in a string</font>-<a name="line-415"></a>    toContents c   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"char"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Red>[</font>c<font color=Red>]</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>-<a name="line-416"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Red>[</font><font color=Cyan>(</font><font color=Magenta>"value"</font><font color=Cyan>,</font><font color=Cyan>(</font>AttValue <font color=Red>[</font>Left <font color=Red>[</font>c<font color=Red>]</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font>-<a name="line-417"></a>                             <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"char"</font><font color=Red>]</font>-<a name="line-418"></a>                       <font color=Cyan>;</font> return c-<a name="line-419"></a>                       <font color=Cyan>}</font>-<a name="line-420"></a>    <font color=Blue>-- Only defined for Char and no other types:</font>-<a name="line-421"></a>    xToChar   <font color=Red>=</font> id-<a name="line-422"></a>    xFromChar <font color=Red>=</font> id-<a name="line-423"></a>-<a name="line-424"></a><font color=Green><u>instance</u></font> XmlContent a <font color=Red>=&gt;</font> XmlContent <font color=Red>[</font>a<font color=Red>]</font> <font color=Green><u>where</u></font>-<a name="line-425"></a>    toContents xs  <font color=Red>=</font> <font color=Green><u>case</u></font> toHType x <font color=Green><u>of</u></font>-<a name="line-426"></a>                       <font color=Cyan>(</font>Prim <font color=Magenta>"Char"</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font>-<a name="line-427"></a>                            <font color=Red>[</font>mkElem <font color=Magenta>"string"</font> <font color=Red>[</font>CString True <font color=Cyan>(</font>map xToChar xs<font color=Cyan>)</font> ()<font color=Red>]</font><font color=Red>]</font>-<a name="line-428"></a>                       <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Red>[</font>mkElem xs <font color=Cyan>(</font>concatMap toContents xs<font color=Cyan>)</font><font color=Red>]</font>-<a name="line-429"></a>                   <font color=Green><u>where</u></font>   <font color=Cyan>(</font>x<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xs-<a name="line-430"></a>    parseContents <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>x <font color=Red>-&gt;</font>-<a name="line-431"></a>        <font color=Green><u>case</u></font> x <font color=Green><u>of</u></font>-<a name="line-432"></a>            <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font>-<a name="line-433"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>map xFromChar s<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>-<a name="line-434"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"string"</font> [] <font color=Red>[</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Red>]</font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font>-<a name="line-435"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>map xFromChar s<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>-<a name="line-436"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem e [] xs<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>|</font> <font color=Magenta>"list"</font> <font color=Cyan>`isPrefixOf`</font> e-<a name="line-437"></a>                   <font color=Red>-&gt;</font> scanElements xs-<a name="line-438"></a>                   <font color=Green><u>where</u></font>-<a name="line-439"></a>                  <font color=Blue>-- scanElements :: [Content] -&gt; (Either String [a],[Content])</font>-<a name="line-440"></a>                     scanElements [] <font color=Red>=</font> <font color=Cyan>(</font>Right []<font color=Cyan>,</font> cs<font color=Cyan>)</font>-<a name="line-441"></a>                     scanElements es <font color=Red>=</font>-<a name="line-442"></a>                        <font color=Green><u>case</u></font> runParser parseContents es <font color=Green><u>of</u></font>-<a name="line-443"></a>                            <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> es'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>msg<font color=Cyan>)</font><font color=Cyan>,</font> es'<font color=Cyan>)</font>-<a name="line-444"></a>                            <font color=Cyan>(</font>Right y<font color=Cyan>,</font> es'<font color=Cyan>)</font> <font color=Red>-&gt;</font>-<a name="line-445"></a>                                <font color=Green><u>case</u></font> scanElements es' <font color=Green><u>of</u></font>-<a name="line-446"></a>                                    <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ds<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ds<font color=Cyan>)</font>-<a name="line-447"></a>                                    <font color=Cyan>(</font>Right ys<font color=Cyan>,</font> ds<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>y<font color=Red><b>:</b></font>ys<font color=Cyan>)</font><font color=Cyan>,</font> ds<font color=Cyan>)</font>-<a name="line-448"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem e <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font> cs<font color=Cyan>)</font>-<a name="line-449"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False-<a name="line-450"></a>                            <font color=Cyan>,</font><font color=Magenta>"Expected a &lt;list-...&gt;, but found a &lt;"</font><font color=Cyan>++</font>e<font color=Cyan>++</font><font color=Magenta>"&gt; at\n"</font>-<a name="line-451"></a>                            <font color=Cyan>++</font> show pos<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>-<a name="line-452"></a>            <font color=Cyan>(</font>CRef r pos<font color=Red><b>:</b></font> cs<font color=Cyan>)</font>-<a name="line-453"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False-<a name="line-454"></a>                            <font color=Cyan>,</font><font color=Magenta>"Expected a &lt;list-...&gt;, but found a ref "</font>-<a name="line-455"></a>                            <font color=Cyan>++</font>verbatim r<font color=Cyan>++</font><font color=Magenta>" at\n"</font><font color=Cyan>++</font> show pos<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>-<a name="line-456"></a>            <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>P p<font color=Cyan>)</font><font color=Red>-&gt;</font> p<font color=Cyan>)</font> parseContents<font color=Cyan>)</font> cs  <font color=Blue>-- skip comments etc.</font>-<a name="line-457"></a>            []     <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False-<a name="line-458"></a>                            <font color=Cyan>,</font><font color=Magenta>"Ran out of input XML whilst secondary parsing"</font><font color=Cyan>)</font>-<a name="line-459"></a>                      <font color=Cyan>,</font> []<font color=Cyan>)</font>-<a name="line-460"></a>        <font color=Cyan>)</font>-<a name="line-461"></a>-<a name="line-462"></a><font color=Green><u>instance</u></font> XmlContent () <font color=Green><u>where</u></font>-<a name="line-463"></a>    toContents ()  <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"unit"</font> [] []<font color=Cyan>)</font> ()<font color=Red>]</font>-<a name="line-464"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> element <font color=Red>[</font><font color=Magenta>"unit"</font><font color=Red>]</font><font color=Cyan>;</font> return () <font color=Cyan>}</font>-<a name="line-465"></a>-<a name="line-466"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-467"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b-<a name="line-468"></a>    parseContents    <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-469"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-470"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-471"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font>-<a name="line-472"></a>        <font color=Cyan>}</font>-<a name="line-473"></a>-<a name="line-474"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-475"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c-<a name="line-476"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-477"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-478"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-479"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents-<a name="line-480"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font>-<a name="line-481"></a>        <font color=Cyan>}</font>-<a name="line-482"></a>-<a name="line-483"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d<font color=Cyan>)</font> <font color=Red>=&gt;</font>-<a name="line-484"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-485"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c-<a name="line-486"></a>                           <font color=Cyan>++</font> toContents d-<a name="line-487"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-488"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-489"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-490"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents-<a name="line-491"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents-<a name="line-492"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>)</font>-<a name="line-493"></a>        <font color=Cyan>}</font>-<a name="line-494"></a>-<a name="line-495"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d-<a name="line-496"></a>         <font color=Cyan>,</font> XmlContent e <font color=Cyan>)</font> <font color=Red>=&gt;</font>-<a name="line-497"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-498"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c-<a name="line-499"></a>                             <font color=Cyan>++</font> toContents d <font color=Cyan>++</font> toContents e-<a name="line-500"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-501"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-502"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-503"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents-<a name="line-504"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents-<a name="line-505"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents-<a name="line-506"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>)</font>-<a name="line-507"></a>        <font color=Cyan>}</font>-<a name="line-508"></a>-<a name="line-509"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d-<a name="line-510"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f <font color=Cyan>)</font> <font color=Red>=&gt;</font>-<a name="line-511"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-512"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c-<a name="line-513"></a>                               <font color=Cyan>++</font> toContents d <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f-<a name="line-514"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-515"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-516"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-517"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents-<a name="line-518"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents-<a name="line-519"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents-<a name="line-520"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents-<a name="line-521"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>)</font>-<a name="line-522"></a>        <font color=Cyan>}</font>-<a name="line-523"></a>-<a name="line-524"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d-<a name="line-525"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g <font color=Cyan>)</font> <font color=Red>=&gt;</font>-<a name="line-526"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-527"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>)</font>-<a name="line-528"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d-<a name="line-529"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g-<a name="line-530"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-531"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-532"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-533"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents-<a name="line-534"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents-<a name="line-535"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents-<a name="line-536"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents-<a name="line-537"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents-<a name="line-538"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>)</font>-<a name="line-539"></a>        <font color=Cyan>}</font>-<a name="line-540"></a>-<a name="line-541"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d-<a name="line-542"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h <font color=Cyan>)</font> <font color=Red>=&gt;</font>-<a name="line-543"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-544"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>)</font>-<a name="line-545"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d-<a name="line-546"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h-<a name="line-547"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-548"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-549"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-550"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents-<a name="line-551"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents-<a name="line-552"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents-<a name="line-553"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents-<a name="line-554"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents-<a name="line-555"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents-<a name="line-556"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>)</font>-<a name="line-557"></a>        <font color=Cyan>}</font>-<a name="line-558"></a>-<a name="line-559"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d-<a name="line-560"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h-<a name="line-561"></a>         <font color=Cyan>,</font> XmlContent i <font color=Cyan>)</font> <font color=Red>=&gt;</font>-<a name="line-562"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-563"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>)</font>-<a name="line-564"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d-<a name="line-565"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h-<a name="line-566"></a>          <font color=Cyan>++</font> toContents i-<a name="line-567"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-568"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-569"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-570"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents-<a name="line-571"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents-<a name="line-572"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents-<a name="line-573"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents-<a name="line-574"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents-<a name="line-575"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents-<a name="line-576"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents-<a name="line-577"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>)</font>-<a name="line-578"></a>        <font color=Cyan>}</font>-<a name="line-579"></a>-<a name="line-580"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d-<a name="line-581"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h-<a name="line-582"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j <font color=Cyan>)</font> <font color=Red>=&gt;</font>-<a name="line-583"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-584"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>)</font>-<a name="line-585"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d-<a name="line-586"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h-<a name="line-587"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j-<a name="line-588"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-589"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-590"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-591"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents-<a name="line-592"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents-<a name="line-593"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents-<a name="line-594"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents-<a name="line-595"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents-<a name="line-596"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents-<a name="line-597"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents-<a name="line-598"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents-<a name="line-599"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>)</font>-<a name="line-600"></a>        <font color=Cyan>}</font>-<a name="line-601"></a>-<a name="line-602"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d-<a name="line-603"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h-<a name="line-604"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k <font color=Cyan>)</font> <font color=Red>=&gt;</font>-<a name="line-605"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-606"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>)</font>-<a name="line-607"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d-<a name="line-608"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h-<a name="line-609"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k-<a name="line-610"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-611"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-612"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-613"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents-<a name="line-614"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents-<a name="line-615"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents-<a name="line-616"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents-<a name="line-617"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents-<a name="line-618"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents-<a name="line-619"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents-<a name="line-620"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents-<a name="line-621"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents-<a name="line-622"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>)</font>-<a name="line-623"></a>        <font color=Cyan>}</font>-<a name="line-624"></a>-<a name="line-625"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d-<a name="line-626"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h-<a name="line-627"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l <font color=Cyan>)</font> <font color=Red>=&gt;</font>-<a name="line-628"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-629"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>)</font>-<a name="line-630"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d-<a name="line-631"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h-<a name="line-632"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l-<a name="line-633"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-634"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-635"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-636"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents-<a name="line-637"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents-<a name="line-638"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents-<a name="line-639"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents-<a name="line-640"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents-<a name="line-641"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents-<a name="line-642"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents-<a name="line-643"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents-<a name="line-644"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents-<a name="line-645"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents-<a name="line-646"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>)</font>-<a name="line-647"></a>        <font color=Cyan>}</font>-<a name="line-648"></a>-<a name="line-649"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d-<a name="line-650"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h-<a name="line-651"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l-<a name="line-652"></a>         <font color=Cyan>,</font> XmlContent m <font color=Cyan>)</font> <font color=Red>=&gt;</font>-<a name="line-653"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-654"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>)</font>-<a name="line-655"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d-<a name="line-656"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h-<a name="line-657"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l-<a name="line-658"></a>          <font color=Cyan>++</font> toContents m-<a name="line-659"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-660"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-661"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-662"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents-<a name="line-663"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents-<a name="line-664"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents-<a name="line-665"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents-<a name="line-666"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents-<a name="line-667"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents-<a name="line-668"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents-<a name="line-669"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents-<a name="line-670"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents-<a name="line-671"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents-<a name="line-672"></a>        <font color=Cyan>;</font> m <font color=Red>&lt;-</font> parseContents-<a name="line-673"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>)</font>-<a name="line-674"></a>        <font color=Cyan>}</font>-<a name="line-675"></a>-<a name="line-676"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d-<a name="line-677"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h-<a name="line-678"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l-<a name="line-679"></a>         <font color=Cyan>,</font> XmlContent m<font color=Cyan>,</font> XmlContent n <font color=Cyan>)</font> <font color=Red>=&gt;</font>-<a name="line-680"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-681"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>)</font>-<a name="line-682"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d-<a name="line-683"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h-<a name="line-684"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l-<a name="line-685"></a>          <font color=Cyan>++</font> toContents m <font color=Cyan>++</font> toContents n-<a name="line-686"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-687"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-688"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-689"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents-<a name="line-690"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents-<a name="line-691"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents-<a name="line-692"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents-<a name="line-693"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents-<a name="line-694"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents-<a name="line-695"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents-<a name="line-696"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents-<a name="line-697"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents-<a name="line-698"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents-<a name="line-699"></a>        <font color=Cyan>;</font> m <font color=Red>&lt;-</font> parseContents-<a name="line-700"></a>        <font color=Cyan>;</font> n <font color=Red>&lt;-</font> parseContents-<a name="line-701"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>)</font>-<a name="line-702"></a>        <font color=Cyan>}</font>-<a name="line-703"></a>-<a name="line-704"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d-<a name="line-705"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h-<a name="line-706"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l-<a name="line-707"></a>         <font color=Cyan>,</font> XmlContent m<font color=Cyan>,</font> XmlContent n<font color=Cyan>,</font> XmlContent o <font color=Cyan>)</font> <font color=Red>=&gt;</font>-<a name="line-708"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>,</font>o<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-709"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>,</font>o<font color=Cyan>)</font>-<a name="line-710"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d-<a name="line-711"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h-<a name="line-712"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l-<a name="line-713"></a>          <font color=Cyan>++</font> toContents m <font color=Cyan>++</font> toContents n <font color=Cyan>++</font> toContents o-<a name="line-714"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-715"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents-<a name="line-716"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents-<a name="line-717"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents-<a name="line-718"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents-<a name="line-719"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents-<a name="line-720"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents-<a name="line-721"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents-<a name="line-722"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents-<a name="line-723"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents-<a name="line-724"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents-<a name="line-725"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents-<a name="line-726"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents-<a name="line-727"></a>        <font color=Cyan>;</font> m <font color=Red>&lt;-</font> parseContents-<a name="line-728"></a>        <font color=Cyan>;</font> n <font color=Red>&lt;-</font> parseContents-<a name="line-729"></a>        <font color=Cyan>;</font> o <font color=Red>&lt;-</font> parseContents-<a name="line-730"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>,</font>o<font color=Cyan>)</font>-<a name="line-731"></a>        <font color=Cyan>}</font>-<a name="line-732"></a>-<a name="line-733"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-734"></a>    toContents m   <font color=Red>=</font> <font color=Red>[</font>mkElem m <font color=Cyan>(</font>maybe [] toContents m<font color=Cyan>)</font><font color=Red>]</font>-<a name="line-735"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-736"></a>        <font color=Cyan>{</font> e <font color=Red>&lt;-</font> elementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Red>[</font><font color=Magenta>"maybe"</font><font color=Red>]</font>-<a name="line-737"></a>        <font color=Cyan>;</font> <font color=Green><u>case</u></font> e <font color=Green><u>of</u></font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> [] []<font color=Cyan>)</font> <font color=Red>-&gt;</font> return Nothing-<a name="line-738"></a>                    <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> [] <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font> fmap Just <font color=Cyan>(</font>interior e parseContents<font color=Cyan>)</font>-<a name="line-739"></a>        <font color=Cyan>}</font>-<a name="line-740"></a>-<a name="line-741"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>Either a b<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-742"></a>    toContents v<font color=Red>@</font><font color=Cyan>(</font>Left aa<font color=Cyan>)</font> <font color=Red>=</font>-<a name="line-743"></a>        <font color=Red>[</font>mkElemC <font color=Cyan>(</font>showConstr <font color=Magenta>0</font> <font color=Cyan>(</font>toHType v<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>toContents aa<font color=Cyan>)</font><font color=Red>]</font>-<a name="line-744"></a>    toContents v<font color=Red>@</font><font color=Cyan>(</font>Right ab<font color=Cyan>)</font> <font color=Red>=</font>-<a name="line-745"></a>        <font color=Red>[</font>mkElemC <font color=Cyan>(</font>showConstr <font color=Magenta>1</font> <font color=Cyan>(</font>toHType v<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>toContents ab<font color=Cyan>)</font><font color=Red>]</font>-<a name="line-746"></a>    parseContents <font color=Red>=</font>-<a name="line-747"></a>        <font color=Cyan>(</font>inElementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Magenta>"Left"</font>  <font color=Cyan>$</font> fmap Left  parseContents<font color=Cyan>)</font>-<a name="line-748"></a>          <font color=Cyan>`onFail`</font>-<a name="line-749"></a>        <font color=Cyan>(</font>inElementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Magenta>"Right"</font> <font color=Cyan>$</font> fmap Right parseContents<font color=Cyan>)</font>-<a name="line-750"></a>-<a name="line-751"></a><font color=Blue>--    do{ e@(Elem t [] _) &lt;- element ["Left","Right"]</font>-<a name="line-752"></a><font color=Blue>--      ; case t of</font>-<a name="line-753"></a><font color=Blue>--          _ | "Left"  `isPrefixOf` t -&gt; fmap Left  (interior e parseContents)</font>-<a name="line-754"></a><font color=Blue>--            | "Right" `isPrefixOf` t -&gt; fmap Right (interior e parseContents)</font>-<a name="line-755"></a><font color=Blue>--      }</font>-<a name="line-756"></a>-<a name="line-757"></a>-<a name="line-758"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-759"></a><font color=Blue>-- Useful auxiliaries for "fromAttributes"</font>-<a name="line-760"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-761"></a>-<a name="line-762"></a><a name="Defaultable"></a><font color=Blue>-- | If an attribute is defaultable, then it either takes the default</font>-<a name="line-763"></a><a name="Defaultable"></a><font color=Blue>--   value (which is omitted from the output), or a non-default value</font>-<a name="line-764"></a><a name="Defaultable"></a><font color=Blue>--   (which obviously must be printed).</font>-<a name="line-765"></a><a name="Defaultable"></a><font color=Green><u>data</u></font> Defaultable a  <font color=Red>=</font> Default a    <font color=Red>|</font> NonDefault a    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>-<a name="line-766"></a>-<a name="line-767"></a><a name="searchMaybe"></a><font color=Blue>searchMaybe</font> <font color=Red>::</font> <font color=Cyan>(</font>a <font color=Red>-&gt;</font> Maybe b<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> Maybe b-<a name="line-768"></a><font color=Blue>searchMaybe</font> <font color=Green><u>_</u></font> [] <font color=Red>=</font> Nothing-<a name="line-769"></a><font color=Blue>searchMaybe</font> f <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font> <font color=Red>=</font>-<a name="line-770"></a>    <font color=Green><u>let</u></font> fx <font color=Red>=</font> f x <font color=Green><u>in</u></font>-<a name="line-771"></a>    <font color=Green><u>case</u></font> fx <font color=Green><u>of</u></font>-<a name="line-772"></a>      Nothing  <font color=Red>-&gt;</font> searchMaybe f xs-<a name="line-773"></a>      <font color=Cyan>(</font>Just <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> fx-<a name="line-774"></a>-<a name="line-775"></a><a name="maybeToAttr"></a><font color=Blue>maybeToAttr</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>Maybe Attribute<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Maybe a-<a name="line-776"></a>               <font color=Red>-&gt;</font> Maybe Attribute-<a name="line-777"></a><font color=Blue>maybeToAttr</font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> Nothing  <font color=Red>=</font> Nothing-<a name="line-778"></a><font color=Blue>maybeToAttr</font> to n <font color=Cyan>(</font>Just v<font color=Cyan>)</font> <font color=Red>=</font> to n v-<a name="line-779"></a>-<a name="line-780"></a><a name="defaultToAttr"></a><font color=Blue>defaultToAttr</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>Maybe Attribute<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Defaultable a-<a name="line-781"></a>                 <font color=Red>-&gt;</font> Maybe Attribute-<a name="line-782"></a><font color=Blue>defaultToAttr</font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Cyan>(</font>Default <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>=</font> Nothing-<a name="line-783"></a><font color=Blue>defaultToAttr</font> to n <font color=Cyan>(</font>NonDefault v<font color=Cyan>)</font> <font color=Red>=</font> to n v-<a name="line-784"></a>-<a name="line-785"></a><a name="definiteA"></a><font color=Blue>definiteA</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String-<a name="line-786"></a>             <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> a-<a name="line-787"></a><font color=Blue>definiteA</font> from tag at <font color=Green><u>as</u></font> <font color=Red>=</font>-<a name="line-788"></a>    <font color=Green><u>case</u></font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font> <font color=Green><u>of</u></font>-<a name="line-789"></a>      Nothing  <font color=Red>-&gt;</font> error <font color=Cyan>(</font><font color=Magenta>"missing attribute "</font><font color=Cyan>++</font>at<font color=Cyan>++</font><font color=Magenta>" in tag &lt;"</font><font color=Cyan>++</font>tag<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>)</font>-<a name="line-790"></a>      <font color=Cyan>(</font>Just a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a-<a name="line-791"></a>-<a name="line-792"></a><a name="defaultA"></a><font color=Blue>defaultA</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> String-<a name="line-793"></a>            <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> Defaultable a-<a name="line-794"></a><font color=Blue>defaultA</font> from def at <font color=Green><u>as</u></font> <font color=Red>=</font>-<a name="line-795"></a>    <font color=Green><u>case</u></font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font> <font color=Green><u>of</u></font>-<a name="line-796"></a>      Nothing  <font color=Red>-&gt;</font> Default def-<a name="line-797"></a>      <font color=Cyan>(</font>Just a<font color=Cyan>)</font> <font color=Red>-&gt;</font> NonDefault a-<a name="line-798"></a>-<a name="line-799"></a><a name="possibleA"></a><font color=Blue>possibleA</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> Maybe a-<a name="line-800"></a><font color=Blue>possibleA</font> from at <font color=Green><u>as</u></font> <font color=Red>=</font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font>-<a name="line-801"></a>-<a name="line-802"></a><a name="fromAttrToStr"></a><font color=Blue>fromAttrToStr</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> Attribute <font color=Red>-&gt;</font> Maybe String-<a name="line-803"></a><font color=Blue>fromAttrToStr</font> n <font color=Cyan>(</font>n0<font color=Cyan>,</font>v<font color=Cyan>)</font>-<a name="line-804"></a>        <font color=Red>|</font> n <font color=Cyan>==</font> n0   <font color=Red>=</font> Just <font color=Cyan>(</font>attr2str v<font color=Cyan>)</font>-<a name="line-805"></a>        <font color=Red>|</font> otherwise <font color=Red>=</font> Nothing-<a name="line-806"></a>-<a name="line-807"></a><a name="toAttrFrStr"></a><font color=Blue>toAttrFrStr</font>   <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Maybe Attribute-<a name="line-808"></a><font color=Blue>toAttrFrStr</font> n v <font color=Red>=</font> Just <font color=Cyan>(</font>n<font color=Cyan>,</font> str2attr v<font color=Cyan>)</font>-<a name="line-809"></a>-<a name="line-810"></a><a name="str2attr"></a><font color=Blue>str2attr</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> AttValue-<a name="line-811"></a><font color=Blue>str2attr</font> s <font color=Red>=</font>-<a name="line-812"></a>    <font color=Green><u>let</u></font> f t <font color=Red>=</font>-<a name="line-813"></a>          <font color=Green><u>let</u></font> <font color=Cyan>(</font>l<font color=Cyan>,</font>r<font color=Cyan>)</font> <font color=Red>=</font> span <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font> not <font color=Cyan>(</font>elem c <font color=Magenta>"\"&amp;&lt;&gt;'"</font><font color=Cyan>)</font><font color=Cyan>)</font> t-<a name="line-814"></a>          <font color=Green><u>in</u></font> <font color=Green><u>if</u></font> null r <font color=Green><u>then</u></font> <font color=Red>[</font>Left l<font color=Red>]</font>-<a name="line-815"></a>             <font color=Green><u>else</u></font> Left l<font color=Red><b>:</b></font> Right <font color=Cyan>(</font>g <font color=Cyan>(</font>head r<font color=Cyan>)</font><font color=Cyan>)</font><font color=Red><b>:</b></font> f <font color=Cyan>(</font>tail r<font color=Cyan>)</font>-<a name="line-816"></a>        g <font color=Magenta>'"'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"quot"</font>-<a name="line-817"></a>        g <font color=Magenta>'&amp;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"amp"</font>-<a name="line-818"></a>        g <font color=Magenta>'&lt;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"lt"</font>-<a name="line-819"></a>        g <font color=Magenta>'&gt;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"gt"</font>-<a name="line-820"></a>        g <font color=Magenta>'\''</font> <font color=Red>=</font> RefEntity <font color=Magenta>"apos"</font>-<a name="line-821"></a>    <font color=Green><u>in</u></font> AttValue <font color=Cyan>(</font>f s<font color=Cyan>)</font>-<a name="line-822"></a>-<a name="line-823"></a><a name="attr2str"></a><font color=Blue>attr2str</font> <font color=Red>::</font> AttValue <font color=Red>-&gt;</font> String          <font color=Blue>-- really needs symbol table</font>-<a name="line-824"></a><font color=Blue>attr2str</font> <font color=Cyan>(</font>AttValue xs<font color=Cyan>)</font> <font color=Red>=</font>-<a name="line-825"></a>    <font color=Green><u>let</u></font> f <font color=Cyan>(</font>Left s<font color=Cyan>)</font> <font color=Red>=</font> s-<a name="line-826"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefChar i<font color=Cyan>)</font><font color=Cyan>)</font>        <font color=Red>=</font> <font color=Red>[</font>chr i<font color=Red>]</font>-<a name="line-827"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"quot"</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"\""</font>-<a name="line-828"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"amp"</font><font color=Cyan>)</font><font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"&amp;"</font>-<a name="line-829"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"lt"</font><font color=Cyan>)</font><font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&lt;"</font>-<a name="line-830"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"gt"</font><font color=Cyan>)</font><font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&gt;"</font>-<a name="line-831"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"apos"</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"'"</font>-<a name="line-832"></a>        f <font color=Cyan>(</font>Right <font color=Green><u>_</u></font><font color=Cyan>)</font>                  <font color=Red>=</font> <font color=Magenta>"*"</font>  <font color=Blue>-- Ooops, ST needed here.</font>-<a name="line-833"></a>    <font color=Green><u>in</u></font> concatMap f xs-<a name="line-834"></a>-<a name="line-835"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-836"></a><font color=Blue>--  New content-model types</font>-<a name="line-837"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-838"></a>-<a name="line-839"></a><font color=Blue>{--<a name="line-840"></a>data OneOf2 a b-<a name="line-841"></a>data OneOf3 a b c-<a name="line-842"></a>data OneOf4 a b c d-<a name="line-843"></a>    ... etc are now defined (with instances) in module OneOfN.-<a name="line-844"></a>-}</font>-<a name="line-845"></a>-<a name="line-846"></a><a name="ANYContent"></a><font color=Blue>-- | A type corresponding to XML's ANY contentspec.</font>-<a name="line-847"></a><a name="ANYContent"></a><font color=Blue>--   It is either a list of unconverted xml 'Content'</font>-<a name="line-848"></a><a name="ANYContent"></a><font color=Blue>--   or some 'XmlContent'-able value.</font>-<a name="line-849"></a><a name="ANYContent"></a><font color=Blue>--</font>-<a name="line-850"></a><a name="ANYContent"></a><font color=Blue>-- Parsing functions (e.g. 'parseContents') will always produce 'UnConverted'.</font>-<a name="line-851"></a><a name="ANYContent"></a><font color=Blue>-- Note: The Show instance for 'UnConverted' uses 'verbatim'.</font>-<a name="line-852"></a><a name="ANYContent"></a><font color=Green><u>data</u></font> ANYContent <font color=Red>=</font> <font color=Green><u>forall</u></font> a <font color=Cyan>.</font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> Show a<font color=Cyan>)</font> <font color=Red>=&gt;</font> ANYContent a-<a name="line-853"></a>                <font color=Red>|</font> UnConverted <font color=Red>[</font>Content Posn<font color=Red>]</font>-<a name="line-854"></a>-<a name="line-855"></a><font color=Green><u>instance</u></font> Show ANYContent <font color=Green><u>where</u></font>-<a name="line-856"></a>    show <font color=Cyan>(</font>UnConverted c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"UnConverted "</font> <font color=Cyan>++</font> <font color=Cyan>(</font>show <font color=Cyan>$</font> map verbatim c<font color=Cyan>)</font>-<a name="line-857"></a>    show <font color=Cyan>(</font>ANYContent a<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"ANYContent "</font> <font color=Cyan>++</font> <font color=Cyan>(</font>show a<font color=Cyan>)</font>-<a name="line-858"></a>-<a name="line-859"></a><font color=Green><u>instance</u></font> Eq ANYContent <font color=Green><u>where</u></font>-<a name="line-860"></a>    a <font color=Cyan>==</font> b <font color=Red>=</font> show a <font color=Cyan>==</font> show b-<a name="line-861"></a>-<a name="line-862"></a><a name="List1"></a><font color=Blue>-- | The List1 type represents lists with at least one element.</font>-<a name="line-863"></a><a name="List1"></a><font color=Blue>--   It is required for DTD content models that use + as a modifier.</font>-<a name="line-864"></a><a name="List1"></a><font color=Green><u>data</u></font> List1 a <font color=Red>=</font> NonEmpty <font color=Red>[</font>a<font color=Red>]</font>  <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font> Show<font color=Cyan>)</font>-<a name="line-865"></a>-<a name="line-866"></a>-<a name="line-867"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-868"></a><font color=Blue>--  Instances for new content-model types</font>-<a name="line-869"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-870"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>)</font> <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>List1 a<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-871"></a>    toHType m  <font color=Red>=</font> Defined <font color=Magenta>"List1"</font> <font color=Red>[</font>hx<font color=Red>]</font>-<a name="line-872"></a>                         <font color=Red>[</font>Constr <font color=Magenta>"NonEmpty"</font> <font color=Red>[</font>hx<font color=Red>]</font> <font color=Red>[</font>List hx<font color=Red>]</font> <font color=Blue>{-Nothing-}</font><font color=Red>]</font>-<a name="line-873"></a>               <font color=Green><u>where</u></font> <font color=Cyan>(</font>NonEmpty x<font color=Cyan>)</font> <font color=Red>=</font> m-<a name="line-874"></a>                     hx <font color=Red>=</font> toHType x-<a name="line-875"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>List1 a<font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-876"></a>    toContents <font color=Cyan>(</font>NonEmpty xs<font color=Cyan>)</font> <font color=Red>=</font> concatMap toContents xs-<a name="line-877"></a>    parseContents <font color=Red>=</font> fmap NonEmpty <font color=Cyan>$</font> many1 parseContents-<a name="line-878"></a>-<a name="line-879"></a><font color=Green><u>instance</u></font> HTypeable ANYContent <font color=Green><u>where</u></font>-<a name="line-880"></a>    toHType <font color=Green><u>_</u></font>      <font color=Red>=</font> Prim <font color=Magenta>"ANYContent"</font> <font color=Magenta>"ANY"</font>-<a name="line-881"></a><font color=Green><u>instance</u></font> XmlContent ANYContent <font color=Green><u>where</u></font>-<a name="line-882"></a>    toContents <font color=Cyan>(</font>ANYContent a<font color=Cyan>)</font>  <font color=Red>=</font> toContents a-<a name="line-883"></a>    toContents <font color=Cyan>(</font>UnConverted s<font color=Cyan>)</font> <font color=Red>=</font> map <font color=Cyan>(</font>fmap <font color=Cyan>(</font>const ()<font color=Cyan>)</font><font color=Cyan>)</font> s-<a name="line-884"></a>    parseContents <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>cs <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>UnConverted cs<font color=Cyan>)</font><font color=Cyan>,</font> []<font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-885"></a>-<a name="line-886"></a><font color=Blue>------------------------------------------------------------------------</font>-<a name="line-887"></a><font color=Blue>--</font>-<a name="line-888"></a><font color=Blue>------------------------------------------------------------------------</font>+<pre><a name="line-1"></a><font color=Blue>-- | The class 'XmlContent' is a kind of replacement for Read and Show:</font>+<a name="line-2"></a><font color=Blue>--   it provides conversions between a generic XML tree representation</font>+<a name="line-3"></a><font color=Blue>--   and your own more specialised typeful Haskell data trees.</font>+<a name="line-4"></a><font color=Blue>--</font>+<a name="line-5"></a><font color=Blue>--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell</font>+<a name="line-6"></a><font color=Blue>--   to generate both the Haskell types and the corresponding instances.</font>+<a name="line-7"></a><font color=Blue>--   </font>+<a name="line-8"></a><font color=Blue>--   If you are starting with a set of Haskell datatypes, use DrIFT to</font>+<a name="line-9"></a><font color=Blue>--   derive instances of this class for you:</font>+<a name="line-10"></a><font color=Blue>--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT</font>+<a name="line-11"></a><font color=Blue>--   and _do_not_ use the current module, but rather</font>+<a name="line-12"></a><font color=Blue>--   Text.XML.HaXml.XmlContent.Haskell, for the correct matching</font>+<a name="line-13"></a><font color=Blue>--   instances for standard Haskell datatypes.</font>+<a name="line-14"></a>+<a name="line-15"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent+<a name="line-16"></a>  <font color=Cyan>(</font>+<a name="line-17"></a>  <font color=Blue>-- * Re-export everything from Text.XML.HaXml.XmlContent.Parser.</font>+<a name="line-18"></a>    <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent<font color=Cyan>.</font>Parser+<a name="line-19"></a>  <font color=Blue>-- * Contains instances of the XmlContent classes,</font>+<a name="line-20"></a>  <font color=Blue>--   for the basic Haskell datatypes list and Maybe,</font>+<a name="line-21"></a>  <font color=Blue>--   intended for use with DtdToHaskell-generated datatypes.</font>+<a name="line-22"></a>  <font color=Blue>--   See the alternative instances in Text.XML.HaXml.XmlContent.Haskell</font>+<a name="line-23"></a>  <font color=Blue>--   if your datatypes originate in Haskell instead.</font>+<a name="line-24"></a><font color=Blue>--  , module Text.XML.HaXml.XmlContent</font>+<a name="line-25"></a>+<a name="line-26"></a>  <font color=Blue>-- * Whole-document conversion functions</font>+<a name="line-27"></a>  <font color=Cyan>,</font> toXml<font color=Cyan>,</font> fromXml+<a name="line-28"></a>  <font color=Cyan>,</font> readXml<font color=Cyan>,</font> showXml<font color=Cyan>,</font> fpsShowXml+<a name="line-29"></a>  <font color=Cyan>,</font> fReadXml<font color=Cyan>,</font> fWriteXml<font color=Cyan>,</font> fpsWriteXml+<a name="line-30"></a>  <font color=Cyan>,</font> hGetXml<font color=Cyan>,</font>  hPutXml<font color=Cyan>,</font> fpsHPutXml+<a name="line-31"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-32"></a>+<a name="line-33"></a><font color=Green><u>import</u></font> IO+<a name="line-34"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>ByteStringPP <font color=Green><u>as</u></font> FPS <font color=Cyan>(</font>document<font color=Cyan>)</font>+<a name="line-35"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8 <font color=Green><u>as</u></font> FPS+<a name="line-36"></a>+<a name="line-37"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>+<a name="line-38"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly+<a name="line-39"></a>+<a name="line-40"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="line-41"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping+<a name="line-42"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn     <font color=Cyan>(</font>Posn<font color=Cyan>,</font> posInNewCxt<font color=Cyan>)</font>+<a name="line-43"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty   <font color=Cyan>(</font>document<font color=Cyan>)</font>+<a name="line-44"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse    <font color=Cyan>(</font>xmlParse<font color=Cyan>)</font>+<a name="line-45"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent<font color=Cyan>.</font>Parser+<a name="line-46"></a>+<a name="line-47"></a>+<a name="line-48"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-49"></a>+<a name="line-50"></a>        <font color=Blue>-- probably want to write DTD separately from value, and have</font>+<a name="line-51"></a>        <font color=Blue>-- easy ways to combine DTD + value into a document, or write</font>+<a name="line-52"></a>        <font color=Blue>-- them to separate files.</font>+<a name="line-53"></a>+<a name="line-54"></a><a name="fReadXml"></a><font color=Blue>-- | Read an XML document from a file and convert it to a fully-typed</font>+<a name="line-55"></a><font color=Blue>--   Haskell value.</font>+<a name="line-56"></a><font color=Blue>fReadXml</font>  <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> IO a+<a name="line-57"></a><font color=Blue>fReadXml</font> fp <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-58"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdin+<a name="line-59"></a>           <font color=Green><u>else</u></font> openFile fp ReadMode <font color=Cyan>)</font>+<a name="line-60"></a>    x <font color=Red>&lt;-</font> hGetContents f+<a name="line-61"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse fp x+<a name="line-62"></a>        y' <font color=Red>=</font> CElem y <font color=Cyan>(</font>posInNewCxt fp Nothing<font color=Cyan>)</font>+<a name="line-63"></a>    either fail return <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents <font color=Red>[</font>y'<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-64"></a>+<a name="line-65"></a><a name="fWriteXml"></a><font color=Blue>-- | Write a fully-typed Haskell value to the given file as an XML</font>+<a name="line-66"></a><font color=Blue>--   document.</font>+<a name="line-67"></a><font color=Blue>fWriteXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()+<a name="line-68"></a><font color=Blue>fWriteXml</font> fp x <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-69"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout+<a name="line-70"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>+<a name="line-71"></a>    hPutXml f False x+<a name="line-72"></a>    hClose f+<a name="line-73"></a>+<a name="line-74"></a><a name="fpsWriteXml"></a><font color=Blue>-- | Write any Haskell value to the given file as an XML document,</font>+<a name="line-75"></a><font color=Blue>--   using the FastPackedString interface (output will not be prettified).</font>+<a name="line-76"></a><font color=Blue>fpsWriteXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()+<a name="line-77"></a><font color=Blue>fpsWriteXml</font> fp x <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-78"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout+<a name="line-79"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>+<a name="line-80"></a>    fpsHPutXml f False x+<a name="line-81"></a>    hClose f+<a name="line-82"></a>+<a name="line-83"></a><a name="readXml"></a><font color=Blue>-- | Read a fully-typed XML document from a string.</font>+<a name="line-84"></a><font color=Blue>readXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> Either String a+<a name="line-85"></a><font color=Blue>readXml</font> s <font color=Red>=</font>+<a name="line-86"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"string input"</font> s <font color=Green><u>in</u></font>+<a name="line-87"></a>    fst <font color=Cyan>(</font>runParser parseContents+<a name="line-88"></a>                   <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"string input"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="line-89"></a>+<a name="line-90"></a><a name="showXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (without DTD).</font>+<a name="line-91"></a><font color=Blue>showXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> String+<a name="line-92"></a><font color=Blue>showXml</font> dtd x <font color=Red>=</font>+<a name="line-93"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>+<a name="line-94"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x+<a name="line-95"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Magenta>""</font>+<a name="line-96"></a>+<a name="line-97"></a><a name="fpsShowXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a ByteString (without DTD).</font>+<a name="line-98"></a><font color=Blue>fpsShowXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>ByteString+<a name="line-99"></a><font color=Blue>fpsShowXml</font> dtd x <font color=Red>=</font>+<a name="line-100"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>+<a name="line-101"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x+<a name="line-102"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>empty+<a name="line-103"></a>+<a name="line-104"></a>+<a name="line-105"></a><a name="toXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (with or without DTD).</font>+<a name="line-106"></a><font color=Blue>toXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Document ()+<a name="line-107"></a><font color=Blue>toXml</font> dtd value <font color=Red>=</font>+<a name="line-108"></a>    <font color=Green><u>let</u></font> ht <font color=Red>=</font> toHType value <font color=Green><u>in</u></font>+<a name="line-109"></a>    Document <font color=Cyan>(</font>Prolog <font color=Cyan>(</font>Just <font color=Cyan>(</font>XMLDecl <font color=Magenta>"1.0"</font> Nothing Nothing<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-110"></a>                     [] <font color=Cyan>(</font><font color=Green><u>if</u></font> dtd <font color=Green><u>then</u></font> Just <font color=Cyan>(</font>toDTD ht<font color=Cyan>)</font> <font color=Green><u>else</u></font> Nothing<font color=Cyan>)</font> []<font color=Cyan>)</font>+<a name="line-111"></a>             emptyST+<a name="line-112"></a>             <font color=Cyan>(</font> <font color=Green><u>case</u></font> toContents value <font color=Green><u>of</u></font>+<a name="line-113"></a>                 []             <font color=Red>-&gt;</font> Elem <font color=Magenta>"empty"</font> [] []+<a name="line-114"></a>                 <font color=Red>[</font>CElem e ()<font color=Red>]</font>   <font color=Red>-&gt;</font> e+<a name="line-115"></a>                 <font color=Cyan>(</font>CElem e ()<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> error <font color=Magenta>"too many XML elements in document"</font> <font color=Cyan>)</font>+<a name="line-116"></a>             []+<a name="line-117"></a>+<a name="line-118"></a><a name="fromXml"></a><font color=Blue>-- | Read a Haskell value from an XML document, ignoring the DTD and</font>+<a name="line-119"></a><font color=Blue>--   using the Haskell result type to determine how to parse it.</font>+<a name="line-120"></a><font color=Blue>fromXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Document Posn <font color=Red>-&gt;</font> Either String a+<a name="line-121"></a><font color=Blue>fromXml</font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-122"></a>  fst <font color=Cyan>(</font>runParser parseContents <font color=Red>[</font>CElem e <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"document"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="line-123"></a>+<a name="line-124"></a>+<a name="line-125"></a><a name="hGetXml"></a><font color=Blue>-- | Read a fully-typed XML document from a file handle.</font>+<a name="line-126"></a><font color=Blue>hGetXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> IO a+<a name="line-127"></a><font color=Blue>hGetXml</font> h <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-128"></a>    x <font color=Red>&lt;-</font> hGetContents h+<a name="line-129"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"file handle"</font> x+<a name="line-130"></a>    either fail return+<a name="line-131"></a>           <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents+<a name="line-132"></a>                           <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"file handle"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-133"></a>+<a name="line-134"></a><a name="hPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle.</font>+<a name="line-135"></a><font color=Blue>hPutXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()+<a name="line-136"></a><font color=Blue>hPutXml</font> h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-137"></a>    <font color=Cyan>(</font>hPutStrLn h <font color=Cyan>.</font> render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x+<a name="line-138"></a>+<a name="line-139"></a><a name="fpsHPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle, using the</font>+<a name="line-140"></a><font color=Blue>--   FastPackedString interface (output will not be prettified).</font>+<a name="line-141"></a><font color=Blue>fpsHPutXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()+<a name="line-142"></a><font color=Blue>fpsHPutXml</font> h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-143"></a>    <font color=Cyan>(</font>FPS<font color=Cyan>.</font>hPut h <font color=Cyan>.</font> FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x+<a name="line-144"></a>+<a name="line-145"></a>+<a name="line-146"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-147"></a><font color=Blue>-- Instances for all the standard basic datatypes.</font>+<a name="line-148"></a><font color=Blue>-- DtdToHaskell uses only a small number of standard datatypes.</font>+<a name="line-149"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-150"></a>+<a name="line-151"></a><font color=Green><u>instance</u></font> XmlContent Char <font color=Green><u>where</u></font>+<a name="line-152"></a>    <font color=Blue>-- NOT in a string</font>+<a name="line-153"></a>    toContents c  <font color=Red>=</font> error <font color=Magenta>"Text.XML.HaXml.XmlContent.toContents used on a Haskell Char"</font>+<a name="line-154"></a>    parseContents <font color=Red>=</font> fail <font color=Magenta>"Text.XML.HaXml.XmlContent.parseContents used on a Haskell Char "</font>+<a name="line-155"></a>    <font color=Blue>-- Only defined for Char and no other types:</font>+<a name="line-156"></a>    xToChar   <font color=Red>=</font> id+<a name="line-157"></a>    xFromChar <font color=Red>=</font> id+<a name="line-158"></a>+<a name="line-159"></a><font color=Green><u>instance</u></font> XmlContent a <font color=Red>=&gt;</font> XmlContent <font color=Red>[</font>a<font color=Red>]</font> <font color=Green><u>where</u></font>+<a name="line-160"></a>    toContents xs  <font color=Red>=</font> <font color=Green><u>case</u></font> toHType x <font color=Green><u>of</u></font>+<a name="line-161"></a>                       <font color=Cyan>(</font>Prim <font color=Magenta>"Char"</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="line-162"></a>                            <font color=Red>[</font>CString True <font color=Cyan>(</font>map xToChar xs<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="line-163"></a>                       <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> concatMap toContents xs+<a name="line-164"></a>                   <font color=Green><u>where</u></font>   <font color=Cyan>(</font>x<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xs+<a name="line-165"></a>    parseContents <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>x<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>,</font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> runParser p [] <font color=Blue>-- for type of x only</font>+<a name="line-166"></a>                        p <font color=Red>=</font> <font color=Green><u>case</u></font> toHType x <font color=Green><u>of</u></font>+<a name="line-167"></a>                              <font color=Cyan>(</font>Prim <font color=Magenta>"Char"</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> fmap <font color=Cyan>(</font>map xFromChar<font color=Cyan>)</font> <font color=Cyan>$</font> text+<a name="line-168"></a>                              <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> many parseContents+<a name="line-169"></a>                    <font color=Green><u>in</u></font> p+<a name="line-170"></a>        <font color=Blue>-- comments, PIs, etc, are skipped in the individual element parser.</font>+<a name="line-171"></a>+<a name="line-172"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-173"></a>    toContents m  <font color=Red>=</font> maybe [] toContents m+<a name="line-174"></a>    parseContents <font color=Red>=</font> optional parseContents+<a name="line-175"></a>+<a name="line-176"></a><font color=Blue>------------------------------------------------------------------------</font> </pre> </body> </html>
+ docs/HaXml/src/Text/XML/HaXml/XmlContent/Haskell.html view
@@ -0,0 +1,262 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>src/Text/XML/HaXml/XmlContent/Haskell.hs</title>+</head>+<body>+<pre><a name="line-1"></a><font color=Blue>-- | The class 'XmlContent' is a kind of replacement for Read and Show:</font>+<a name="line-2"></a><font color=Blue>--   it provides conversions between a generic XML tree representation</font>+<a name="line-3"></a><font color=Blue>--   and your own more specialised typeful Haskell data trees.</font>+<a name="line-4"></a><font color=Blue>--</font>+<a name="line-5"></a><font color=Blue>--   If you are starting with a set of Haskell datatypes, use DrIFT to</font>+<a name="line-6"></a><font color=Blue>--   derive instances of this class for you:</font>+<a name="line-7"></a><font color=Blue>--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT</font>+<a name="line-8"></a><font color=Blue>--   and use the current module for instances of the standard Haskell</font>+<a name="line-9"></a><font color=Blue>--   datatypes list, Maybe, and so on.</font>+<a name="line-10"></a><font color=Blue>--</font>+<a name="line-11"></a><font color=Blue>--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell</font>+<a name="line-12"></a><font color=Blue>--   to generate both the Haskell types and the corresponding instances,</font>+<a name="line-13"></a><font color=Blue>--   but _do_not_ use the current module for instances: use</font>+<a name="line-14"></a><font color=Blue>--   Text.XML.HaXml.XmlContent instead.</font>+<a name="line-15"></a>+<a name="line-16"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent<font color=Cyan>.</font>Haskell+<a name="line-17"></a>  <font color=Cyan>(</font>+<a name="line-18"></a>  <font color=Blue>-- * Re-export everything from Text.XML.HaXml.XmlContent.Parser.</font>+<a name="line-19"></a>    <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent<font color=Cyan>.</font>Parser+<a name="line-20"></a>  <font color=Blue>-- * Instances (only) for the XmlContent class, for datatypes that</font>+<a name="line-21"></a>  <font color=Blue>--   originated in Haskell, rather than from a DTD definition.</font>+<a name="line-22"></a><font color=Blue>--  , module Text.XML.HaXml.XmlContent.Haskell</font>+<a name="line-23"></a>+<a name="line-24"></a>  <font color=Blue>-- * Whole-document conversion functions</font>+<a name="line-25"></a>  <font color=Cyan>,</font> toXml<font color=Cyan>,</font> fromXml+<a name="line-26"></a>  <font color=Cyan>,</font> readXml<font color=Cyan>,</font> showXml<font color=Cyan>,</font> fpsShowXml+<a name="line-27"></a>  <font color=Cyan>,</font> fReadXml<font color=Cyan>,</font> fWriteXml<font color=Cyan>,</font> fpsWriteXml+<a name="line-28"></a>  <font color=Cyan>,</font> hGetXml<font color=Cyan>,</font>  hPutXml<font color=Cyan>,</font> fpsHPutXml+<a name="line-29"></a>+<a name="line-30"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-31"></a>+<a name="line-32"></a><font color=Green><u>import</u></font> IO+<a name="line-33"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>isPrefixOf<font color=Cyan>,</font> isSuffixOf<font color=Cyan>)</font>+<a name="line-34"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>ByteStringPP <font color=Green><u>as</u></font> FPS <font color=Cyan>(</font>document<font color=Cyan>)</font>+<a name="line-35"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8 <font color=Green><u>as</u></font> FPS+<a name="line-36"></a>+<a name="line-37"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>+<a name="line-38"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly+<a name="line-39"></a>+<a name="line-40"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="line-41"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping+<a name="line-42"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn     <font color=Cyan>(</font>Posn<font color=Cyan>,</font> posInNewCxt<font color=Cyan>)</font>+<a name="line-43"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty   <font color=Cyan>(</font>document<font color=Cyan>)</font>+<a name="line-44"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse    <font color=Cyan>(</font>xmlParse<font color=Cyan>)</font>+<a name="line-45"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim <font color=Cyan>(</font>Verbatim<font color=Cyan>(</font>verbatim<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-46"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent<font color=Cyan>.</font>Parser+<a name="line-47"></a>+<a name="line-48"></a>+<a name="line-49"></a>        <font color=Blue>-- probably want to write DTD separately from value, and have</font>+<a name="line-50"></a>        <font color=Blue>-- easy ways to combine DTD + value into a document, or write</font>+<a name="line-51"></a>        <font color=Blue>-- them to separate files.</font>+<a name="line-52"></a>+<a name="line-53"></a><a name="fReadXml"></a><font color=Blue>-- | Read an XML document from a file and convert it to a fully-typed</font>+<a name="line-54"></a><font color=Blue>--   Haskell value.</font>+<a name="line-55"></a><font color=Blue>fReadXml</font>  <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> IO a+<a name="line-56"></a><font color=Blue>fReadXml</font> fp <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-57"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdin+<a name="line-58"></a>           <font color=Green><u>else</u></font> openFile fp ReadMode <font color=Cyan>)</font>+<a name="line-59"></a>    x <font color=Red>&lt;-</font> hGetContents f+<a name="line-60"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse fp x+<a name="line-61"></a>        y' <font color=Red>=</font> CElem y <font color=Cyan>(</font>posInNewCxt fp Nothing<font color=Cyan>)</font>+<a name="line-62"></a>    either fail return <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents <font color=Red>[</font>y'<font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-63"></a>+<a name="line-64"></a><a name="fWriteXml"></a><font color=Blue>-- | Write a fully-typed Haskell value to the given file as an XML</font>+<a name="line-65"></a><font color=Blue>--   document.</font>+<a name="line-66"></a><font color=Blue>fWriteXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()+<a name="line-67"></a><font color=Blue>fWriteXml</font> fp x <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-68"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout+<a name="line-69"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>+<a name="line-70"></a>    hPutXml f False x+<a name="line-71"></a>    hClose f+<a name="line-72"></a>+<a name="line-73"></a><a name="fpsWriteXml"></a><font color=Blue>-- | Write any Haskell value to the given file as an XML document,</font>+<a name="line-74"></a><font color=Blue>--   using the FastPackedString interface (output will not be prettified).</font>+<a name="line-75"></a><font color=Blue>fpsWriteXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> FilePath <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()+<a name="line-76"></a><font color=Blue>fpsWriteXml</font> fp x <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-77"></a>    f <font color=Red>&lt;-</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> fp<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout+<a name="line-78"></a>           <font color=Green><u>else</u></font> openFile fp WriteMode <font color=Cyan>)</font>+<a name="line-79"></a>    fpsHPutXml f False x+<a name="line-80"></a>    hClose f+<a name="line-81"></a>+<a name="line-82"></a><a name="readXml"></a><font color=Blue>-- | Read a fully-typed XML document from a string.</font>+<a name="line-83"></a><font color=Blue>readXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> String <font color=Red>-&gt;</font> Either String a+<a name="line-84"></a><font color=Blue>readXml</font> s <font color=Red>=</font>+<a name="line-85"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"string input"</font> s <font color=Green><u>in</u></font>+<a name="line-86"></a>    fst <font color=Cyan>(</font>runParser parseContents+<a name="line-87"></a>                   <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"string input"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="line-88"></a>+<a name="line-89"></a><a name="showXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (without DTD).</font>+<a name="line-90"></a><font color=Blue>showXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> String+<a name="line-91"></a><font color=Blue>showXml</font> dtd x <font color=Red>=</font>+<a name="line-92"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>+<a name="line-93"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x+<a name="line-94"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Magenta>""</font>+<a name="line-95"></a>+<a name="line-96"></a><a name="fpsShowXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a ByteString (without DTD).</font>+<a name="line-97"></a><font color=Blue>fpsShowXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>ByteString+<a name="line-98"></a><font color=Blue>fpsShowXml</font> dtd x <font color=Red>=</font>+<a name="line-99"></a>    <font color=Green><u>case</u></font> toContents x <font color=Green><u>of</u></font>+<a name="line-100"></a>      <font color=Red>[</font>CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x+<a name="line-101"></a>      <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> FPS<font color=Cyan>.</font>empty+<a name="line-102"></a>+<a name="line-103"></a>+<a name="line-104"></a><a name="toXml"></a><font color=Blue>-- | Convert a fully-typed XML document to a string (with or without DTD).</font>+<a name="line-105"></a><font color=Blue>toXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Document ()+<a name="line-106"></a><font color=Blue>toXml</font> dtd value <font color=Red>=</font>+<a name="line-107"></a>    <font color=Green><u>let</u></font> ht <font color=Red>=</font> toHType value <font color=Green><u>in</u></font>+<a name="line-108"></a>    Document <font color=Cyan>(</font>Prolog <font color=Cyan>(</font>Just <font color=Cyan>(</font>XMLDecl <font color=Magenta>"1.0"</font> Nothing Nothing<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-109"></a>                     [] <font color=Cyan>(</font><font color=Green><u>if</u></font> dtd <font color=Green><u>then</u></font> Just <font color=Cyan>(</font>toDTD ht<font color=Cyan>)</font> <font color=Green><u>else</u></font> Nothing<font color=Cyan>)</font> []<font color=Cyan>)</font>+<a name="line-110"></a>             emptyST+<a name="line-111"></a>             <font color=Cyan>(</font> <font color=Green><u>case</u></font> <font color=Cyan>(</font>ht<font color=Cyan>,</font> toContents value<font color=Cyan>)</font> <font color=Green><u>of</u></font>+<a name="line-112"></a>                 <font color=Cyan>(</font>Tuple <font color=Green><u>_</u></font><font color=Cyan>,</font> cs<font color=Cyan>)</font>       <font color=Red>-&gt;</font> Elem <font color=Cyan>(</font>showHType ht <font color=Magenta>""</font><font color=Cyan>)</font> [] cs+<a name="line-113"></a>                 <font color=Cyan>(</font>Defined <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>,</font> cs<font color=Cyan>)</font> <font color=Red>-&gt;</font> Elem <font color=Cyan>(</font>showHType ht <font color=Magenta>"-XML"</font><font color=Cyan>)</font> [] cs+<a name="line-114"></a>                 <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Red>[</font>CElem e ()<font color=Red>]</font><font color=Cyan>)</font>   <font color=Red>-&gt;</font> e <font color=Cyan>)</font>+<a name="line-115"></a>             []+<a name="line-116"></a>+<a name="line-117"></a><a name="fromXml"></a><font color=Blue>-- | Read a Haskell value from an XML document, ignoring the DTD and</font>+<a name="line-118"></a><font color=Blue>--   using the Haskell result type to determine how to parse it.</font>+<a name="line-119"></a><font color=Blue>fromXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Document Posn <font color=Red>-&gt;</font> Either String a+<a name="line-120"></a><font color=Blue>fromXml</font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Cyan>)</font>+<a name="line-121"></a>  <font color=Red>|</font> <font color=Magenta>"tuple"</font> <font color=Cyan>`isPrefixOf`</font> n <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents cs<font color=Cyan>)</font>+<a name="line-122"></a>  <font color=Red>|</font> <font color=Magenta>"-XML"</font>  <font color=Cyan>`isSuffixOf`</font> n <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents cs<font color=Cyan>)</font>+<a name="line-123"></a>  <font color=Red>|</font> otherwise <font color=Red>=</font> fst <font color=Cyan>(</font>runParser parseContents+<a name="line-124"></a>                               <font color=Red>[</font>CElem e <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"document"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font>+<a name="line-125"></a>+<a name="line-126"></a>+<a name="line-127"></a><a name="hGetXml"></a><font color=Blue>-- | Read a fully-typed XML document from a file handle.</font>+<a name="line-128"></a><font color=Blue>hGetXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> IO a+<a name="line-129"></a><font color=Blue>hGetXml</font> h <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-130"></a>    x <font color=Red>&lt;-</font> hGetContents h+<a name="line-131"></a>    <font color=Green><u>let</u></font> <font color=Cyan>(</font>Document <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> y <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xmlParse <font color=Magenta>"file handle"</font> x+<a name="line-132"></a>    either fail return+<a name="line-133"></a>           <font color=Cyan>(</font>fst <font color=Cyan>(</font>runParser parseContents+<a name="line-134"></a>                           <font color=Red>[</font>CElem y <font color=Cyan>(</font>posInNewCxt <font color=Magenta>"file handle"</font> Nothing<font color=Cyan>)</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-135"></a>+<a name="line-136"></a><a name="hPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle.</font>+<a name="line-137"></a><font color=Blue>hPutXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()+<a name="line-138"></a><font color=Blue>hPutXml</font> h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-139"></a>    <font color=Cyan>(</font>hPutStrLn h <font color=Cyan>.</font> render <font color=Cyan>.</font> document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x+<a name="line-140"></a>+<a name="line-141"></a><a name="fpsHPutXml"></a><font color=Blue>-- | Write a fully-typed XML document to a file handle, using the</font>+<a name="line-142"></a><font color=Blue>--   FastPackedString interface (output will not be prettified).</font>+<a name="line-143"></a><font color=Blue>fpsHPutXml</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> Handle <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> IO ()+<a name="line-144"></a><font color=Blue>fpsHPutXml</font> h dtd x <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-145"></a>    <font color=Cyan>(</font>FPS<font color=Cyan>.</font>hPut h <font color=Cyan>.</font> FPS<font color=Cyan>.</font>document <font color=Cyan>.</font> toXml dtd<font color=Cyan>)</font> x+<a name="line-146"></a>+<a name="line-147"></a>+<a name="line-148"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-149"></a><font color=Blue>-- Instances for all the standard basic datatypes.</font>+<a name="line-150"></a><font color=Blue>-- These are for Haskell datatypes being derived to go to XML.</font>+<a name="line-151"></a><font color=Blue>-- DtdToHaskell does not use these instances.</font>+<a name="line-152"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-153"></a>+<a name="line-154"></a><font color=Green><u>instance</u></font> XmlContent Bool <font color=Green><u>where</u></font>+<a name="line-155"></a>    toContents b   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"bool"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show b<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="line-156"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"bool"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="line-157"></a>+<a name="line-158"></a><font color=Green><u>instance</u></font> XmlContent Int <font color=Green><u>where</u></font>+<a name="line-159"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"int"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="line-160"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"int"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="line-161"></a>+<a name="line-162"></a><font color=Green><u>instance</u></font> XmlContent Integer <font color=Green><u>where</u></font>+<a name="line-163"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"integer"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="line-164"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"integer"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="line-165"></a>+<a name="line-166"></a><font color=Green><u>instance</u></font> XmlContent Float <font color=Green><u>where</u></font>+<a name="line-167"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"float"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="line-168"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"float"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="line-169"></a>+<a name="line-170"></a><font color=Green><u>instance</u></font> XmlContent Double <font color=Green><u>where</u></font>+<a name="line-171"></a>    toContents i   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"double"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Cyan>(</font>show i<font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="line-172"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"double"</font><font color=Red>]</font> <font color=Cyan>;</font> return <font color=Cyan>(</font>attval e<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="line-173"></a>+<a name="line-174"></a><font color=Green><u>instance</u></font> XmlContent Char <font color=Green><u>where</u></font>+<a name="line-175"></a>    <font color=Blue>-- NOT in a string</font>+<a name="line-176"></a>    toContents c   <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"char"</font> <font color=Red>[</font>mkAttr <font color=Magenta>"value"</font> <font color=Red>[</font>c<font color=Red>]</font><font color=Red>]</font> []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="line-177"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Red>[</font><font color=Cyan>(</font><font color=Magenta>"value"</font><font color=Cyan>,</font><font color=Cyan>(</font>AttValue <font color=Red>[</font>Left <font color=Red>[</font>c<font color=Red>]</font><font color=Red>]</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font>+<a name="line-178"></a>                             <font color=Red>&lt;-</font> element <font color=Red>[</font><font color=Magenta>"char"</font><font color=Red>]</font>+<a name="line-179"></a>                       <font color=Cyan>;</font> return c+<a name="line-180"></a>                       <font color=Cyan>}</font>+<a name="line-181"></a>    <font color=Blue>-- Only defined for Char and no other types:</font>+<a name="line-182"></a>    xToChar   <font color=Red>=</font> id+<a name="line-183"></a>    xFromChar <font color=Red>=</font> id+<a name="line-184"></a>+<a name="line-185"></a><font color=Green><u>instance</u></font> XmlContent a <font color=Red>=&gt;</font> XmlContent <font color=Red>[</font>a<font color=Red>]</font> <font color=Green><u>where</u></font>+<a name="line-186"></a>    toContents xs  <font color=Red>=</font> <font color=Green><u>case</u></font> toHType x <font color=Green><u>of</u></font>+<a name="line-187"></a>                       <font color=Cyan>(</font>Prim <font color=Magenta>"Char"</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="line-188"></a>                            <font color=Red>[</font>mkElem <font color=Magenta>"string"</font> <font color=Red>[</font>CString True <font color=Cyan>(</font>map xToChar xs<font color=Cyan>)</font> ()<font color=Red>]</font><font color=Red>]</font>+<a name="line-189"></a>                       <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> <font color=Red>[</font>mkElem xs <font color=Cyan>(</font>concatMap toContents xs<font color=Cyan>)</font><font color=Red>]</font>+<a name="line-190"></a>                   <font color=Green><u>where</u></font>   <font color=Cyan>(</font>x<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> xs+<a name="line-191"></a>    parseContents <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>x <font color=Red>-&gt;</font>+<a name="line-192"></a>        <font color=Green><u>case</u></font> x <font color=Green><u>of</u></font>+<a name="line-193"></a>            <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font>+<a name="line-194"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>map xFromChar s<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>+<a name="line-195"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"string"</font> [] <font color=Red>[</font>CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font><font color=Red>]</font><font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font>+<a name="line-196"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>map xFromChar s<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>+<a name="line-197"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem e [] xs<font color=Cyan>)</font> <font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>|</font> <font color=Magenta>"list"</font> <font color=Cyan>`isPrefixOf`</font> e+<a name="line-198"></a>                   <font color=Red>-&gt;</font> scanElements xs+<a name="line-199"></a>                   <font color=Green><u>where</u></font>+<a name="line-200"></a>                  <font color=Blue>-- scanElements :: [Content] -&gt; (Either String [a],[Content])</font>+<a name="line-201"></a>                     scanElements [] <font color=Red>=</font> <font color=Cyan>(</font>Right []<font color=Cyan>,</font> cs<font color=Cyan>)</font>+<a name="line-202"></a>                     scanElements es <font color=Red>=</font>+<a name="line-203"></a>                        <font color=Green><u>case</u></font> runParser parseContents es <font color=Green><u>of</u></font>+<a name="line-204"></a>                            <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> es'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>msg<font color=Cyan>)</font><font color=Cyan>,</font> es'<font color=Cyan>)</font>+<a name="line-205"></a>                            <font color=Cyan>(</font>Right y<font color=Cyan>,</font> es'<font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="line-206"></a>                                <font color=Green><u>case</u></font> scanElements es' <font color=Green><u>of</u></font>+<a name="line-207"></a>                                    <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ds<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> ds<font color=Cyan>)</font>+<a name="line-208"></a>                                    <font color=Cyan>(</font>Right ys<font color=Cyan>,</font> ds<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>y<font color=Red><b>:</b></font>ys<font color=Cyan>)</font><font color=Cyan>,</font> ds<font color=Cyan>)</font>+<a name="line-209"></a>            <font color=Cyan>(</font>CElem <font color=Cyan>(</font>Elem e <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> pos<font color=Red><b>:</b></font> cs<font color=Cyan>)</font>+<a name="line-210"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False+<a name="line-211"></a>                            <font color=Cyan>,</font><font color=Magenta>"Expected a &lt;list-...&gt;, but found a &lt;"</font><font color=Cyan>++</font>e<font color=Cyan>++</font><font color=Magenta>"&gt; at\n"</font>+<a name="line-212"></a>                            <font color=Cyan>++</font> show pos<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>+<a name="line-213"></a>            <font color=Cyan>(</font>CRef r pos<font color=Red><b>:</b></font> cs<font color=Cyan>)</font>+<a name="line-214"></a>                   <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False+<a name="line-215"></a>                            <font color=Cyan>,</font><font color=Magenta>"Expected a &lt;list-...&gt;, but found a ref "</font>+<a name="line-216"></a>                            <font color=Cyan>++</font>verbatim r<font color=Cyan>++</font><font color=Magenta>" at\n"</font><font color=Cyan>++</font> show pos<font color=Cyan>)</font><font color=Cyan>,</font> cs<font color=Cyan>)</font>+<a name="line-217"></a>            <font color=Cyan>(</font><font color=Green><u>_</u></font><font color=Red><b>:</b></font>cs<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Red>\</font> <font color=Cyan>(</font>P p<font color=Cyan>)</font><font color=Red>-&gt;</font> p<font color=Cyan>)</font> parseContents<font color=Cyan>)</font> cs  <font color=Blue>-- skip comments etc.</font>+<a name="line-218"></a>            []     <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False+<a name="line-219"></a>                            <font color=Cyan>,</font><font color=Magenta>"Ran out of input XML whilst secondary parsing"</font><font color=Cyan>)</font>+<a name="line-220"></a>                      <font color=Cyan>,</font> []<font color=Cyan>)</font>+<a name="line-221"></a>        <font color=Cyan>)</font>+<a name="line-222"></a>+<a name="line-223"></a><font color=Green><u>instance</u></font> XmlContent () <font color=Green><u>where</u></font>+<a name="line-224"></a>    toContents ()  <font color=Red>=</font> <font color=Red>[</font>CElem <font color=Cyan>(</font>Elem <font color=Magenta>"unit"</font> [] []<font color=Cyan>)</font> ()<font color=Red>]</font>+<a name="line-225"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> element <font color=Red>[</font><font color=Magenta>"unit"</font><font color=Red>]</font><font color=Cyan>;</font> return () <font color=Cyan>}</font>+<a name="line-226"></a>+<a name="line-227"></a>+<a name="line-228"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>Maybe a<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-229"></a>    toContents m   <font color=Red>=</font> <font color=Red>[</font>mkElem m <font color=Cyan>(</font>maybe [] toContents m<font color=Cyan>)</font><font color=Red>]</font>+<a name="line-230"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-231"></a>        <font color=Cyan>{</font> e <font color=Red>&lt;-</font> elementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Red>[</font><font color=Magenta>"maybe"</font><font color=Red>]</font>+<a name="line-232"></a>        <font color=Cyan>;</font> <font color=Green><u>case</u></font> e <font color=Green><u>of</u></font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> [] []<font color=Cyan>)</font> <font color=Red>-&gt;</font> return Nothing+<a name="line-233"></a>                    <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> [] <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font> fmap Just <font color=Cyan>(</font>interior e parseContents<font color=Cyan>)</font>+<a name="line-234"></a>        <font color=Cyan>}</font>+<a name="line-235"></a>+<a name="line-236"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>Either a b<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-237"></a>    toContents v<font color=Red>@</font><font color=Cyan>(</font>Left aa<font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-238"></a>        <font color=Red>[</font>mkElemC <font color=Cyan>(</font>showConstr <font color=Magenta>0</font> <font color=Cyan>(</font>toHType v<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>toContents aa<font color=Cyan>)</font><font color=Red>]</font>+<a name="line-239"></a>    toContents v<font color=Red>@</font><font color=Cyan>(</font>Right ab<font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-240"></a>        <font color=Red>[</font>mkElemC <font color=Cyan>(</font>showConstr <font color=Magenta>1</font> <font color=Cyan>(</font>toHType v<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>toContents ab<font color=Cyan>)</font><font color=Red>]</font>+<a name="line-241"></a>    parseContents <font color=Red>=</font>+<a name="line-242"></a>        <font color=Cyan>(</font>inElementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Magenta>"Left"</font>  <font color=Cyan>$</font> fmap Left  parseContents<font color=Cyan>)</font>+<a name="line-243"></a>          <font color=Cyan>`onFail`</font>+<a name="line-244"></a>        <font color=Cyan>(</font>inElementWith <font color=Cyan>(</font>flip isPrefixOf<font color=Cyan>)</font> <font color=Magenta>"Right"</font> <font color=Cyan>$</font> fmap Right parseContents<font color=Cyan>)</font>+<a name="line-245"></a>+<a name="line-246"></a><font color=Blue>--    do{ e@(Elem t [] _) &lt;- element ["Left","Right"]</font>+<a name="line-247"></a><font color=Blue>--      ; case t of</font>+<a name="line-248"></a><font color=Blue>--          _ | "Left"  `isPrefixOf` t -&gt; fmap Left  (interior e parseContents)</font>+<a name="line-249"></a><font color=Blue>--            | "Right" `isPrefixOf` t -&gt; fmap Right (interior e parseContents)</font>+<a name="line-250"></a><font color=Blue>--      }</font>+<a name="line-251"></a>+<a name="line-252"></a><font color=Blue>------------------------------------------------------------------------</font>+</pre>+</body>+</html>
+ docs/HaXml/src/Text/XML/HaXml/XmlContent/Parser.html view
@@ -0,0 +1,700 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>src/Text/XML/HaXml/XmlContent/Parser.hs</title>+</head>+<body>+<pre><a name="line-1"></a><font color=Blue>{-# LANGUAGE ExistentialQuantification #-}</font>+<a name="line-2"></a>+<a name="line-3"></a><font color=Blue>-- | The class 'XmlContent' is a kind of replacement for Read and Show:</font>+<a name="line-4"></a><font color=Blue>--   it provides conversions between a generic XML tree representation</font>+<a name="line-5"></a><font color=Blue>--   and your own more specialised typeful Haskell data trees.</font>+<a name="line-6"></a><font color=Blue>--</font>+<a name="line-7"></a><font color=Blue>--   If you are starting with a set of Haskell datatypes, use DrIFT to</font>+<a name="line-8"></a><font color=Blue>--   derive instances of this class for you:</font>+<a name="line-9"></a><font color=Blue>--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT</font>+<a name="line-10"></a><font color=Blue>--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell</font>+<a name="line-11"></a><font color=Blue>--   to generate both the Haskell types and the corresponding instances.</font>+<a name="line-12"></a><font color=Blue>--</font>+<a name="line-13"></a><font color=Blue>--   This unified class interface replaces two previous (somewhat similar)</font>+<a name="line-14"></a><font color=Blue>--   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have</font>+<a name="line-15"></a><font color=Blue>--   separate classes depending on how you originally defined your datatypes.</font>+<a name="line-16"></a><font color=Blue>--   However, some instances for basic types like lists will depend on which </font>+<a name="line-17"></a><font color=Blue>--   direction you are using.  See Text.XML.HaXml.XmlContent and</font>+<a name="line-18"></a><font color=Blue>--   Text.XML.HaXml.XmlContent.Haskell.</font>+<a name="line-19"></a>+<a name="line-20"></a><font color=Blue>--   The methods 'toContents' and 'parseContents' convert a value to and from</font>+<a name="line-21"></a><font color=Blue>--   a generic internal representation of an XML document /without/ a DTD.</font>+<a name="line-22"></a><font color=Blue>--   The functions 'toXml' and 'fromXml' convert a value to and from a generic</font>+<a name="line-23"></a><font color=Blue>--   internal representation of an XML document /including/ a DTD.</font>+<a name="line-24"></a><font color=Blue>--   The functions 'readXml' and 'showXml' convert to and from Strings.</font>+<a name="line-25"></a><font color=Blue>--   The functions 'fReadXml' and 'fWriteXml' do the conversion to and from</font>+<a name="line-26"></a><font color=Blue>--   the given filenames.</font>+<a name="line-27"></a><font color=Blue>--   The functions 'hGetXml' and 'hPutXml' do the conversion to and from</font>+<a name="line-28"></a><font color=Blue>--   the given file handles.</font>+<a name="line-29"></a><font color=Blue>--   (See the type signatures.)</font>+<a name="line-30"></a><font color=Blue>--</font>+<a name="line-31"></a>+<a name="line-32"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>XmlContent<font color=Cyan>.</font>Parser+<a name="line-33"></a>  <font color=Cyan>(</font> <font color=Blue>-- * Re-export the relevant set of generic XML document type definitions</font>+<a name="line-34"></a>    Document<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-35"></a>  <font color=Cyan>,</font> Element<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-36"></a>  <font color=Cyan>,</font> ElemTag<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-37"></a>  <font color=Cyan>,</font> Content<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-38"></a>  <font color=Cyan>,</font> Attribute()+<a name="line-39"></a>  <font color=Cyan>,</font> AttValue<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-40"></a>  <font color=Cyan>,</font> Prolog<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-41"></a>  <font color=Cyan>,</font> Reference<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-42"></a>  <font color=Blue>-- * The enabling classes, that define parsing\/unparsing between Haskell</font>+<a name="line-43"></a>  <font color=Blue>--   datatypes and a generic XML representation.</font>+<a name="line-44"></a>  <font color=Cyan>,</font> XmlContent<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-45"></a>  <font color=Cyan>,</font> XmlAttributes<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-46"></a>  <font color=Cyan>,</font> XmlAttrType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-47"></a>  <font color=Blue>-- ** Auxiliaries for writing parsers in the XmlContent class</font>+<a name="line-48"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly+<a name="line-49"></a>  <font color=Cyan>,</font> XMLParser+<a name="line-50"></a>  <font color=Cyan>,</font> content<font color=Cyan>,</font> posnElement<font color=Cyan>,</font> element<font color=Cyan>,</font> interior<font color=Cyan>,</font> inElement<font color=Cyan>,</font> text<font color=Cyan>,</font> attributes+<a name="line-51"></a>  <font color=Cyan>,</font> posnElementWith<font color=Cyan>,</font> elementWith<font color=Cyan>,</font> inElementWith+<a name="line-52"></a>  <font color=Cyan>,</font> choice<font color=Cyan>,</font> definite <font color=Blue>-- ???</font>+<a name="line-53"></a>  <font color=Blue>-- ** Auxiliaries for generating in the XmlContent class</font>+<a name="line-54"></a>  <font color=Cyan>,</font> mkElem<font color=Cyan>,</font> mkElemC<font color=Cyan>,</font> mkAttr+<a name="line-55"></a>  <font color=Cyan>,</font> toText<font color=Cyan>,</font> toCData+<a name="line-56"></a>  <font color=Blue>-- ** Auxiliaries for the attribute-related classes</font>+<a name="line-57"></a>  <font color=Cyan>,</font> maybeToAttr<font color=Cyan>,</font> defaultToAttr+<a name="line-58"></a>  <font color=Cyan>,</font> definiteA<font color=Cyan>,</font> defaultA<font color=Cyan>,</font> possibleA<font color=Cyan>,</font> fromAttrToStr<font color=Cyan>,</font> toAttrFrStr+<a name="line-59"></a>  <font color=Cyan>,</font> Defaultable<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-60"></a>  <font color=Cyan>,</font> str2attr<font color=Cyan>,</font> attr2str<font color=Cyan>,</font> attval+<a name="line-61"></a>  <font color=Cyan>,</font> catMaybes   <font color=Blue>-- re-exported from Maybe</font>+<a name="line-62"></a>  <font color=Blue>-- * Explicit representation of Haskell datatype information</font>+<a name="line-63"></a>  <font color=Blue>--   (for conversion to a DTD)</font>+<a name="line-64"></a>  <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping+<a name="line-65"></a>  <font color=Blue>-- * Types useful for some content models</font>+<a name="line-66"></a>  <font color=Cyan>,</font> List1<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-67"></a>  <font color=Cyan>,</font> ANYContent<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-68"></a>  <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-69"></a>+<a name="line-70"></a><font color=Blue>--import IO</font>+<a name="line-71"></a><font color=Green><u>import</u></font> Maybe <font color=Cyan>(</font>catMaybes<font color=Cyan>)</font>+<a name="line-72"></a><font color=Green><u>import</u></font> Char  <font color=Cyan>(</font>chr<font color=Cyan>,</font> isSpace<font color=Cyan>)</font>+<a name="line-73"></a><font color=Green><u>import</u></font> List  <font color=Cyan>(</font>isPrefixOf<font color=Cyan>,</font> isSuffixOf<font color=Cyan>)</font>+<a name="line-74"></a>+<a name="line-75"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>+<a name="line-76"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty <font color=Green><u>as</u></font> PP+<a name="line-77"></a>+<a name="line-78"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="line-79"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>TypeMapping+<a name="line-80"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn     <font color=Cyan>(</font>Posn<font color=Cyan>,</font> posInNewCxt<font color=Cyan>)</font>+<a name="line-81"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty   <font color=Cyan>(</font>document<font color=Cyan>)</font>+<a name="line-82"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse    <font color=Cyan>(</font>xmlParse<font color=Cyan>)</font>+<a name="line-83"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim <font color=Cyan>(</font>Verbatim<font color=Cyan>(</font>verbatim<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-84"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>ByteStringPP <font color=Green><u>as</u></font> FPS <font color=Cyan>(</font>document<font color=Cyan>)</font>+<a name="line-85"></a><font color=Green><u>import</u></font> <font color=Green><u>qualified</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8 <font color=Green><u>as</u></font> FPS+<a name="line-86"></a>+<a name="line-87"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>ParserCombinators<font color=Cyan>.</font>Poly+<a name="line-88"></a>+<a name="line-89"></a><font color=Blue>--  #define DEBUG</font>+<a name="line-90"></a>+<a name="line-91"></a><font color=Magenta><em>#if defined(DEBUG)</em></font>+<a name="line-92"></a><font color=Green><u>import</u></font> Debug<font color=Cyan>.</font>Trace<font color=Cyan>(</font>trace<font color=Cyan>)</font>+<a name="line-93"></a><a name="debug"></a><font color=Blue>debug</font> <font color=Red>::</font> a <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> a+<a name="line-94"></a><a name="debug"></a><font color=Blue>v</font> <font color=Cyan>`debug`</font> s <font color=Red>=</font> trace s v+<a name="line-95"></a><font color=Magenta><em>#else</em></font>+<a name="line-96"></a><font color=Blue>debug</font> <font color=Red>::</font> t <font color=Red>-&gt;</font> t1 <font color=Red>-&gt;</font> t+<a name="line-97"></a><a name="debug"></a><font color=Blue>v</font> <font color=Cyan>`debug`</font> <font color=Green><u>_</u></font> <font color=Red>=</font> v+<a name="line-98"></a><font color=Magenta><em>#endif</em></font>+<a name="line-99"></a>+<a name="line-100"></a>+<a name="line-101"></a><a name="attval"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-102"></a><font color=Blue>-- | Read a single attribute called "value".</font>+<a name="line-103"></a><font color=Blue>attval</font> <font color=Red>::</font> <font color=Cyan>(</font>Read a<font color=Cyan>)</font> <font color=Red>=&gt;</font> Element i <font color=Red>-&gt;</font> a+<a name="line-104"></a><font color=Blue>attval</font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Red>[</font><font color=Cyan>(</font><font color=Magenta>"value"</font><font color=Cyan>,</font>v<font color=Red>@</font><font color=Cyan>(</font>AttValue <font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Red>]</font> []<font color=Cyan>)</font> <font color=Red>=</font> read <font color=Cyan>(</font>show v<font color=Cyan>)</font>+<a name="line-105"></a>+<a name="line-106"></a><a name="mkAttr"></a><font color=Blue>-- | Generate a single attribute.</font>+<a name="line-107"></a><font color=Blue>mkAttr</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Attribute+<a name="line-108"></a><font color=Blue>mkAttr</font> n v <font color=Red>=</font> <font color=Cyan>(</font>n<font color=Cyan>,</font> AttValue <font color=Red>[</font>Left v<font color=Red>]</font><font color=Cyan>)</font>+<a name="line-109"></a>+<a name="line-110"></a><a name="mkElem"></a><font color=Blue>-- | Generate an element with no attributes, named for its HType.</font>+<a name="line-111"></a><font color=Blue>mkElem</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font> <font color=Red>-&gt;</font> Content ()+<a name="line-112"></a><font color=Blue>mkElem</font> x cs  <font color=Red>=</font> CElem <font color=Cyan>(</font>Elem <font color=Cyan>(</font>showHType <font color=Cyan>(</font>toHType x<font color=Cyan>)</font> <font color=Magenta>""</font><font color=Cyan>)</font> [] cs<font color=Cyan>)</font> ()+<a name="line-113"></a>+<a name="line-114"></a><a name="mkElemC"></a><font color=Blue>-- | Generate an element with no attributes, named directly.</font>+<a name="line-115"></a><font color=Blue>mkElemC</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font> <font color=Red>-&gt;</font> Content ()+<a name="line-116"></a><font color=Blue>mkElemC</font> x cs <font color=Red>=</font> CElem <font color=Cyan>(</font>Elem x [] cs<font color=Cyan>)</font> ()+<a name="line-117"></a>+<a name="line-118"></a><a name="toText"></a><font color=Blue>-- | Turn a simple string into XML text.</font>+<a name="line-119"></a><font color=Blue>toText</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>+<a name="line-120"></a><font color=Blue>toText</font> s <font color=Red>=</font> <font color=Red>[</font>CString False s ()<font color=Red>]</font>+<a name="line-121"></a>+<a name="line-122"></a><a name="toCData"></a><font color=Blue>-- | Turn a string into an XML CDATA section.</font>+<a name="line-123"></a><font color=Blue>--   (i.e. special characters like '&amp;' are preserved without interpretation.)</font>+<a name="line-124"></a><font color=Blue>toCData</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>+<a name="line-125"></a><font color=Blue>toCData</font> s <font color=Red>=</font> <font color=Red>[</font>CString True s ()<font color=Red>]</font>+<a name="line-126"></a>+<a name="line-127"></a>+<a name="line-128"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-129"></a>+<a name="line-130"></a><a name="XMLParser"></a><font color=Blue>-- | We need a parsing monad for reading generic XML Content into specific</font>+<a name="line-131"></a><a name="XMLParser"></a><font color=Blue>--   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly</font>+<a name="line-132"></a><a name="XMLParser"></a><font color=Blue>--   ones, where the input token type is fixed as XML Content.</font>+<a name="line-133"></a><a name="XMLParser"></a><font color=Green><u>type</u></font> XMLParser a <font color=Red>=</font> Parser <font color=Cyan>(</font>Content Posn<font color=Cyan>)</font> a+<a name="line-134"></a>+<a name="line-135"></a>+<a name="line-136"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-137"></a><font color=Blue>-- Some useful parsing combinators</font>+<a name="line-138"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-139"></a>+<a name="line-140"></a><a name="content"></a><font color=Blue>-- | The most primitive combinator for XMLParser - get one content item.</font>+<a name="line-141"></a><font color=Blue>content</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Content Posn<font color=Cyan>)</font>+<a name="line-142"></a><font color=Blue>content</font> word <font color=Red>=</font> next <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>" when expecting "</font><font color=Cyan>++</font>word<font color=Cyan>)</font>+<a name="line-143"></a>+<a name="line-144"></a><a name="posnElementWith"></a><font color=Blue>-- | Get the next content element, checking that it has one of the required</font>+<a name="line-145"></a><font color=Blue>--   tags, using the given matching function.</font>+<a name="line-146"></a><font color=Blue>--   (Skips over comments and whitespace, rejects text and refs.</font>+<a name="line-147"></a><font color=Blue>--    Also returns position of element.)</font>+<a name="line-148"></a><font color=Blue>posnElementWith</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font>+<a name="line-149"></a>                   <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Posn<font color=Cyan>,</font> Element Posn<font color=Cyan>)</font>+<a name="line-150"></a><font color=Blue>posnElementWith</font> match tags <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-151"></a>    <font color=Cyan>{</font> c <font color=Red>&lt;-</font> content <font color=Cyan>(</font>formatted tags<font color=Cyan>)</font>+<a name="line-152"></a>    <font color=Cyan>;</font> <font color=Green><u>case</u></font> c <font color=Green><u>of</u></font>+<a name="line-153"></a>          CElem e<font color=Red>@</font><font color=Cyan>(</font>Elem t <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> pos+<a name="line-154"></a>              <font color=Red>|</font> any <font color=Cyan>(</font>match t<font color=Cyan>)</font> tags <font color=Red>-&gt;</font> return <font color=Cyan>(</font>pos<font color=Cyan>,</font> e<font color=Cyan>)</font>+<a name="line-155"></a>              <font color=Red>|</font> otherwise          <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found a &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;, but expected "</font>+<a name="line-156"></a>                                           <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>+<a name="line-157"></a>          CString b s pos+<a name="line-158"></a>              <font color=Red>|</font> not b <font color=Cyan>&amp;&amp;</font> all isSpace s <font color=Red>-&gt;</font> posnElementWith match tags+<a name="line-159"></a>                                                        <font color=Blue>-- ignore blank space</font>+<a name="line-160"></a>              <font color=Red>|</font> otherwise <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found text content, but expected "</font>+<a name="line-161"></a>                                  <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\ntext is: "</font><font color=Cyan>++</font>s+<a name="line-162"></a>                                  <font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>+<a name="line-163"></a>          CRef r pos <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Found reference, but expected "</font>+<a name="line-164"></a>                             <font color=Cyan>++</font>formatted tags<font color=Cyan>++</font><font color=Magenta>"\nreference is: "</font><font color=Cyan>++</font>verbatim r+<a name="line-165"></a>                             <font color=Cyan>++</font><font color=Magenta>"\nat "</font><font color=Cyan>++</font>show pos<font color=Cyan>)</font>+<a name="line-166"></a>          CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> posnElementWith match tags  <font color=Blue>-- skip comments, PIs, etc.</font>+<a name="line-167"></a>    <font color=Cyan>}</font>+<a name="line-168"></a>  <font color=Green><u>where</u></font>+<a name="line-169"></a>    formatted <font color=Red>[</font>t<font color=Red>]</font>  <font color=Red>=</font> <font color=Magenta>"a &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;"</font>+<a name="line-170"></a>    formatted tgs <font color=Red>=</font> <font color=Magenta>"one of"</font><font color=Cyan>++</font> concatMap <font color=Cyan>(</font><font color=Red>\</font>t<font color=Red>-&gt;</font><font color=Magenta>" &lt;"</font><font color=Cyan>++</font>t<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>)</font> tgs+<a name="line-171"></a>+<a name="line-172"></a><a name="posnElement"></a><font color=Blue>-- | A specialisation of @posnElementWith (==)@.</font>+<a name="line-173"></a><font color=Blue>posnElement</font> <font color=Red>::</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Posn<font color=Cyan>,</font> Element Posn<font color=Cyan>)</font>+<a name="line-174"></a><font color=Blue>posnElement</font> <font color=Red>=</font> posnElementWith <font color=Cyan>(</font><font color=Cyan>==</font><font color=Cyan>)</font>+<a name="line-175"></a>+<a name="line-176"></a><a name="element"></a><font color=Blue>-- | Get the next content element, checking that it has one of the required</font>+<a name="line-177"></a><font color=Blue>--   tags.  (Skips over comments and whitespace, rejects text and refs.)</font>+<a name="line-178"></a><font color=Blue>element</font> <font color=Red>::</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Element Posn<font color=Cyan>)</font>+<a name="line-179"></a><font color=Blue>element</font> tags <font color=Red>=</font> fmap snd <font color=Cyan>(</font>posnElement tags<font color=Cyan>)</font>+<a name="line-180"></a>                                <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Element: "</font><font color=Cyan>++</font>unwords tags<font color=Cyan>++</font><font color=Magenta>"\n"</font><font color=Cyan>)</font>+<a name="line-181"></a>+<a name="line-182"></a><a name="elementWith"></a><font color=Blue>-- | Like element, only permits a more flexible match against the tagname.</font>+<a name="line-183"></a><font color=Blue>elementWith</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font> <font color=Red>-&gt;</font> XMLParser <font color=Cyan>(</font>Element Posn<font color=Cyan>)</font>+<a name="line-184"></a><font color=Blue>elementWith</font> match tags <font color=Red>=</font> fmap snd <font color=Cyan>(</font>posnElementWith match tags<font color=Cyan>)</font>+<a name="line-185"></a>                                <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"Element: "</font><font color=Cyan>++</font>unwords tags<font color=Cyan>++</font><font color=Magenta>"\n"</font><font color=Cyan>)</font>+<a name="line-186"></a>+<a name="line-187"></a><a name="interior"></a><font color=Blue>-- | Run an XMLParser on the contents of the given element (i.e. not on the</font>+<a name="line-188"></a><font color=Blue>--   current monadic content sequence), checking that the contents are</font>+<a name="line-189"></a><font color=Blue>--   exhausted, before returning the calculated value within the current</font>+<a name="line-190"></a><font color=Blue>--   parser context.</font>+<a name="line-191"></a><font color=Blue>interior</font> <font color=Red>::</font> Element Posn <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a+<a name="line-192"></a><font color=Blue>interior</font> <font color=Cyan>(</font>Elem e <font color=Green><u>_</u></font> cs<font color=Cyan>)</font> p <font color=Red>=</font>+<a name="line-193"></a>    <font color=Green><u>case</u></font> runParser p cs <font color=Green><u>of</u></font>+<a name="line-194"></a>        <font color=Cyan>(</font>Left msg<font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> fail msg+<a name="line-195"></a>        <font color=Cyan>(</font>Right x<font color=Cyan>,</font> []<font color=Cyan>)</font> <font color=Red>-&gt;</font> return x+<a name="line-196"></a>        <font color=Cyan>(</font>Right x<font color=Cyan>,</font> ds<font color=Red>@</font><font color=Cyan>(</font>d<font color=Red><b>:</b></font><font color=Green><u>_</u></font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-197"></a>            <font color=Red>|</font> all onlyMisc ds <font color=Red>-&gt;</font> return x+<a name="line-198"></a>            <font color=Red>|</font> otherwise       <font color=Red>-&gt;</font> fail <font color=Cyan>(</font><font color=Magenta>"Too many elements inside &lt;"</font><font color=Cyan>++</font>e<font color=Cyan>++</font><font color=Magenta>"&gt; at\n"</font>+<a name="line-199"></a>                                      <font color=Cyan>++</font>show <font color=Cyan>(</font>info d<font color=Cyan>)</font><font color=Cyan>++</font><font color=Magenta>"\n"</font>+<a name="line-200"></a>                                      <font color=Cyan>++</font><font color=Magenta>"Found excess: "</font><font color=Cyan>++</font>verbatim d<font color=Cyan>)</font>+<a name="line-201"></a>  <font color=Green><u>where</u></font> onlyMisc <font color=Cyan>(</font>CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True+<a name="line-202"></a>        onlyMisc <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>|</font> all isSpace s <font color=Red>=</font> True+<a name="line-203"></a>        onlyMisc <font color=Green><u>_</u></font> <font color=Red>=</font> False+<a name="line-204"></a>+<a name="line-205"></a><a name="inElement"></a><font color=Blue>-- | A combination of element + interior.</font>+<a name="line-206"></a><font color=Blue>inElement</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a+<a name="line-207"></a><font color=Blue>inElement</font> tag p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> element <font color=Red>[</font>tag<font color=Red>]</font><font color=Cyan>;</font> commit <font color=Cyan>(</font>interior e p<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="line-208"></a>+<a name="line-209"></a><a name="inElementWith"></a><font color=Blue>-- | A combination of elementWith + interior.</font>+<a name="line-210"></a><font color=Blue>inElementWith</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>String<font color=Red>-&gt;</font>Bool<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> XMLParser a <font color=Red>-&gt;</font> XMLParser a+<a name="line-211"></a><font color=Blue>inElementWith</font> match tag p <font color=Red>=</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> e <font color=Red>&lt;-</font> elementWith match <font color=Red>[</font>tag<font color=Red>]</font>+<a name="line-212"></a>                               <font color=Cyan>;</font> commit <font color=Cyan>(</font>interior e p<font color=Cyan>)</font> <font color=Cyan>}</font>+<a name="line-213"></a>+<a name="line-214"></a><a name="attributes"></a><font color=Blue>-- | Do some parsing of the attributes of the given element</font>+<a name="line-215"></a><font color=Blue>attributes</font> <font color=Red>::</font> XmlAttributes a <font color=Red>=&gt;</font> Element Posn <font color=Red>-&gt;</font> XMLParser a+<a name="line-216"></a><font color=Blue>attributes</font> <font color=Cyan>(</font>Elem <font color=Green><u>_</u></font> <font color=Green><u>as</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> return <font color=Cyan>(</font>fromAttrs <font color=Green><u>as</u></font><font color=Cyan>)</font>+<a name="line-217"></a>+<a name="line-218"></a><a name="text"></a><font color=Blue>-- | 'text' is a counterpart to 'element', parsing text content if it</font>+<a name="line-219"></a><font color=Blue>--   exists.  Adjacent text and references are coalesced.</font>+<a name="line-220"></a><font color=Blue>text</font> <font color=Red>::</font> XMLParser String+<a name="line-221"></a><font color=Blue>text</font> <font color=Red>=</font> text' []+<a name="line-222"></a>  <font color=Green><u>where</u></font> text' acc <font color=Red>=</font>+<a name="line-223"></a>          <font color=Green><u>do</u></font> <font color=Cyan>{</font> c <font color=Red>&lt;-</font> content <font color=Magenta>"plain text"</font>+<a name="line-224"></a>             <font color=Cyan>;</font> <font color=Green><u>case</u></font> c <font color=Green><u>of</u></font>+<a name="line-225"></a>                 CString <font color=Green><u>_</u></font> s <font color=Green><u>_</u></font>        <font color=Red>-&gt;</font> text' <font color=Cyan>(</font>s<font color=Red><b>:</b></font>acc<font color=Cyan>)</font>+<a name="line-226"></a>                 CRef <font color=Cyan>(</font>RefChar s<font color=Cyan>)</font> <font color=Green><u>_</u></font>   <font color=Red>-&gt;</font> text' <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"&amp;#"</font><font color=Cyan>++</font>show s<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font> <font color=Red><b>:</b></font>acc<font color=Cyan>)</font>+<a name="line-227"></a>                 CRef <font color=Cyan>(</font>RefEntity s<font color=Cyan>)</font> <font color=Green><u>_</u></font> <font color=Red>-&gt;</font> text' <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>'&amp;'</font><font color=Red><b>:</b></font>s<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font><font color=Red><b>:</b></font>acc<font color=Cyan>)</font>+<a name="line-228"></a>                 CMisc <font color=Green><u>_</u></font> <font color=Green><u>_</u></font>            <font color=Red>-&gt;</font> text' acc+<a name="line-229"></a>                 CElem <font color=Green><u>_</u></font> <font color=Green><u>_</u></font>         <font color=Red>-&gt;</font> <font color=Green><u>do</u></font> <font color=Cyan>{</font> reparse <font color=Red>[</font>c<font color=Red>]</font> <font color=Blue>-- put it back!</font>+<a name="line-230"></a>                                         <font color=Cyan>;</font> <font color=Green><u>if</u></font> null acc <font color=Green><u>then</u></font> fail <font color=Magenta>"empty string"</font>+<a name="line-231"></a>                                           <font color=Green><u>else</u></font> return <font color=Cyan>(</font>concat <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-232"></a>                                         <font color=Cyan>}</font>+<a name="line-233"></a>             <font color=Cyan>}</font>+<a name="line-234"></a>          <font color=Cyan>`onFail`</font> <font color=Cyan>(</font> <font color=Green><u>if</u></font> null acc <font color=Green><u>then</u></font> fail <font color=Magenta>"empty string"</font>+<a name="line-235"></a>                     <font color=Green><u>else</u></font> return <font color=Cyan>(</font>concat <font color=Cyan>(</font>reverse acc<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="line-236"></a>+<a name="line-237"></a>+<a name="line-238"></a><a name="choice"></a><font color=Blue>-- | 'choice f p' means if parseContents succeeds, apply f to the result,</font>+<a name="line-239"></a><font color=Blue>--   otherwise use the continuation parser.</font>+<a name="line-240"></a><font color=Blue>choice</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> <font color=Cyan>(</font>a <font color=Red>-&gt;</font> b<font color=Cyan>)</font> <font color=Red>-&gt;</font> XMLParser b <font color=Red>-&gt;</font> XMLParser b+<a name="line-241"></a><font color=Blue>choice</font> cons <font color=Cyan>(</font>P other<font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-242"></a>    P <font color=Cyan>(</font><font color=Red>\</font>cs<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> runParser parseContents cs <font color=Green><u>of</u></font>+<a name="line-243"></a>                 <font color=Cyan>(</font>Left <font color=Green><u>_</u></font><font color=Cyan>,</font> <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>-&gt;</font> other cs+<a name="line-244"></a>                 <font color=Cyan>(</font>Right x<font color=Cyan>,</font> cs'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>cons x<font color=Cyan>)</font><font color=Cyan>,</font> cs'<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-245"></a>+<a name="line-246"></a><font color=Blue>--choice cons other = fmap cons parseContents `onFail` other</font>+<a name="line-247"></a>+<a name="line-248"></a><a name="definite"></a><font color=Blue>-- | not sure this is needed now.   'definite p' previously ensured that</font>+<a name="line-249"></a><font color=Blue>--   an element was definitely present.  Now I think the monad might take</font>+<a name="line-250"></a><font color=Blue>--   care of that for us.</font>+<a name="line-251"></a><font color=Blue>definite</font> <font color=Red>::</font> XmlContent a <font color=Red>=&gt;</font> XMLParser a <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> XMLParser a+<a name="line-252"></a><font color=Blue>definite</font> p inner tag <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>cs<font color=Red>-&gt;</font> <font color=Green><u>case</u></font> runParser p cs <font color=Green><u>of</u></font>+<a name="line-253"></a>                                   <font color=Cyan>(</font>Left <font color=Green><u>_</u></font><font color=Cyan>,</font> cs'<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Cyan>(</font>Left <font color=Cyan>(</font>False<font color=Cyan>,</font>msg'<font color=Cyan>)</font><font color=Cyan>,</font> cs'<font color=Cyan>)</font>+<a name="line-254"></a>                                   <font color=Cyan>(</font>Right x<font color=Cyan>,</font> cs'<font color=Cyan>)</font>  <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right x<font color=Cyan>,</font>   cs'<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-255"></a>  <font color=Green><u>where</u></font> msg' <font color=Red>=</font> <font color=Magenta>"content error: expected "</font><font color=Cyan>++</font>inner<font color=Cyan>++</font><font color=Magenta>" inside &lt;"</font><font color=Cyan>++</font>tag+<a name="line-256"></a>               <font color=Cyan>++</font><font color=Magenta>"&gt; element\n"</font>+<a name="line-257"></a>+<a name="line-258"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-259"></a>+<a name="line-260"></a><a name="XmlContent"></a><font color=Blue>-- | The @XmlContent@ class promises that an XML Content element can be</font>+<a name="line-261"></a><a name="XmlContent"></a><font color=Blue>--   converted to and from a Haskell value.</font>+<a name="line-262"></a><a name="XmlContent"></a><font color=Green><u>class</u></font> HTypeable a <font color=Red>=&gt;</font> XmlContent a <font color=Green><u>where</u></font>+<a name="line-263"></a>    <font color=Blue>-- | Convert from XML to Haskell</font>+<a name="line-264"></a>    parseContents <font color=Red>::</font> XMLParser a+<a name="line-265"></a>    <font color=Blue>-- | Convert from Haskell to XML</font>+<a name="line-266"></a>    toContents    <font color=Red>::</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Content ()<font color=Red>]</font>+<a name="line-267"></a>+<a name="line-268"></a>    <font color=Blue>-- | Dummy functions (for most types): used /only/ in the Char instance</font>+<a name="line-269"></a>    <font color=Blue>--   for coercing lists of Char into String.</font>+<a name="line-270"></a>    xToChar       <font color=Red>::</font> a <font color=Red>-&gt;</font> Char+<a name="line-271"></a>    xFromChar     <font color=Red>::</font> Char <font color=Red>-&gt;</font> a+<a name="line-272"></a>    xToChar        <font color=Red>=</font> error <font color=Magenta>"HaXml.XmlContent.xToChar used in error"</font>+<a name="line-273"></a>    xFromChar      <font color=Red>=</font> error <font color=Magenta>"HaXml.XmlContent.xFromChar used in error"</font>+<a name="line-274"></a>+<a name="line-275"></a><a name="XmlContent"></a><font color=Blue>-- | The @XmlAttributes@ class promises that a list of XML tag attributes</font>+<a name="line-276"></a><a name="XmlContent"></a><font color=Blue>--   can be converted to and from a Haskell value.</font>+<a name="line-277"></a><a name="XmlContent"></a><font color=Green><u>class</u></font> XmlAttributes a <font color=Green><u>where</u></font>+<a name="line-278"></a>    fromAttrs <font color=Red>::</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> a+<a name="line-279"></a>    toAttrs   <font color=Red>::</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font>+<a name="line-280"></a><a name="XmlContent"></a><font color=Blue>-- | The @XmlAttrType@ class promises that an attribute taking an XML</font>+<a name="line-281"></a><a name="XmlContent"></a><font color=Blue>--   enumerated type can be converted to and from a Haskell value.</font>+<a name="line-282"></a><a name="XmlContent"></a><font color=Green><u>class</u></font> XmlAttrType a <font color=Green><u>where</u></font>+<a name="line-283"></a>    fromAttrToTyp <font color=Red>::</font> String <font color=Red>-&gt;</font> Attribute <font color=Red>-&gt;</font> Maybe a+<a name="line-284"></a>    toAttrFrTyp   <font color=Red>::</font> String <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> Maybe Attribute+<a name="line-285"></a>+<a name="line-286"></a>+<a name="line-287"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-288"></a><font color=Blue>-- Instances for some of the standard basic datatypes.</font>+<a name="line-289"></a><font color=Blue>-- Both DtdToHaskell and Haskell2Xml share these instances.</font>+<a name="line-290"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-291"></a>+<a name="line-292"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-293"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b+<a name="line-294"></a>    parseContents    <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-295"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-296"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-297"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font>+<a name="line-298"></a>        <font color=Cyan>}</font>+<a name="line-299"></a>+<a name="line-300"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-301"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c+<a name="line-302"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-303"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-304"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-305"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="line-306"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font>+<a name="line-307"></a>        <font color=Cyan>}</font>+<a name="line-308"></a>+<a name="line-309"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d<font color=Cyan>)</font> <font color=Red>=&gt;</font>+<a name="line-310"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-311"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c+<a name="line-312"></a>                           <font color=Cyan>++</font> toContents d+<a name="line-313"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-314"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-315"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-316"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="line-317"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents+<a name="line-318"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>)</font>+<a name="line-319"></a>        <font color=Cyan>}</font>+<a name="line-320"></a>+<a name="line-321"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d+<a name="line-322"></a>         <font color=Cyan>,</font> XmlContent e <font color=Cyan>)</font> <font color=Red>=&gt;</font>+<a name="line-323"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-324"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c+<a name="line-325"></a>                             <font color=Cyan>++</font> toContents d <font color=Cyan>++</font> toContents e+<a name="line-326"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-327"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-328"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-329"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="line-330"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents+<a name="line-331"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents+<a name="line-332"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>)</font>+<a name="line-333"></a>        <font color=Cyan>}</font>+<a name="line-334"></a>+<a name="line-335"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d+<a name="line-336"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f <font color=Cyan>)</font> <font color=Red>=&gt;</font>+<a name="line-337"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-338"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>)</font> <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c+<a name="line-339"></a>                               <font color=Cyan>++</font> toContents d <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f+<a name="line-340"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-341"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-342"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-343"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="line-344"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents+<a name="line-345"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents+<a name="line-346"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents+<a name="line-347"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>)</font>+<a name="line-348"></a>        <font color=Cyan>}</font>+<a name="line-349"></a>+<a name="line-350"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d+<a name="line-351"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g <font color=Cyan>)</font> <font color=Red>=&gt;</font>+<a name="line-352"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-353"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>)</font>+<a name="line-354"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d+<a name="line-355"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g+<a name="line-356"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-357"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-358"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-359"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="line-360"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents+<a name="line-361"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents+<a name="line-362"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents+<a name="line-363"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents+<a name="line-364"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>)</font>+<a name="line-365"></a>        <font color=Cyan>}</font>+<a name="line-366"></a>+<a name="line-367"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d+<a name="line-368"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h <font color=Cyan>)</font> <font color=Red>=&gt;</font>+<a name="line-369"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-370"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>)</font>+<a name="line-371"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d+<a name="line-372"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h+<a name="line-373"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-374"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-375"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-376"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="line-377"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents+<a name="line-378"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents+<a name="line-379"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents+<a name="line-380"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents+<a name="line-381"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents+<a name="line-382"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>)</font>+<a name="line-383"></a>        <font color=Cyan>}</font>+<a name="line-384"></a>+<a name="line-385"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d+<a name="line-386"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h+<a name="line-387"></a>         <font color=Cyan>,</font> XmlContent i <font color=Cyan>)</font> <font color=Red>=&gt;</font>+<a name="line-388"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-389"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>)</font>+<a name="line-390"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d+<a name="line-391"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h+<a name="line-392"></a>          <font color=Cyan>++</font> toContents i+<a name="line-393"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-394"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-395"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-396"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="line-397"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents+<a name="line-398"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents+<a name="line-399"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents+<a name="line-400"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents+<a name="line-401"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents+<a name="line-402"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents+<a name="line-403"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>)</font>+<a name="line-404"></a>        <font color=Cyan>}</font>+<a name="line-405"></a>+<a name="line-406"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d+<a name="line-407"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h+<a name="line-408"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j <font color=Cyan>)</font> <font color=Red>=&gt;</font>+<a name="line-409"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-410"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>)</font>+<a name="line-411"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d+<a name="line-412"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h+<a name="line-413"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j+<a name="line-414"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-415"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-416"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-417"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="line-418"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents+<a name="line-419"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents+<a name="line-420"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents+<a name="line-421"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents+<a name="line-422"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents+<a name="line-423"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents+<a name="line-424"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents+<a name="line-425"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>)</font>+<a name="line-426"></a>        <font color=Cyan>}</font>+<a name="line-427"></a>+<a name="line-428"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d+<a name="line-429"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h+<a name="line-430"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k <font color=Cyan>)</font> <font color=Red>=&gt;</font>+<a name="line-431"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-432"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>)</font>+<a name="line-433"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d+<a name="line-434"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h+<a name="line-435"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k+<a name="line-436"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-437"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-438"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-439"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="line-440"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents+<a name="line-441"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents+<a name="line-442"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents+<a name="line-443"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents+<a name="line-444"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents+<a name="line-445"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents+<a name="line-446"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents+<a name="line-447"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents+<a name="line-448"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>)</font>+<a name="line-449"></a>        <font color=Cyan>}</font>+<a name="line-450"></a>+<a name="line-451"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d+<a name="line-452"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h+<a name="line-453"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l <font color=Cyan>)</font> <font color=Red>=&gt;</font>+<a name="line-454"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-455"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>)</font>+<a name="line-456"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d+<a name="line-457"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h+<a name="line-458"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l+<a name="line-459"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-460"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-461"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-462"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="line-463"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents+<a name="line-464"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents+<a name="line-465"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents+<a name="line-466"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents+<a name="line-467"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents+<a name="line-468"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents+<a name="line-469"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents+<a name="line-470"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents+<a name="line-471"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents+<a name="line-472"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>)</font>+<a name="line-473"></a>        <font color=Cyan>}</font>+<a name="line-474"></a>+<a name="line-475"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d+<a name="line-476"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h+<a name="line-477"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l+<a name="line-478"></a>         <font color=Cyan>,</font> XmlContent m <font color=Cyan>)</font> <font color=Red>=&gt;</font>+<a name="line-479"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-480"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>)</font>+<a name="line-481"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d+<a name="line-482"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h+<a name="line-483"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l+<a name="line-484"></a>          <font color=Cyan>++</font> toContents m+<a name="line-485"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-486"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-487"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-488"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="line-489"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents+<a name="line-490"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents+<a name="line-491"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents+<a name="line-492"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents+<a name="line-493"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents+<a name="line-494"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents+<a name="line-495"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents+<a name="line-496"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents+<a name="line-497"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents+<a name="line-498"></a>        <font color=Cyan>;</font> m <font color=Red>&lt;-</font> parseContents+<a name="line-499"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>)</font>+<a name="line-500"></a>        <font color=Cyan>}</font>+<a name="line-501"></a>+<a name="line-502"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d+<a name="line-503"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h+<a name="line-504"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l+<a name="line-505"></a>         <font color=Cyan>,</font> XmlContent m<font color=Cyan>,</font> XmlContent n <font color=Cyan>)</font> <font color=Red>=&gt;</font>+<a name="line-506"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-507"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>)</font>+<a name="line-508"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d+<a name="line-509"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h+<a name="line-510"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l+<a name="line-511"></a>          <font color=Cyan>++</font> toContents m <font color=Cyan>++</font> toContents n+<a name="line-512"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-513"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-514"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-515"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="line-516"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents+<a name="line-517"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents+<a name="line-518"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents+<a name="line-519"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents+<a name="line-520"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents+<a name="line-521"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents+<a name="line-522"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents+<a name="line-523"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents+<a name="line-524"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents+<a name="line-525"></a>        <font color=Cyan>;</font> m <font color=Red>&lt;-</font> parseContents+<a name="line-526"></a>        <font color=Cyan>;</font> n <font color=Red>&lt;-</font> parseContents+<a name="line-527"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>)</font>+<a name="line-528"></a>        <font color=Cyan>}</font>+<a name="line-529"></a>+<a name="line-530"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font> XmlContent a<font color=Cyan>,</font> XmlContent b<font color=Cyan>,</font> XmlContent c<font color=Cyan>,</font> XmlContent d+<a name="line-531"></a>         <font color=Cyan>,</font> XmlContent e<font color=Cyan>,</font> XmlContent f<font color=Cyan>,</font> XmlContent g<font color=Cyan>,</font> XmlContent h+<a name="line-532"></a>         <font color=Cyan>,</font> XmlContent i<font color=Cyan>,</font> XmlContent j<font color=Cyan>,</font> XmlContent k<font color=Cyan>,</font> XmlContent l+<a name="line-533"></a>         <font color=Cyan>,</font> XmlContent m<font color=Cyan>,</font> XmlContent n<font color=Cyan>,</font> XmlContent o <font color=Cyan>)</font> <font color=Red>=&gt;</font>+<a name="line-534"></a>         XmlContent <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>,</font>o<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-535"></a>    toContents <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>,</font>o<font color=Cyan>)</font>+<a name="line-536"></a>        <font color=Red>=</font> toContents a <font color=Cyan>++</font> toContents b <font color=Cyan>++</font> toContents c <font color=Cyan>++</font> toContents d+<a name="line-537"></a>          <font color=Cyan>++</font> toContents e <font color=Cyan>++</font> toContents f <font color=Cyan>++</font> toContents g <font color=Cyan>++</font> toContents h+<a name="line-538"></a>          <font color=Cyan>++</font> toContents i <font color=Cyan>++</font> toContents j <font color=Cyan>++</font> toContents k <font color=Cyan>++</font> toContents l+<a name="line-539"></a>          <font color=Cyan>++</font> toContents m <font color=Cyan>++</font> toContents n <font color=Cyan>++</font> toContents o+<a name="line-540"></a>    parseContents <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-541"></a>        <font color=Cyan>{</font> a <font color=Red>&lt;-</font> parseContents+<a name="line-542"></a>        <font color=Cyan>;</font> b <font color=Red>&lt;-</font> parseContents+<a name="line-543"></a>        <font color=Cyan>;</font> c <font color=Red>&lt;-</font> parseContents+<a name="line-544"></a>        <font color=Cyan>;</font> d <font color=Red>&lt;-</font> parseContents+<a name="line-545"></a>        <font color=Cyan>;</font> e <font color=Red>&lt;-</font> parseContents+<a name="line-546"></a>        <font color=Cyan>;</font> f <font color=Red>&lt;-</font> parseContents+<a name="line-547"></a>        <font color=Cyan>;</font> g <font color=Red>&lt;-</font> parseContents+<a name="line-548"></a>        <font color=Cyan>;</font> h <font color=Red>&lt;-</font> parseContents+<a name="line-549"></a>        <font color=Cyan>;</font> i <font color=Red>&lt;-</font> parseContents+<a name="line-550"></a>        <font color=Cyan>;</font> j <font color=Red>&lt;-</font> parseContents+<a name="line-551"></a>        <font color=Cyan>;</font> k <font color=Red>&lt;-</font> parseContents+<a name="line-552"></a>        <font color=Cyan>;</font> l <font color=Red>&lt;-</font> parseContents+<a name="line-553"></a>        <font color=Cyan>;</font> m <font color=Red>&lt;-</font> parseContents+<a name="line-554"></a>        <font color=Cyan>;</font> n <font color=Red>&lt;-</font> parseContents+<a name="line-555"></a>        <font color=Cyan>;</font> o <font color=Red>&lt;-</font> parseContents+<a name="line-556"></a>        <font color=Cyan>;</font> return <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>,</font>c<font color=Cyan>,</font>d<font color=Cyan>,</font>e<font color=Cyan>,</font>f<font color=Cyan>,</font>g<font color=Cyan>,</font>h<font color=Cyan>,</font>i<font color=Cyan>,</font>j<font color=Cyan>,</font>k<font color=Cyan>,</font>l<font color=Cyan>,</font>m<font color=Cyan>,</font>n<font color=Cyan>,</font>o<font color=Cyan>)</font>+<a name="line-557"></a>        <font color=Cyan>}</font>+<a name="line-558"></a>+<a name="line-559"></a>+<a name="line-560"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-561"></a><font color=Blue>-- Useful auxiliaries for "fromAttributes"</font>+<a name="line-562"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-563"></a>+<a name="line-564"></a><a name="Defaultable"></a><font color=Blue>-- | If an attribute is defaultable, then it either takes the default</font>+<a name="line-565"></a><a name="Defaultable"></a><font color=Blue>--   value (which is omitted from the output), or a non-default value</font>+<a name="line-566"></a><a name="Defaultable"></a><font color=Blue>--   (which obviously must be printed).</font>+<a name="line-567"></a><a name="Defaultable"></a><font color=Green><u>data</u></font> Defaultable a  <font color=Red>=</font> Default a    <font color=Red>|</font> NonDefault a    <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="line-568"></a>+<a name="line-569"></a><a name="searchMaybe"></a><font color=Blue>searchMaybe</font> <font color=Red>::</font> <font color=Cyan>(</font>a <font color=Red>-&gt;</font> Maybe b<font color=Cyan>)</font> <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> Maybe b+<a name="line-570"></a><font color=Blue>searchMaybe</font> <font color=Green><u>_</u></font> [] <font color=Red>=</font> Nothing+<a name="line-571"></a><font color=Blue>searchMaybe</font> f <font color=Cyan>(</font>x<font color=Red><b>:</b></font>xs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-572"></a>    <font color=Green><u>let</u></font> fx <font color=Red>=</font> f x <font color=Green><u>in</u></font>+<a name="line-573"></a>    <font color=Green><u>case</u></font> fx <font color=Green><u>of</u></font>+<a name="line-574"></a>      Nothing  <font color=Red>-&gt;</font> searchMaybe f xs+<a name="line-575"></a>      <font color=Cyan>(</font>Just <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>-&gt;</font> fx+<a name="line-576"></a>+<a name="line-577"></a><a name="maybeToAttr"></a><font color=Blue>maybeToAttr</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>Maybe Attribute<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Maybe a+<a name="line-578"></a>               <font color=Red>-&gt;</font> Maybe Attribute+<a name="line-579"></a><font color=Blue>maybeToAttr</font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> Nothing  <font color=Red>=</font> Nothing+<a name="line-580"></a><font color=Blue>maybeToAttr</font> to n <font color=Cyan>(</font>Just v<font color=Cyan>)</font> <font color=Red>=</font> to n v+<a name="line-581"></a>+<a name="line-582"></a><a name="defaultToAttr"></a><font color=Blue>defaultToAttr</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>a<font color=Red>-&gt;</font>Maybe Attribute<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Defaultable a+<a name="line-583"></a>                 <font color=Red>-&gt;</font> Maybe Attribute+<a name="line-584"></a><font color=Blue>defaultToAttr</font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Cyan>(</font>Default <font color=Green><u>_</u></font><font color=Cyan>)</font>  <font color=Red>=</font> Nothing+<a name="line-585"></a><font color=Blue>defaultToAttr</font> to n <font color=Cyan>(</font>NonDefault v<font color=Cyan>)</font> <font color=Red>=</font> to n v+<a name="line-586"></a>+<a name="line-587"></a><a name="definiteA"></a><font color=Blue>definiteA</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String+<a name="line-588"></a>             <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> a+<a name="line-589"></a><font color=Blue>definiteA</font> from tag at <font color=Green><u>as</u></font> <font color=Red>=</font>+<a name="line-590"></a>    <font color=Green><u>case</u></font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font> <font color=Green><u>of</u></font>+<a name="line-591"></a>      Nothing  <font color=Red>-&gt;</font> error <font color=Cyan>(</font><font color=Magenta>"missing attribute "</font><font color=Cyan>++</font>at<font color=Cyan>++</font><font color=Magenta>" in tag &lt;"</font><font color=Cyan>++</font>tag<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>)</font>+<a name="line-592"></a>      <font color=Cyan>(</font>Just a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a+<a name="line-593"></a>+<a name="line-594"></a><a name="defaultA"></a><font color=Blue>defaultA</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> a <font color=Red>-&gt;</font> String+<a name="line-595"></a>            <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> Defaultable a+<a name="line-596"></a><font color=Blue>defaultA</font> from def at <font color=Green><u>as</u></font> <font color=Red>=</font>+<a name="line-597"></a>    <font color=Green><u>case</u></font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font> <font color=Green><u>of</u></font>+<a name="line-598"></a>      Nothing  <font color=Red>-&gt;</font> Default def+<a name="line-599"></a>      <font color=Cyan>(</font>Just a<font color=Cyan>)</font> <font color=Red>-&gt;</font> NonDefault a+<a name="line-600"></a>+<a name="line-601"></a><a name="possibleA"></a><font color=Blue>possibleA</font> <font color=Red>::</font> <font color=Cyan>(</font>String<font color=Red>-&gt;</font>Attribute<font color=Red>-&gt;</font>Maybe a<font color=Cyan>)</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>Attribute<font color=Red>]</font> <font color=Red>-&gt;</font> Maybe a+<a name="line-602"></a><font color=Blue>possibleA</font> from at <font color=Green><u>as</u></font> <font color=Red>=</font> searchMaybe <font color=Cyan>(</font>from at<font color=Cyan>)</font> <font color=Green><u>as</u></font>+<a name="line-603"></a>+<a name="line-604"></a><a name="fromAttrToStr"></a><font color=Blue>fromAttrToStr</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> Attribute <font color=Red>-&gt;</font> Maybe String+<a name="line-605"></a><font color=Blue>fromAttrToStr</font> n <font color=Cyan>(</font>n0<font color=Cyan>,</font>v<font color=Cyan>)</font>+<a name="line-606"></a>        <font color=Red>|</font> n <font color=Cyan>==</font> n0   <font color=Red>=</font> Just <font color=Cyan>(</font>attr2str v<font color=Cyan>)</font>+<a name="line-607"></a>        <font color=Red>|</font> otherwise <font color=Red>=</font> Nothing+<a name="line-608"></a>+<a name="line-609"></a><a name="toAttrFrStr"></a><font color=Blue>toAttrFrStr</font>   <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> Maybe Attribute+<a name="line-610"></a><font color=Blue>toAttrFrStr</font> n v <font color=Red>=</font> Just <font color=Cyan>(</font>n<font color=Cyan>,</font> str2attr v<font color=Cyan>)</font>+<a name="line-611"></a>+<a name="line-612"></a><a name="str2attr"></a><font color=Blue>str2attr</font> <font color=Red>::</font> String <font color=Red>-&gt;</font> AttValue+<a name="line-613"></a><font color=Blue>str2attr</font> s <font color=Red>=</font>+<a name="line-614"></a>    <font color=Green><u>let</u></font> f t <font color=Red>=</font>+<a name="line-615"></a>          <font color=Green><u>let</u></font> <font color=Cyan>(</font>l<font color=Cyan>,</font>r<font color=Cyan>)</font> <font color=Red>=</font> span <font color=Cyan>(</font><font color=Red>\</font>c<font color=Red>-&gt;</font> not <font color=Cyan>(</font>elem c <font color=Magenta>"\"&amp;&lt;&gt;'"</font><font color=Cyan>)</font><font color=Cyan>)</font> t+<a name="line-616"></a>          <font color=Green><u>in</u></font> <font color=Green><u>if</u></font> null r <font color=Green><u>then</u></font> <font color=Red>[</font>Left l<font color=Red>]</font>+<a name="line-617"></a>             <font color=Green><u>else</u></font> Left l<font color=Red><b>:</b></font> Right <font color=Cyan>(</font>g <font color=Cyan>(</font>head r<font color=Cyan>)</font><font color=Cyan>)</font><font color=Red><b>:</b></font> f <font color=Cyan>(</font>tail r<font color=Cyan>)</font>+<a name="line-618"></a>        g <font color=Magenta>'"'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"quot"</font>+<a name="line-619"></a>        g <font color=Magenta>'&amp;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"amp"</font>+<a name="line-620"></a>        g <font color=Magenta>'&lt;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"lt"</font>+<a name="line-621"></a>        g <font color=Magenta>'&gt;'</font>  <font color=Red>=</font> RefEntity <font color=Magenta>"gt"</font>+<a name="line-622"></a>        g <font color=Magenta>'\''</font> <font color=Red>=</font> RefEntity <font color=Magenta>"apos"</font>+<a name="line-623"></a>    <font color=Green><u>in</u></font> AttValue <font color=Cyan>(</font>f s<font color=Cyan>)</font>+<a name="line-624"></a>+<a name="line-625"></a><a name="attr2str"></a><font color=Blue>attr2str</font> <font color=Red>::</font> AttValue <font color=Red>-&gt;</font> String          <font color=Blue>-- really needs symbol table</font>+<a name="line-626"></a><font color=Blue>attr2str</font> <font color=Cyan>(</font>AttValue xs<font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-627"></a>    <font color=Green><u>let</u></font> f <font color=Cyan>(</font>Left s<font color=Cyan>)</font> <font color=Red>=</font> s+<a name="line-628"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefChar i<font color=Cyan>)</font><font color=Cyan>)</font>        <font color=Red>=</font> <font color=Red>[</font>chr i<font color=Red>]</font>+<a name="line-629"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"quot"</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"\""</font>+<a name="line-630"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"amp"</font><font color=Cyan>)</font><font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"&amp;"</font>+<a name="line-631"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"lt"</font><font color=Cyan>)</font><font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&lt;"</font>+<a name="line-632"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"gt"</font><font color=Cyan>)</font><font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&gt;"</font>+<a name="line-633"></a>        f <font color=Cyan>(</font>Right <font color=Cyan>(</font>RefEntity <font color=Magenta>"apos"</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"'"</font>+<a name="line-634"></a>        f <font color=Cyan>(</font>Right <font color=Green><u>_</u></font><font color=Cyan>)</font>                  <font color=Red>=</font> <font color=Magenta>"*"</font>  <font color=Blue>-- Ooops, ST needed here.</font>+<a name="line-635"></a>    <font color=Green><u>in</u></font> concatMap f xs+<a name="line-636"></a>+<a name="line-637"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-638"></a><font color=Blue>--  New content-model types</font>+<a name="line-639"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-640"></a>+<a name="line-641"></a><font color=Blue>{-+<a name="line-642"></a>data OneOf2 a b+<a name="line-643"></a>data OneOf3 a b c+<a name="line-644"></a>data OneOf4 a b c d+<a name="line-645"></a>    ... etc are now defined (with instances) in module OneOfN.+<a name="line-646"></a>-}</font>+<a name="line-647"></a>+<a name="line-648"></a><a name="ANYContent"></a><font color=Blue>-- | A type corresponding to XML's ANY contentspec.</font>+<a name="line-649"></a><a name="ANYContent"></a><font color=Blue>--   It is either a list of unconverted xml 'Content'</font>+<a name="line-650"></a><a name="ANYContent"></a><font color=Blue>--   or some 'XmlContent'-able value.</font>+<a name="line-651"></a><a name="ANYContent"></a><font color=Blue>--</font>+<a name="line-652"></a><a name="ANYContent"></a><font color=Blue>-- Parsing functions (e.g. 'parseContents') will always produce 'UnConverted'.</font>+<a name="line-653"></a><a name="ANYContent"></a><font color=Blue>-- Note: The Show instance for 'UnConverted' uses 'verbatim'.</font>+<a name="line-654"></a><a name="ANYContent"></a><font color=Green><u>data</u></font> ANYContent <font color=Red>=</font> <font color=Green><u>forall</u></font> a <font color=Cyan>.</font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>,</font> Show a<font color=Cyan>)</font> <font color=Red>=&gt;</font> ANYContent a+<a name="line-655"></a>                <font color=Red>|</font> UnConverted <font color=Red>[</font>Content Posn<font color=Red>]</font>+<a name="line-656"></a>+<a name="line-657"></a><font color=Green><u>instance</u></font> Show ANYContent <font color=Green><u>where</u></font>+<a name="line-658"></a>    show <font color=Cyan>(</font>UnConverted c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"UnConverted "</font> <font color=Cyan>++</font> <font color=Cyan>(</font>show <font color=Cyan>$</font> map verbatim c<font color=Cyan>)</font>+<a name="line-659"></a>    show <font color=Cyan>(</font>ANYContent a<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"ANYContent "</font> <font color=Cyan>++</font> <font color=Cyan>(</font>show a<font color=Cyan>)</font>+<a name="line-660"></a>+<a name="line-661"></a><font color=Green><u>instance</u></font> Eq ANYContent <font color=Green><u>where</u></font>+<a name="line-662"></a>    a <font color=Cyan>==</font> b <font color=Red>=</font> show a <font color=Cyan>==</font> show b+<a name="line-663"></a>+<a name="line-664"></a><a name="List1"></a><font color=Blue>-- | The List1 type represents lists with at least one element.</font>+<a name="line-665"></a><a name="List1"></a><font color=Blue>--   It is required for DTD content models that use + as a modifier.</font>+<a name="line-666"></a><a name="List1"></a><font color=Green><u>data</u></font> List1 a <font color=Red>=</font> NonEmpty <font color=Red>[</font>a<font color=Red>]</font>  <font color=Green><u>deriving</u></font> <font color=Cyan>(</font>Eq<font color=Cyan>,</font> Show<font color=Cyan>)</font>+<a name="line-667"></a>+<a name="line-668"></a>+<a name="line-669"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-670"></a><font color=Blue>--  Instances for new content-model types</font>+<a name="line-671"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-672"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>HTypeable a<font color=Cyan>)</font> <font color=Red>=&gt;</font> HTypeable <font color=Cyan>(</font>List1 a<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-673"></a>    toHType m  <font color=Red>=</font> Defined <font color=Magenta>"List1"</font> <font color=Red>[</font>hx<font color=Red>]</font>+<a name="line-674"></a>                         <font color=Red>[</font>Constr <font color=Magenta>"NonEmpty"</font> <font color=Red>[</font>hx<font color=Red>]</font> <font color=Red>[</font>List hx<font color=Red>]</font> <font color=Blue>{-Nothing-}</font><font color=Red>]</font>+<a name="line-675"></a>               <font color=Green><u>where</u></font> <font color=Cyan>(</font>NonEmpty x<font color=Cyan>)</font> <font color=Red>=</font> m+<a name="line-676"></a>                     hx <font color=Red>=</font> toHType x+<a name="line-677"></a><font color=Green><u>instance</u></font> <font color=Cyan>(</font>XmlContent a<font color=Cyan>)</font> <font color=Red>=&gt;</font> XmlContent <font color=Cyan>(</font>List1 a<font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-678"></a>    toContents <font color=Cyan>(</font>NonEmpty xs<font color=Cyan>)</font> <font color=Red>=</font> concatMap toContents xs+<a name="line-679"></a>    parseContents <font color=Red>=</font> fmap NonEmpty <font color=Cyan>$</font> many1 parseContents+<a name="line-680"></a>+<a name="line-681"></a><font color=Green><u>instance</u></font> HTypeable ANYContent <font color=Green><u>where</u></font>+<a name="line-682"></a>    toHType <font color=Green><u>_</u></font>      <font color=Red>=</font> Prim <font color=Magenta>"ANYContent"</font> <font color=Magenta>"ANY"</font>+<a name="line-683"></a><font color=Green><u>instance</u></font> XmlContent ANYContent <font color=Green><u>where</u></font>+<a name="line-684"></a>    toContents <font color=Cyan>(</font>ANYContent a<font color=Cyan>)</font>  <font color=Red>=</font> toContents a+<a name="line-685"></a>    toContents <font color=Cyan>(</font>UnConverted s<font color=Cyan>)</font> <font color=Red>=</font> map <font color=Cyan>(</font>fmap <font color=Cyan>(</font>const ()<font color=Cyan>)</font><font color=Cyan>)</font> s+<a name="line-686"></a>    parseContents <font color=Red>=</font> P <font color=Cyan>(</font><font color=Red>\</font>cs <font color=Red>-&gt;</font> <font color=Cyan>(</font>Right <font color=Cyan>(</font>UnConverted cs<font color=Cyan>)</font><font color=Cyan>,</font> []<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-687"></a>+<a name="line-688"></a><font color=Blue>------------------------------------------------------------------------</font>+<a name="line-689"></a><font color=Blue>--</font>+<a name="line-690"></a><font color=Blue>------------------------------------------------------------------------</font>+</pre>+</body>+</html>
docs/changelog.html view
@@ -27,6 +27,8 @@      It also fixes a couple of bugs in DtdToHaskell, when dealing with      larger datatypes (more than 26 components) and duplicate ATTLIST      specifications.+<li> Version 1.19.6 fixes some tag-name bugs when converting datatypes+     generated by DtdToHaskell back into an XML file value. </ul>  <h3>Changes in 1.18</h3>
docs/index.html view
@@ -132,11 +132,11 @@ <center><h3><a name="download">Downloads</a></h3></center> <p> <b>Development versions:</b><br>-HaXml-1.19.5, release date 2009.02.02<br>+HaXml-1.19.6, release date 2009.02.04<br> From <a href="http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HaXml">Hackage</a><br> By HTTP:-<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.5.tar.gz">.tar.gz</a>,-<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.5.zip">.zip</a>.+<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.6.tar.gz">.tar.gz</a>,+<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.6.zip">.zip</a>. <br> By FTP:  <a href="ftp://ftp.cs.york.ac.uk/pub/haskell/HaXml/">@@ -203,6 +203,8 @@ <center><h3><a name="news">Recent news</a></h3></center>  <p>+Version 1.19.6 has some bugfixes to XmlContent, to ensure that types+created via DtdToHaskell get converted back to XML correctly.<br> Version 1.19.5 has some bugfixes to DtdToHaskell, to cope with especially large datatypes.<br> Version 1.19.4 has some minor bugfixes to increase compatibility with the
src/Makefile view
@@ -1,5 +1,5 @@ SOFTWARE = HaXml-VERSION = 1.19.5+VERSION = 1.19.6  LIBSRCS = \ 	Text/XML/HaXml.hs Text/XML/HaXml/Combinators.hs Text/XML/HaXml/Lex.hs \@@ -10,7 +10,10 @@ 	Text/XML/HaXml/OneOfN.hs \ 	Text/XML/HaXml/ParseLazy.hs \ 	Text/XML/HaXml/ByteStringPP.hs \-	Text/XML/HaXml/TypeMapping.hs  Text/XML/HaXml/XmlContent.hs \+	Text/XML/HaXml/TypeMapping.hs \+	Text/XML/HaXml/XmlContent.hs \+	Text/XML/HaXml/XmlContent/Parser.hs \+	Text/XML/HaXml/XmlContent/Haskell.hs \ 	Text/XML/HaXml/Verbatim.hs Text/XML/HaXml/Escape.hs \ 	Text/XML/HaXml/SAX.hs \ 	Text/XML/HaXml/ShowXmlLazy.hs \
src/Text/XML/HaXml/XmlContent.hs view
@@ -1,132 +1,52 @@-{-# LANGUAGE ExistentialQuantification #-}- -- | The class 'XmlContent' is a kind of replacement for Read and Show: --   it provides conversions between a generic XML tree representation --   and your own more specialised typeful Haskell data trees. --+--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell+--   to generate both the Haskell types and the corresponding instances.+--    --   If you are starting with a set of Haskell datatypes, use DrIFT to --   derive instances of this class for you: --       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT---   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell---   to generate both the Haskell types and the corresponding instances.------   This unified class interface replaces two previous (somewhat similar)---   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have---   separate classes depending on how you originally defined your datatypes.----   The methods 'toContents' and 'parseContents' convert a value to and from---   a generic internal representation of an XML document /without/ a DTD.---   The functions 'toXml' and 'fromXml' convert a value to and from a generic---   internal representation of an XML document /including/ a DTD.---   The functions 'readXml' and 'showXml' convert to and from Strings.---   The functions 'fReadXml' and 'fWriteXml' do the conversion to and from---   the given filenames.---   The functions 'hGetXml' and 'hPutXml' do the conversion to and from---   the given file handles.---   (See the type signatures.)---+--   and _do_not_ use the current module, but rather+--   Text.XML.HaXml.XmlContent.Haskell, for the correct matching+--   instances for standard Haskell datatypes.  module Text.XML.HaXml.XmlContent-  ( -- * Re-export the relevant set of generic XML document type definitions-    Document(..)-  , Element(..)-  , ElemTag(..)-  , Content(..)-  , Attribute()-  , AttValue(..)-  , Prolog(..)-  , Reference(..)-  -- * The enabling classes, that define parsing\/unparsing between Haskell-  --   datatypes and a generic XML representation.-  , XmlContent(..)-  , XmlAttributes(..)-  , XmlAttrType(..)-  -- ** Auxiliaries for writing parsers in the XmlContent class-  , module Text.ParserCombinators.Poly-  , XMLParser-  , content, posnElement, element, interior, inElement, text, attributes-  , posnElementWith, elementWith, inElementWith-  , choice, definite -- ???-  -- ** Auxiliaries for generating in the XmlContent class-  , mkElem, mkElemC, mkAttr-  , toText, toCData-  -- ** Auxiliaries for the attribute-related classes-  , maybeToAttr, defaultToAttr-  , definiteA, defaultA, possibleA, fromAttrToStr, toAttrFrStr-  , Defaultable(..)-  , str2attr, attr2str, attval-  , catMaybes   -- re-exported from Maybe+  (+  -- * Re-export everything from Text.XML.HaXml.XmlContent.Parser.+    module Text.XML.HaXml.XmlContent.Parser+  -- * Contains instances of the XmlContent classes,+  --   for the basic Haskell datatypes list and Maybe,+  --   intended for use with DtdToHaskell-generated datatypes.+  --   See the alternative instances in Text.XML.HaXml.XmlContent.Haskell+  --   if your datatypes originate in Haskell instead.+--  , module Text.XML.HaXml.XmlContent+   -- * Whole-document conversion functions   , toXml, fromXml   , readXml, showXml, fpsShowXml   , fReadXml, fWriteXml, fpsWriteXml   , hGetXml,  hPutXml, fpsHPutXml-  -- * Explicit representation of Haskell datatype information-  --   (for conversion to a DTD)-  , module Text.XML.HaXml.TypeMapping-  -- * Types useful for some content models-  , List1(..)-  , ANYContent(..)   ) where  import IO-import Maybe (catMaybes)-import Char  (chr, isSpace)-import List  (isPrefixOf, isSuffixOf)+import qualified Text.XML.HaXml.ByteStringPP as FPS (document)+import qualified Data.ByteString.Lazy.Char8 as FPS  import Text.PrettyPrint.HughesPJ (render)-import qualified Text.XML.HaXml.Pretty as PP+import Text.ParserCombinators.Poly  import Text.XML.HaXml.Types import Text.XML.HaXml.TypeMapping import Text.XML.HaXml.Posn     (Posn, posInNewCxt) import Text.XML.HaXml.Pretty   (document) import Text.XML.HaXml.Parse    (xmlParse)-import Text.XML.HaXml.Verbatim (Verbatim(verbatim))-import qualified Text.XML.HaXml.ByteStringPP as FPS (document)-import qualified Data.ByteString.Lazy.Char8 as FPS--import Text.ParserCombinators.Poly----  #define DEBUG--#if defined(DEBUG)-import Debug.Trace(trace)-debug :: a -> String -> a-v `debug` s = trace s v-#else-debug :: t -> t1 -> t-v `debug` _ = v-#endif+import Text.XML.HaXml.XmlContent.Parser   --------------------------------------------------------------------------- | Read a single attribute called "value".-attval :: (Read a) => Element i -> a-attval (Elem _ [("value",v@(AttValue _))] []) = read (show v) --- | Generate a single attribute.-mkAttr :: String -> String -> Attribute-mkAttr n v = (n, AttValue [Left v])---- | Generate an element with no attributes, named for its HType.-mkElem :: XmlContent a => a -> [Content ()] -> Content ()-mkElem x cs  = CElem (Elem (showHType (toHType x) "") [] cs) ()---- | Generate an element with no attributes, named directly.-mkElemC :: String -> [Content ()] -> Content ()-mkElemC x cs = CElem (Elem x [] cs) ()---- | Turn a simple string into XML text.-toText :: String -> [Content ()]-toText s = [CString False s ()]---- | Turn a string into an XML CDATA section.---   (i.e. special characters like '&' are preserved without interpretation.)-toCData :: String -> [Content ()]-toCData s = [CString True s ()]--------------------------------------------------------------------------         -- probably want to write DTD separately from value, and have         -- easy ways to combine DTD + value into a document, or write         -- them to separate files.@@ -189,20 +109,17 @@     Document (Prolog (Just (XMLDecl "1.0" Nothing Nothing))                      [] (if dtd then Just (toDTD ht) else Nothing) [])              emptyST-             ( case (ht, toContents value) of-                 (Tuple _, cs)       -> Elem (showHType ht "") [] cs-                 (Defined _ _ _, cs) -> Elem (showHType ht "-XML") [] cs-                 (_, [CElem e ()])   -> e )+             ( case toContents value of+                 []             -> Elem "empty" [] []+                 [CElem e ()]   -> e+                 (CElem e ():_) -> error "too many XML elements in document" )              []  -- | Read a Haskell value from an XML document, ignoring the DTD and --   using the Haskell result type to determine how to parse it. fromXml :: XmlContent a => Document Posn -> Either String a-fromXml (Document _ _ e@(Elem n _ cs) _)-  | "tuple" `isPrefixOf` n = fst (runParser parseContents cs)-  | "-XML"  `isSuffixOf` n = fst (runParser parseContents cs)-  | otherwise = fst (runParser parseContents-                               [CElem e (posInNewCxt "document" Nothing)])+fromXml (Document _ _ e@(Elem n _ cs) _) =+  fst (runParser parseContents [CElem e (posInNewCxt "document" Nothing)])   -- | Read a fully-typed XML document from a file handle.@@ -225,198 +142,16 @@ fpsHPutXml h dtd x = do     (FPS.hPut h . FPS.document . toXml dtd) x ------------------------------------------------------------------------- --- | We need a parsing monad for reading generic XML Content into specific---   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly---   ones, where the input token type is fixed as XML Content.-type XMLParser a = Parser (Content Posn) a-- --------------------------------------------------------------------------- Some useful parsing combinators----------------------------------------------------------------------------- | The most primitive combinator for XMLParser - get one content item.-content :: String -> XMLParser (Content Posn)-content word = next `adjustErr` (++" when expecting "++word)---- | Get the next content element, checking that it has one of the required---   tags, using the given matching function.---   (Skips over comments and whitespace, rejects text and refs.---    Also returns position of element.)-posnElementWith :: (String->String->Bool) -> [String]-                   -> XMLParser (Posn, Element Posn)-posnElementWith match tags = do-    { c <- content (formatted tags)-    ; case c of-          CElem e@(Elem t _ _) pos-              | any (match t) tags -> return (pos, e)-              | otherwise          -> fail ("Found a <"++t++">, but expected "-                                           ++formatted tags++"\nat "++show pos)-          CString b s pos-              | not b && all isSpace s -> posnElementWith match tags-                                                        -- ignore blank space-              | otherwise -> fail ("Found text content, but expected "-                                  ++formatted tags++"\ntext is: "++s-                                  ++"\nat "++show pos)-          CRef r pos -> fail ("Found reference, but expected "-                             ++formatted tags++"\nreference is: "++verbatim r-                             ++"\nat "++show pos)-          CMisc _ _ -> posnElementWith match tags  -- skip comments, PIs, etc.-    }-  where-    formatted [t]  = "a <"++t++">"-    formatted tgs = "one of"++ concatMap (\t->" <"++t++">") tgs---- | A specialisation of @posnElementWith (==)@.-posnElement :: [String] -> XMLParser (Posn, Element Posn)-posnElement = posnElementWith (==)---- | Get the next content element, checking that it has one of the required---   tags.  (Skips over comments and whitespace, rejects text and refs.)-element :: [String] -> XMLParser (Element Posn)-element tags = fmap snd (posnElement tags)-                                `debug` ("Element: "++unwords tags++"\n")---- | Like element, only permits a more flexible match against the tagname.-elementWith :: (String->String->Bool) -> [String] -> XMLParser (Element Posn)-elementWith match tags = fmap snd (posnElementWith match tags)-                                `debug` ("Element: "++unwords tags++"\n")---- | Run an XMLParser on the contents of the given element (i.e. not on the---   current monadic content sequence), checking that the contents are---   exhausted, before returning the calculated value within the current---   parser context.-interior :: Element Posn -> XMLParser a -> XMLParser a-interior (Elem e _ cs) p =-    case runParser p cs of-        (Left msg, _) -> fail msg-        (Right x, []) -> return x-        (Right x, ds@(d:_))-            | all onlyMisc ds -> return x-            | otherwise       -> fail ("Too many elements inside <"++e++"> at\n"-                                      ++show (info d)++"\n"-                                      ++"Found excess: "++verbatim d)-  where onlyMisc (CMisc _ _) = True-        onlyMisc (CString False s _) | all isSpace s = True-        onlyMisc _ = False---- | A combination of element + interior.-inElement :: String -> XMLParser a -> XMLParser a-inElement tag p = do { e <- element [tag]; commit (interior e p) }---- | A combination of elementWith + interior.-inElementWith :: (String->String->Bool) -> String -> XMLParser a -> XMLParser a-inElementWith match tag p = do { e <- elementWith match [tag]-                               ; commit (interior e p) }---- | Do some parsing of the attributes of the given element-attributes :: XmlAttributes a => Element Posn -> XMLParser a-attributes (Elem _ as _) = return (fromAttrs as)---- | 'text' is a counterpart to 'element', parsing text content if it---   exists.  Adjacent text and references are coalesced.-text :: XMLParser String-text = text' []-  where text' acc =-          do { c <- content "plain text"-             ; case c of-                 CString _ s _        -> text' (s:acc)-                 CRef (RefChar s) _   -> text' (("&#"++show s++";") :acc)-                 CRef (RefEntity s) _ -> text' (('&':s++";"):acc)-                 CMisc _ _            -> text' acc-                 CElem _ _         -> do { reparse [c] -- put it back!-                                         ; if null acc then fail "empty string"-                                           else return (concat (reverse acc))-                                         }-             }-          `onFail` ( if null acc then fail "empty string"-                     else return (concat (reverse acc)) )----- | 'choice f p' means if parseContents succeeds, apply f to the result,---   otherwise use the continuation parser.-choice :: XmlContent a => (a -> b) -> XMLParser b -> XMLParser b-choice cons (P other) =-    P (\cs-> case runParser parseContents cs of-                 (Left _, _)  -> other cs-                 (Right x, cs') -> (Right (cons x), cs'))----choice cons other = fmap cons parseContents `onFail` other---- | not sure this is needed now.   'definite p' previously ensured that---   an element was definitely present.  Now I think the monad might take---   care of that for us.-definite :: XmlContent a => XMLParser a -> String -> String -> XMLParser a-definite p inner tag = P (\cs-> case runParser p cs of-                                   (Left _, cs') -> (Left (False,msg'), cs')-                                   (Right x, cs')  -> (Right x,   cs'))-  where msg' = "content error: expected "++inner++" inside <"++tag-               ++"> element\n"------------------------------------------------------------------------------ | The @XmlContent@ class promises that an XML Content element can be---   converted to and from a Haskell value.-class HTypeable a => XmlContent a where-    -- | Convert from XML to Haskell-    parseContents :: XMLParser a-    -- | Convert from Haskell to XML-    toContents    :: a -> [Content ()]--    -- | Dummy functions (for most types): used /only/ in the Char instance-    --   for coercing lists of Char into String.-    xToChar       :: a -> Char-    xFromChar     :: Char -> a-    xToChar        = error "HaXml.XmlContent.xToChar used in error"-    xFromChar      = error "HaXml.XmlContent.xFromChar used in error"---- | The @XmlAttributes@ class promises that a list of XML tag attributes---   can be converted to and from a Haskell value.-class XmlAttributes a where-    fromAttrs :: [Attribute] -> a-    toAttrs   :: a -> [Attribute]--- | The @XmlAttrType@ class promises that an attribute taking an XML---   enumerated type can be converted to and from a Haskell value.-class XmlAttrType a where-    fromAttrToTyp :: String -> Attribute -> Maybe a-    toAttrFrTyp   :: String -> a -> Maybe Attribute--------------------------------------------------------------------------- -- Instances for all the standard basic datatypes.--- These are for Haskell datatypes being derived to go to XML.--- DtdToHaskell does not use these instances.+-- DtdToHaskell uses only a small number of standard datatypes. ------------------------------------------------------------------------ -instance XmlContent Bool where-    toContents b   = [CElem (Elem "bool" [mkAttr "value" (show b)] []) ()]-    parseContents = do { e <- element ["bool"] ; return (attval e) }--instance XmlContent Int where-    toContents i   = [CElem (Elem "int" [mkAttr "value" (show i)] []) ()]-    parseContents = do { e <- element ["int"] ; return (attval e) }--instance XmlContent Integer where-    toContents i   = [CElem (Elem "integer" [mkAttr "value" (show i)] []) ()]-    parseContents = do { e <- element ["integer"] ; return (attval e) }--instance XmlContent Float where-    toContents i   = [CElem (Elem "float" [mkAttr "value" (show i)] []) ()]-    parseContents = do { e <- element ["float"] ; return (attval e) }--instance XmlContent Double where-    toContents i   = [CElem (Elem "double" [mkAttr "value" (show i)] []) ()]-    parseContents = do { e <- element ["double"] ; return (attval e) }- instance XmlContent Char where     -- NOT in a string-    toContents c   = [CElem (Elem "char" [mkAttr "value" [c]] []) ()]-    parseContents = do { (Elem _ [("value",(AttValue [Left [c]]))] [])-                             <- element ["char"]-                       ; return c-                       }+    toContents c  = error "Text.XML.HaXml.XmlContent.toContents used on a Haskell Char"+    parseContents = fail "Text.XML.HaXml.XmlContent.parseContents used on a Haskell Char "     -- Only defined for Char and no other types:     xToChar   = id     xFromChar = id@@ -424,465 +159,18 @@ instance XmlContent a => XmlContent [a] where     toContents xs  = case toHType x of                        (Prim "Char" _) ->-                            [mkElem "string" [CString True (map xToChar xs) ()]]-                       _ -> [mkElem xs (concatMap toContents xs)]+                            [CString True (map xToChar xs) ()]+                       _ -> concatMap toContents xs                    where   (x:_) = xs-    parseContents = P (\x ->-        case x of-            (CString _ s _:cs)-                   -> (Right (map xFromChar s), cs)-            (CElem (Elem "string" [] [CString _ s _]) _:cs)-                   -> (Right (map xFromChar s), cs)-            (CElem (Elem e [] xs) _:cs) | "list" `isPrefixOf` e-                   -> scanElements xs-                   where-                  -- scanElements :: [Content] -> (Either String [a],[Content])-                     scanElements [] = (Right [], cs)-                     scanElements es =-                        case runParser parseContents es of-                            (Left msg, es') -> (Left (False,msg), es')-                            (Right y, es') ->-                                case scanElements es' of-                                    (Left msg, ds) -> (Left msg, ds)-                                    (Right ys, ds) -> (Right (y:ys), ds)-            (CElem (Elem e _ _) pos: cs)-                   -> (Left (False-                            ,"Expected a <list-...>, but found a <"++e++"> at\n"-                            ++ show pos), cs)-            (CRef r pos: cs)-                   -> (Left (False-                            ,"Expected a <list-...>, but found a ref "-                            ++verbatim r++" at\n"++ show pos), cs)-            (_:cs) -> ((\ (P p)-> p) parseContents) cs  -- skip comments etc.-            []     -> (Left (False-                            ,"Ran out of input XML whilst secondary parsing")-                      , [])-        )--instance XmlContent () where-    toContents ()  = [CElem (Elem "unit" [] []) ()]-    parseContents = do { element ["unit"]; return () }--instance (XmlContent a, XmlContent b) => XmlContent (a,b) where-    toContents (a,b) = toContents a ++ toContents b-    parseContents    = do-        { a <- parseContents-        ; b <- parseContents-        ; return (a,b)-        }--instance (XmlContent a, XmlContent b, XmlContent c) => XmlContent (a,b,c) where-    toContents (a,b,c) = toContents a ++ toContents b ++ toContents c-    parseContents = do-        { a <- parseContents-        ; b <- parseContents-        ; c <- parseContents-        ; return (a,b,c)-        }--instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d) =>-         XmlContent (a,b,c,d) where-    toContents (a,b,c,d) = toContents a ++ toContents b ++ toContents c-                           ++ toContents d-    parseContents = do-        { a <- parseContents-        ; b <- parseContents-        ; c <- parseContents-        ; d <- parseContents-        ; return (a,b,c,d)-        }--instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d-         , XmlContent e ) =>-         XmlContent (a,b,c,d,e) where-    toContents (a,b,c,d,e) = toContents a ++ toContents b ++ toContents c-                             ++ toContents d ++ toContents e-    parseContents = do-        { a <- parseContents-        ; b <- parseContents-        ; c <- parseContents-        ; d <- parseContents-        ; e <- parseContents-        ; return (a,b,c,d,e)-        }--instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d-         , XmlContent e, XmlContent f ) =>-         XmlContent (a,b,c,d,e,f) where-    toContents (a,b,c,d,e,f) = toContents a ++ toContents b ++ toContents c-                               ++ toContents d ++ toContents e ++ toContents f-    parseContents = do-        { a <- parseContents-        ; b <- parseContents-        ; c <- parseContents-        ; d <- parseContents-        ; e <- parseContents-        ; f <- parseContents-        ; return (a,b,c,d,e,f)-        }--instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d-         , XmlContent e, XmlContent f, XmlContent g ) =>-         XmlContent (a,b,c,d,e,f,g) where-    toContents (a,b,c,d,e,f,g)-        = toContents a ++ toContents b ++ toContents c ++ toContents d-          ++ toContents e ++ toContents f ++ toContents g-    parseContents = do-        { a <- parseContents-        ; b <- parseContents-        ; c <- parseContents-        ; d <- parseContents-        ; e <- parseContents-        ; f <- parseContents-        ; g <- parseContents-        ; return (a,b,c,d,e,f,g)-        }--instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h ) =>-         XmlContent (a,b,c,d,e,f,g,h) where-    toContents (a,b,c,d,e,f,g,h)-        = toContents a ++ toContents b ++ toContents c ++ toContents d-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h-    parseContents = do-        { a <- parseContents-        ; b <- parseContents-        ; c <- parseContents-        ; d <- parseContents-        ; e <- parseContents-        ; f <- parseContents-        ; g <- parseContents-        ; h <- parseContents-        ; return (a,b,c,d,e,f,g,h)-        }--instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h-         , XmlContent i ) =>-         XmlContent (a,b,c,d,e,f,g,h,i) where-    toContents (a,b,c,d,e,f,g,h,i)-        = toContents a ++ toContents b ++ toContents c ++ toContents d-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h-          ++ toContents i-    parseContents = do-        { a <- parseContents-        ; b <- parseContents-        ; c <- parseContents-        ; d <- parseContents-        ; e <- parseContents-        ; f <- parseContents-        ; g <- parseContents-        ; h <- parseContents-        ; i <- parseContents-        ; return (a,b,c,d,e,f,g,h,i)-        }--instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h-         , XmlContent i, XmlContent j ) =>-         XmlContent (a,b,c,d,e,f,g,h,i,j) where-    toContents (a,b,c,d,e,f,g,h,i,j)-        = toContents a ++ toContents b ++ toContents c ++ toContents d-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h-          ++ toContents i ++ toContents j-    parseContents = do-        { a <- parseContents-        ; b <- parseContents-        ; c <- parseContents-        ; d <- parseContents-        ; e <- parseContents-        ; f <- parseContents-        ; g <- parseContents-        ; h <- parseContents-        ; i <- parseContents-        ; j <- parseContents-        ; return (a,b,c,d,e,f,g,h,i,j)-        }--instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h-         , XmlContent i, XmlContent j, XmlContent k ) =>-         XmlContent (a,b,c,d,e,f,g,h,i,j,k) where-    toContents (a,b,c,d,e,f,g,h,i,j,k)-        = toContents a ++ toContents b ++ toContents c ++ toContents d-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h-          ++ toContents i ++ toContents j ++ toContents k-    parseContents = do-        { a <- parseContents-        ; b <- parseContents-        ; c <- parseContents-        ; d <- parseContents-        ; e <- parseContents-        ; f <- parseContents-        ; g <- parseContents-        ; h <- parseContents-        ; i <- parseContents-        ; j <- parseContents-        ; k <- parseContents-        ; return (a,b,c,d,e,f,g,h,i,j,k)-        }--instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h-         , XmlContent i, XmlContent j, XmlContent k, XmlContent l ) =>-         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l) where-    toContents (a,b,c,d,e,f,g,h,i,j,k,l)-        = toContents a ++ toContents b ++ toContents c ++ toContents d-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h-          ++ toContents i ++ toContents j ++ toContents k ++ toContents l-    parseContents = do-        { a <- parseContents-        ; b <- parseContents-        ; c <- parseContents-        ; d <- parseContents-        ; e <- parseContents-        ; f <- parseContents-        ; g <- parseContents-        ; h <- parseContents-        ; i <- parseContents-        ; j <- parseContents-        ; k <- parseContents-        ; l <- parseContents-        ; return (a,b,c,d,e,f,g,h,i,j,k,l)-        }--instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h-         , XmlContent i, XmlContent j, XmlContent k, XmlContent l-         , XmlContent m ) =>-         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l,m) where-    toContents (a,b,c,d,e,f,g,h,i,j,k,l,m)-        = toContents a ++ toContents b ++ toContents c ++ toContents d-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h-          ++ toContents i ++ toContents j ++ toContents k ++ toContents l-          ++ toContents m-    parseContents = do-        { a <- parseContents-        ; b <- parseContents-        ; c <- parseContents-        ; d <- parseContents-        ; e <- parseContents-        ; f <- parseContents-        ; g <- parseContents-        ; h <- parseContents-        ; i <- parseContents-        ; j <- parseContents-        ; k <- parseContents-        ; l <- parseContents-        ; m <- parseContents-        ; return (a,b,c,d,e,f,g,h,i,j,k,l,m)-        }--instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h-         , XmlContent i, XmlContent j, XmlContent k, XmlContent l-         , XmlContent m, XmlContent n ) =>-         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l,m,n) where-    toContents (a,b,c,d,e,f,g,h,i,j,k,l,m,n)-        = toContents a ++ toContents b ++ toContents c ++ toContents d-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h-          ++ toContents i ++ toContents j ++ toContents k ++ toContents l-          ++ toContents m ++ toContents n-    parseContents = do-        { a <- parseContents-        ; b <- parseContents-        ; c <- parseContents-        ; d <- parseContents-        ; e <- parseContents-        ; f <- parseContents-        ; g <- parseContents-        ; h <- parseContents-        ; i <- parseContents-        ; j <- parseContents-        ; k <- parseContents-        ; l <- parseContents-        ; m <- parseContents-        ; n <- parseContents-        ; return (a,b,c,d,e,f,g,h,i,j,k,l,m,n)-        }--instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d-         , XmlContent e, XmlContent f, XmlContent g, XmlContent h-         , XmlContent i, XmlContent j, XmlContent k, XmlContent l-         , XmlContent m, XmlContent n, XmlContent o ) =>-         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) where-    toContents (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)-        = toContents a ++ toContents b ++ toContents c ++ toContents d-          ++ toContents e ++ toContents f ++ toContents g ++ toContents h-          ++ toContents i ++ toContents j ++ toContents k ++ toContents l-          ++ toContents m ++ toContents n ++ toContents o-    parseContents = do-        { a <- parseContents-        ; b <- parseContents-        ; c <- parseContents-        ; d <- parseContents-        ; e <- parseContents-        ; f <- parseContents-        ; g <- parseContents-        ; h <- parseContents-        ; i <- parseContents-        ; j <- parseContents-        ; k <- parseContents-        ; l <- parseContents-        ; m <- parseContents-        ; n <- parseContents-        ; o <- parseContents-        ; return (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)-        }+    parseContents = let (Right (x:_),_) = runParser p [] -- for type of x only+                        p = case toHType x of+                              (Prim "Char" _) -> fmap (map xFromChar) $ text+                              _ -> many parseContents+                    in p+        -- comments, PIs, etc, are skipped in the individual element parser.  instance (XmlContent a) => XmlContent (Maybe a) where-    toContents m   = [mkElem m (maybe [] toContents m)]-    parseContents = do-        { e <- elementWith (flip isPrefixOf) ["maybe"]-        ; case e of (Elem _ [] []) -> return Nothing-                    (Elem _ [] _)  -> fmap Just (interior e parseContents)-        }--instance (XmlContent a, XmlContent b) => XmlContent (Either a b) where-    toContents v@(Left aa) =-        [mkElemC (showConstr 0 (toHType v)) (toContents aa)]-    toContents v@(Right ab) =-        [mkElemC (showConstr 1 (toHType v)) (toContents ab)]-    parseContents =-        (inElementWith (flip isPrefixOf) "Left"  $ fmap Left  parseContents)-          `onFail`-        (inElementWith (flip isPrefixOf) "Right" $ fmap Right parseContents)----    do{ e@(Elem t [] _) <- element ["Left","Right"]---      ; case t of---          _ | "Left"  `isPrefixOf` t -> fmap Left  (interior e parseContents)---            | "Right" `isPrefixOf` t -> fmap Right (interior e parseContents)---      }------------------------------------------------------------------------------ Useful auxiliaries for "fromAttributes"----------------------------------------------------------------------------- | If an attribute is defaultable, then it either takes the default---   value (which is omitted from the output), or a non-default value---   (which obviously must be printed).-data Defaultable a  = Default a    | NonDefault a    deriving (Eq,Show)--searchMaybe :: (a -> Maybe b) -> [a] -> Maybe b-searchMaybe _ [] = Nothing-searchMaybe f (x:xs) =-    let fx = f x in-    case fx of-      Nothing  -> searchMaybe f xs-      (Just _) -> fx--maybeToAttr :: (String->a->Maybe Attribute) -> String -> Maybe a-               -> Maybe Attribute-maybeToAttr _ _ Nothing  = Nothing-maybeToAttr to n (Just v) = to n v--defaultToAttr :: (String->a->Maybe Attribute) -> String -> Defaultable a-                 -> Maybe Attribute-defaultToAttr _ _ (Default _)  = Nothing-defaultToAttr to n (NonDefault v) = to n v--definiteA :: (String->Attribute->Maybe a) -> String -> String-             -> [Attribute] -> a-definiteA from tag at as =-    case searchMaybe (from at) as of-      Nothing  -> error ("missing attribute "++at++" in tag <"++tag++">")-      (Just a) -> a--defaultA :: (String->Attribute->Maybe a) -> a -> String-            -> [Attribute] -> Defaultable a-defaultA from def at as =-    case searchMaybe (from at) as of-      Nothing  -> Default def-      (Just a) -> NonDefault a--possibleA :: (String->Attribute->Maybe a) -> String -> [Attribute] -> Maybe a-possibleA from at as = searchMaybe (from at) as--fromAttrToStr :: String -> Attribute -> Maybe String-fromAttrToStr n (n0,v)-        | n == n0   = Just (attr2str v)-        | otherwise = Nothing--toAttrFrStr   :: String -> String -> Maybe Attribute-toAttrFrStr n v = Just (n, str2attr v)--str2attr :: String -> AttValue-str2attr s =-    let f t =-          let (l,r) = span (\c-> not (elem c "\"&<>'")) t-          in if null r then [Left l]-             else Left l: Right (g (head r)): f (tail r)-        g '"'  = RefEntity "quot"-        g '&'  = RefEntity "amp"-        g '<'  = RefEntity "lt"-        g '>'  = RefEntity "gt"-        g '\'' = RefEntity "apos"-    in AttValue (f s)--attr2str :: AttValue -> String          -- really needs symbol table-attr2str (AttValue xs) =-    let f (Left s) = s-        f (Right (RefChar i))        = [chr i]-        f (Right (RefEntity "quot")) = "\""-        f (Right (RefEntity "amp"))  = "&"-        f (Right (RefEntity "lt"))   = "<"-        f (Right (RefEntity "gt"))   = ">"-        f (Right (RefEntity "apos")) = "'"-        f (Right _)                  = "*"  -- Ooops, ST needed here.-    in concatMap f xs-----------------------------------------------------------------------------  New content-model types---------------------------------------------------------------------------{--data OneOf2 a b-data OneOf3 a b c-data OneOf4 a b c d-    ... etc are now defined (with instances) in module OneOfN.--}---- | A type corresponding to XML's ANY contentspec.---   It is either a list of unconverted xml 'Content'---   or some 'XmlContent'-able value.------ Parsing functions (e.g. 'parseContents') will always produce 'UnConverted'.--- Note: The Show instance for 'UnConverted' uses 'verbatim'.-data ANYContent = forall a . (XmlContent a, Show a) => ANYContent a-                | UnConverted [Content Posn]--instance Show ANYContent where-    show (UnConverted c) = "UnConverted " ++ (show $ map verbatim c)-    show (ANYContent a)  = "ANYContent " ++ (show a)--instance Eq ANYContent where-    a == b = show a == show b---- | The List1 type represents lists with at least one element.---   It is required for DTD content models that use + as a modifier.-data List1 a = NonEmpty [a]  deriving (Eq, Show)------------------------------------------------------------------------------  Instances for new content-model types--------------------------------------------------------------------------instance (HTypeable a) => HTypeable (List1 a) where-    toHType m  = Defined "List1" [hx]-                         [Constr "NonEmpty" [hx] [List hx] {-Nothing-}]-               where (NonEmpty x) = m-                     hx = toHType x-instance (XmlContent a) => XmlContent (List1 a) where-    toContents (NonEmpty xs) = concatMap toContents xs-    parseContents = fmap NonEmpty $ many1 parseContents--instance HTypeable ANYContent where-    toHType _      = Prim "ANYContent" "ANY"-instance XmlContent ANYContent where-    toContents (ANYContent a)  = toContents a-    toContents (UnConverted s) = map (fmap (const ())) s-    parseContents = P (\cs -> (Right (UnConverted cs), []))+    toContents m  = maybe [] toContents m+    parseContents = optional parseContents ---------------------------------------------------------------------------- ------------------------------------------------------------------------
+ src/Text/XML/HaXml/XmlContent/Haskell.hs view
@@ -0,0 +1,252 @@+-- | The class 'XmlContent' is a kind of replacement for Read and Show:+--   it provides conversions between a generic XML tree representation+--   and your own more specialised typeful Haskell data trees.+--+--   If you are starting with a set of Haskell datatypes, use DrIFT to+--   derive instances of this class for you:+--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT+--   and use the current module for instances of the standard Haskell+--   datatypes list, Maybe, and so on.+--+--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell+--   to generate both the Haskell types and the corresponding instances,+--   but _do_not_ use the current module for instances: use+--   Text.XML.HaXml.XmlContent instead.++module Text.XML.HaXml.XmlContent.Haskell+  (+  -- * Re-export everything from Text.XML.HaXml.XmlContent.Parser.+    module Text.XML.HaXml.XmlContent.Parser+  -- * Instances (only) for the XmlContent class, for datatypes that+  --   originated in Haskell, rather than from a DTD definition.+--  , module Text.XML.HaXml.XmlContent.Haskell++  -- * Whole-document conversion functions+  , toXml, fromXml+  , readXml, showXml, fpsShowXml+  , fReadXml, fWriteXml, fpsWriteXml+  , hGetXml,  hPutXml, fpsHPutXml++  ) where++import IO+import List (isPrefixOf, isSuffixOf)+import qualified Text.XML.HaXml.ByteStringPP as FPS (document)+import qualified Data.ByteString.Lazy.Char8 as FPS++import Text.PrettyPrint.HughesPJ (render)+import Text.ParserCombinators.Poly++import Text.XML.HaXml.Types+import Text.XML.HaXml.TypeMapping+import Text.XML.HaXml.Posn     (Posn, posInNewCxt)+import Text.XML.HaXml.Pretty   (document)+import Text.XML.HaXml.Parse    (xmlParse)+import Text.XML.HaXml.Verbatim (Verbatim(verbatim))+import Text.XML.HaXml.XmlContent.Parser+++        -- probably want to write DTD separately from value, and have+        -- easy ways to combine DTD + value into a document, or write+        -- them to separate files.++-- | Read an XML document from a file and convert it to a fully-typed+--   Haskell value.+fReadXml  :: XmlContent a => FilePath -> IO a+fReadXml fp = do+    f <- ( if fp=="-" then return stdin+           else openFile fp ReadMode )+    x <- hGetContents f+    let (Document _ _ y _) = xmlParse fp x+        y' = CElem y (posInNewCxt fp Nothing)+    either fail return (fst (runParser parseContents [y']))++-- | Write a fully-typed Haskell value to the given file as an XML+--   document.+fWriteXml :: XmlContent a => FilePath -> a -> IO ()+fWriteXml fp x = do+    f <- ( if fp=="-" then return stdout+           else openFile fp WriteMode )+    hPutXml f False x+    hClose f++-- | Write any Haskell value to the given file as an XML document,+--   using the FastPackedString interface (output will not be prettified).+fpsWriteXml :: XmlContent a => FilePath -> a -> IO ()+fpsWriteXml fp x = do+    f <- ( if fp=="-" then return stdout+           else openFile fp WriteMode )+    fpsHPutXml f False x+    hClose f++-- | Read a fully-typed XML document from a string.+readXml :: XmlContent a => String -> Either String a+readXml s =+    let (Document _ _ y _) = xmlParse "string input" s in+    fst (runParser parseContents+                   [CElem y (posInNewCxt "string input" Nothing)])++-- | Convert a fully-typed XML document to a string (without DTD).+showXml :: XmlContent a => Bool -> a -> String+showXml dtd x =+    case toContents x of+      [CElem _ _] -> (render . document . toXml dtd) x+      _ -> ""++-- | Convert a fully-typed XML document to a ByteString (without DTD).+fpsShowXml :: XmlContent a => Bool -> a -> FPS.ByteString+fpsShowXml dtd x =+    case toContents x of+      [CElem _ _] -> (FPS.document . toXml dtd) x+      _ -> FPS.empty+++-- | Convert a fully-typed XML document to a string (with or without DTD).+toXml :: XmlContent a => Bool -> a -> Document ()+toXml dtd value =+    let ht = toHType value in+    Document (Prolog (Just (XMLDecl "1.0" Nothing Nothing))+                     [] (if dtd then Just (toDTD ht) else Nothing) [])+             emptyST+             ( case (ht, toContents value) of+                 (Tuple _, cs)       -> Elem (showHType ht "") [] cs+                 (Defined _ _ _, cs) -> Elem (showHType ht "-XML") [] cs+                 (_, [CElem e ()])   -> e )+             []++-- | Read a Haskell value from an XML document, ignoring the DTD and+--   using the Haskell result type to determine how to parse it.+fromXml :: XmlContent a => Document Posn -> Either String a+fromXml (Document _ _ e@(Elem n _ cs) _)+  | "tuple" `isPrefixOf` n = fst (runParser parseContents cs)+  | "-XML"  `isSuffixOf` n = fst (runParser parseContents cs)+  | otherwise = fst (runParser parseContents+                               [CElem e (posInNewCxt "document" Nothing)])+++-- | Read a fully-typed XML document from a file handle.+hGetXml :: XmlContent a => Handle -> IO a+hGetXml h = do+    x <- hGetContents h+    let (Document _ _ y _) = xmlParse "file handle" x+    either fail return+           (fst (runParser parseContents+                           [CElem y (posInNewCxt "file handle" Nothing)]))++-- | Write a fully-typed XML document to a file handle.+hPutXml :: XmlContent a => Handle -> Bool -> a -> IO ()+hPutXml h dtd x = do+    (hPutStrLn h . render . document . toXml dtd) x++-- | Write a fully-typed XML document to a file handle, using the+--   FastPackedString interface (output will not be prettified).+fpsHPutXml :: XmlContent a => Handle -> Bool -> a -> IO ()+fpsHPutXml h dtd x = do+    (FPS.hPut h . FPS.document . toXml dtd) x+++------------------------------------------------------------------------+-- Instances for all the standard basic datatypes.+-- These are for Haskell datatypes being derived to go to XML.+-- DtdToHaskell does not use these instances.+------------------------------------------------------------------------++instance XmlContent Bool where+    toContents b   = [CElem (Elem "bool" [mkAttr "value" (show b)] []) ()]+    parseContents = do { e <- element ["bool"] ; return (attval e) }++instance XmlContent Int where+    toContents i   = [CElem (Elem "int" [mkAttr "value" (show i)] []) ()]+    parseContents = do { e <- element ["int"] ; return (attval e) }++instance XmlContent Integer where+    toContents i   = [CElem (Elem "integer" [mkAttr "value" (show i)] []) ()]+    parseContents = do { e <- element ["integer"] ; return (attval e) }++instance XmlContent Float where+    toContents i   = [CElem (Elem "float" [mkAttr "value" (show i)] []) ()]+    parseContents = do { e <- element ["float"] ; return (attval e) }++instance XmlContent Double where+    toContents i   = [CElem (Elem "double" [mkAttr "value" (show i)] []) ()]+    parseContents = do { e <- element ["double"] ; return (attval e) }++instance XmlContent Char where+    -- NOT in a string+    toContents c   = [CElem (Elem "char" [mkAttr "value" [c]] []) ()]+    parseContents = do { (Elem _ [("value",(AttValue [Left [c]]))] [])+                             <- element ["char"]+                       ; return c+                       }+    -- Only defined for Char and no other types:+    xToChar   = id+    xFromChar = id++instance XmlContent a => XmlContent [a] where+    toContents xs  = case toHType x of+                       (Prim "Char" _) ->+                            [mkElem "string" [CString True (map xToChar xs) ()]]+                       _ -> [mkElem xs (concatMap toContents xs)]+                   where   (x:_) = xs+    parseContents = P (\x ->+        case x of+            (CString _ s _:cs)+                   -> (Right (map xFromChar s), cs)+            (CElem (Elem "string" [] [CString _ s _]) _:cs)+                   -> (Right (map xFromChar s), cs)+            (CElem (Elem e [] xs) _:cs) | "list" `isPrefixOf` e+                   -> scanElements xs+                   where+                  -- scanElements :: [Content] -> (Either String [a],[Content])+                     scanElements [] = (Right [], cs)+                     scanElements es =+                        case runParser parseContents es of+                            (Left msg, es') -> (Left (False,msg), es')+                            (Right y, es') ->+                                case scanElements es' of+                                    (Left msg, ds) -> (Left msg, ds)+                                    (Right ys, ds) -> (Right (y:ys), ds)+            (CElem (Elem e _ _) pos: cs)+                   -> (Left (False+                            ,"Expected a <list-...>, but found a <"++e++"> at\n"+                            ++ show pos), cs)+            (CRef r pos: cs)+                   -> (Left (False+                            ,"Expected a <list-...>, but found a ref "+                            ++verbatim r++" at\n"++ show pos), cs)+            (_:cs) -> ((\ (P p)-> p) parseContents) cs  -- skip comments etc.+            []     -> (Left (False+                            ,"Ran out of input XML whilst secondary parsing")+                      , [])+        )++instance XmlContent () where+    toContents ()  = [CElem (Elem "unit" [] []) ()]+    parseContents = do { element ["unit"]; return () }+++instance (XmlContent a) => XmlContent (Maybe a) where+    toContents m   = [mkElem m (maybe [] toContents m)]+    parseContents = do+        { e <- elementWith (flip isPrefixOf) ["maybe"]+        ; case e of (Elem _ [] []) -> return Nothing+                    (Elem _ [] _)  -> fmap Just (interior e parseContents)+        }++instance (XmlContent a, XmlContent b) => XmlContent (Either a b) where+    toContents v@(Left aa) =+        [mkElemC (showConstr 0 (toHType v)) (toContents aa)]+    toContents v@(Right ab) =+        [mkElemC (showConstr 1 (toHType v)) (toContents ab)]+    parseContents =+        (inElementWith (flip isPrefixOf) "Left"  $ fmap Left  parseContents)+          `onFail`+        (inElementWith (flip isPrefixOf) "Right" $ fmap Right parseContents)++--    do{ e@(Elem t [] _) <- element ["Left","Right"]+--      ; case t of+--          _ | "Left"  `isPrefixOf` t -> fmap Left  (interior e parseContents)+--            | "Right" `isPrefixOf` t -> fmap Right (interior e parseContents)+--      }++------------------------------------------------------------------------
+ src/Text/XML/HaXml/XmlContent/Parser.hs view
@@ -0,0 +1,690 @@+{-# LANGUAGE ExistentialQuantification #-}++-- | The class 'XmlContent' is a kind of replacement for Read and Show:+--   it provides conversions between a generic XML tree representation+--   and your own more specialised typeful Haskell data trees.+--+--   If you are starting with a set of Haskell datatypes, use DrIFT to+--   derive instances of this class for you:+--       http:\/\/repetae.net\/john\/computer\/haskell\/DrIFT+--   If you are starting with an XML DTD, use HaXml's tool DtdToHaskell+--   to generate both the Haskell types and the corresponding instances.+--+--   This unified class interface replaces two previous (somewhat similar)+--   classes: Haskell2Xml and Xml2Haskell.  There was no real reason to have+--   separate classes depending on how you originally defined your datatypes.+--   However, some instances for basic types like lists will depend on which +--   direction you are using.  See Text.XML.HaXml.XmlContent and+--   Text.XML.HaXml.XmlContent.Haskell.++--   The methods 'toContents' and 'parseContents' convert a value to and from+--   a generic internal representation of an XML document /without/ a DTD.+--   The functions 'toXml' and 'fromXml' convert a value to and from a generic+--   internal representation of an XML document /including/ a DTD.+--   The functions 'readXml' and 'showXml' convert to and from Strings.+--   The functions 'fReadXml' and 'fWriteXml' do the conversion to and from+--   the given filenames.+--   The functions 'hGetXml' and 'hPutXml' do the conversion to and from+--   the given file handles.+--   (See the type signatures.)+--++module Text.XML.HaXml.XmlContent.Parser+  ( -- * Re-export the relevant set of generic XML document type definitions+    Document(..)+  , Element(..)+  , ElemTag(..)+  , Content(..)+  , Attribute()+  , AttValue(..)+  , Prolog(..)+  , Reference(..)+  -- * The enabling classes, that define parsing\/unparsing between Haskell+  --   datatypes and a generic XML representation.+  , XmlContent(..)+  , XmlAttributes(..)+  , XmlAttrType(..)+  -- ** Auxiliaries for writing parsers in the XmlContent class+  , module Text.ParserCombinators.Poly+  , XMLParser+  , content, posnElement, element, interior, inElement, text, attributes+  , posnElementWith, elementWith, inElementWith+  , choice, definite -- ???+  -- ** Auxiliaries for generating in the XmlContent class+  , mkElem, mkElemC, mkAttr+  , toText, toCData+  -- ** Auxiliaries for the attribute-related classes+  , maybeToAttr, defaultToAttr+  , definiteA, defaultA, possibleA, fromAttrToStr, toAttrFrStr+  , Defaultable(..)+  , str2attr, attr2str, attval+  , catMaybes   -- re-exported from Maybe+  -- * Explicit representation of Haskell datatype information+  --   (for conversion to a DTD)+  , module Text.XML.HaXml.TypeMapping+  -- * Types useful for some content models+  , List1(..)+  , ANYContent(..)+  ) where++--import IO+import Maybe (catMaybes)+import Char  (chr, isSpace)+import List  (isPrefixOf, isSuffixOf)++import Text.PrettyPrint.HughesPJ (render)+import qualified Text.XML.HaXml.Pretty as PP++import Text.XML.HaXml.Types+import Text.XML.HaXml.TypeMapping+import Text.XML.HaXml.Posn     (Posn, posInNewCxt)+import Text.XML.HaXml.Pretty   (document)+import Text.XML.HaXml.Parse    (xmlParse)+import Text.XML.HaXml.Verbatim (Verbatim(verbatim))+import qualified Text.XML.HaXml.ByteStringPP as FPS (document)+import qualified Data.ByteString.Lazy.Char8 as FPS++import Text.ParserCombinators.Poly++--  #define DEBUG++#if defined(DEBUG)+import Debug.Trace(trace)+debug :: a -> String -> a+v `debug` s = trace s v+#else+debug :: t -> t1 -> t+v `debug` _ = v+#endif+++------------------------------------------------------------------------+-- | Read a single attribute called "value".+attval :: (Read a) => Element i -> a+attval (Elem _ [("value",v@(AttValue _))] []) = read (show v)++-- | Generate a single attribute.+mkAttr :: String -> String -> Attribute+mkAttr n v = (n, AttValue [Left v])++-- | Generate an element with no attributes, named for its HType.+mkElem :: XmlContent a => a -> [Content ()] -> Content ()+mkElem x cs  = CElem (Elem (showHType (toHType x) "") [] cs) ()++-- | Generate an element with no attributes, named directly.+mkElemC :: String -> [Content ()] -> Content ()+mkElemC x cs = CElem (Elem x [] cs) ()++-- | Turn a simple string into XML text.+toText :: String -> [Content ()]+toText s = [CString False s ()]++-- | Turn a string into an XML CDATA section.+--   (i.e. special characters like '&' are preserved without interpretation.)+toCData :: String -> [Content ()]+toCData s = [CString True s ()]+++------------------------------------------------------------------------++-- | We need a parsing monad for reading generic XML Content into specific+--   datatypes.  This is a specialisation of the Text.ParserCombinators.Poly+--   ones, where the input token type is fixed as XML Content.+type XMLParser a = Parser (Content Posn) a+++------------------------------------------------------------------------+-- Some useful parsing combinators+------------------------------------------------------------------------++-- | The most primitive combinator for XMLParser - get one content item.+content :: String -> XMLParser (Content Posn)+content word = next `adjustErr` (++" when expecting "++word)++-- | Get the next content element, checking that it has one of the required+--   tags, using the given matching function.+--   (Skips over comments and whitespace, rejects text and refs.+--    Also returns position of element.)+posnElementWith :: (String->String->Bool) -> [String]+                   -> XMLParser (Posn, Element Posn)+posnElementWith match tags = do+    { c <- content (formatted tags)+    ; case c of+          CElem e@(Elem t _ _) pos+              | any (match t) tags -> return (pos, e)+              | otherwise          -> fail ("Found a <"++t++">, but expected "+                                           ++formatted tags++"\nat "++show pos)+          CString b s pos+              | not b && all isSpace s -> posnElementWith match tags+                                                        -- ignore blank space+              | otherwise -> fail ("Found text content, but expected "+                                  ++formatted tags++"\ntext is: "++s+                                  ++"\nat "++show pos)+          CRef r pos -> fail ("Found reference, but expected "+                             ++formatted tags++"\nreference is: "++verbatim r+                             ++"\nat "++show pos)+          CMisc _ _ -> posnElementWith match tags  -- skip comments, PIs, etc.+    }+  where+    formatted [t]  = "a <"++t++">"+    formatted tgs = "one of"++ concatMap (\t->" <"++t++">") tgs++-- | A specialisation of @posnElementWith (==)@.+posnElement :: [String] -> XMLParser (Posn, Element Posn)+posnElement = posnElementWith (==)++-- | Get the next content element, checking that it has one of the required+--   tags.  (Skips over comments and whitespace, rejects text and refs.)+element :: [String] -> XMLParser (Element Posn)+element tags = fmap snd (posnElement tags)+                                `debug` ("Element: "++unwords tags++"\n")++-- | Like element, only permits a more flexible match against the tagname.+elementWith :: (String->String->Bool) -> [String] -> XMLParser (Element Posn)+elementWith match tags = fmap snd (posnElementWith match tags)+                                `debug` ("Element: "++unwords tags++"\n")++-- | Run an XMLParser on the contents of the given element (i.e. not on the+--   current monadic content sequence), checking that the contents are+--   exhausted, before returning the calculated value within the current+--   parser context.+interior :: Element Posn -> XMLParser a -> XMLParser a+interior (Elem e _ cs) p =+    case runParser p cs of+        (Left msg, _) -> fail msg+        (Right x, []) -> return x+        (Right x, ds@(d:_))+            | all onlyMisc ds -> return x+            | otherwise       -> fail ("Too many elements inside <"++e++"> at\n"+                                      ++show (info d)++"\n"+                                      ++"Found excess: "++verbatim d)+  where onlyMisc (CMisc _ _) = True+        onlyMisc (CString False s _) | all isSpace s = True+        onlyMisc _ = False++-- | A combination of element + interior.+inElement :: String -> XMLParser a -> XMLParser a+inElement tag p = do { e <- element [tag]; commit (interior e p) }++-- | A combination of elementWith + interior.+inElementWith :: (String->String->Bool) -> String -> XMLParser a -> XMLParser a+inElementWith match tag p = do { e <- elementWith match [tag]+                               ; commit (interior e p) }++-- | Do some parsing of the attributes of the given element+attributes :: XmlAttributes a => Element Posn -> XMLParser a+attributes (Elem _ as _) = return (fromAttrs as)++-- | 'text' is a counterpart to 'element', parsing text content if it+--   exists.  Adjacent text and references are coalesced.+text :: XMLParser String+text = text' []+  where text' acc =+          do { c <- content "plain text"+             ; case c of+                 CString _ s _        -> text' (s:acc)+                 CRef (RefChar s) _   -> text' (("&#"++show s++";") :acc)+                 CRef (RefEntity s) _ -> text' (('&':s++";"):acc)+                 CMisc _ _            -> text' acc+                 CElem _ _         -> do { reparse [c] -- put it back!+                                         ; if null acc then fail "empty string"+                                           else return (concat (reverse acc))+                                         }+             }+          `onFail` ( if null acc then fail "empty string"+                     else return (concat (reverse acc)) )+++-- | 'choice f p' means if parseContents succeeds, apply f to the result,+--   otherwise use the continuation parser.+choice :: XmlContent a => (a -> b) -> XMLParser b -> XMLParser b+choice cons (P other) =+    P (\cs-> case runParser parseContents cs of+                 (Left _, _)  -> other cs+                 (Right x, cs') -> (Right (cons x), cs'))++--choice cons other = fmap cons parseContents `onFail` other++-- | not sure this is needed now.   'definite p' previously ensured that+--   an element was definitely present.  Now I think the monad might take+--   care of that for us.+definite :: XmlContent a => XMLParser a -> String -> String -> XMLParser a+definite p inner tag = P (\cs-> case runParser p cs of+                                   (Left _, cs') -> (Left (False,msg'), cs')+                                   (Right x, cs')  -> (Right x,   cs'))+  where msg' = "content error: expected "++inner++" inside <"++tag+               ++"> element\n"++------------------------------------------------------------------------++-- | The @XmlContent@ class promises that an XML Content element can be+--   converted to and from a Haskell value.+class HTypeable a => XmlContent a where+    -- | Convert from XML to Haskell+    parseContents :: XMLParser a+    -- | Convert from Haskell to XML+    toContents    :: a -> [Content ()]++    -- | Dummy functions (for most types): used /only/ in the Char instance+    --   for coercing lists of Char into String.+    xToChar       :: a -> Char+    xFromChar     :: Char -> a+    xToChar        = error "HaXml.XmlContent.xToChar used in error"+    xFromChar      = error "HaXml.XmlContent.xFromChar used in error"++-- | The @XmlAttributes@ class promises that a list of XML tag attributes+--   can be converted to and from a Haskell value.+class XmlAttributes a where+    fromAttrs :: [Attribute] -> a+    toAttrs   :: a -> [Attribute]+-- | The @XmlAttrType@ class promises that an attribute taking an XML+--   enumerated type can be converted to and from a Haskell value.+class XmlAttrType a where+    fromAttrToTyp :: String -> Attribute -> Maybe a+    toAttrFrTyp   :: String -> a -> Maybe Attribute+++------------------------------------------------------------------------+-- Instances for some of the standard basic datatypes.+-- Both DtdToHaskell and Haskell2Xml share these instances.+------------------------------------------------------------------------++instance (XmlContent a, XmlContent b) => XmlContent (a,b) where+    toContents (a,b) = toContents a ++ toContents b+    parseContents    = do+        { a <- parseContents+        ; b <- parseContents+        ; return (a,b)+        }++instance (XmlContent a, XmlContent b, XmlContent c) => XmlContent (a,b,c) where+    toContents (a,b,c) = toContents a ++ toContents b ++ toContents c+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; return (a,b,c)+        }++instance (XmlContent a, XmlContent b, XmlContent c, XmlContent d) =>+         XmlContent (a,b,c,d) where+    toContents (a,b,c,d) = toContents a ++ toContents b ++ toContents c+                           ++ toContents d+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; d <- parseContents+        ; return (a,b,c,d)+        }++instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d+         , XmlContent e ) =>+         XmlContent (a,b,c,d,e) where+    toContents (a,b,c,d,e) = toContents a ++ toContents b ++ toContents c+                             ++ toContents d ++ toContents e+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; d <- parseContents+        ; e <- parseContents+        ; return (a,b,c,d,e)+        }++instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d+         , XmlContent e, XmlContent f ) =>+         XmlContent (a,b,c,d,e,f) where+    toContents (a,b,c,d,e,f) = toContents a ++ toContents b ++ toContents c+                               ++ toContents d ++ toContents e ++ toContents f+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; d <- parseContents+        ; e <- parseContents+        ; f <- parseContents+        ; return (a,b,c,d,e,f)+        }++instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d+         , XmlContent e, XmlContent f, XmlContent g ) =>+         XmlContent (a,b,c,d,e,f,g) where+    toContents (a,b,c,d,e,f,g)+        = toContents a ++ toContents b ++ toContents c ++ toContents d+          ++ toContents e ++ toContents f ++ toContents g+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; d <- parseContents+        ; e <- parseContents+        ; f <- parseContents+        ; g <- parseContents+        ; return (a,b,c,d,e,f,g)+        }++instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h ) =>+         XmlContent (a,b,c,d,e,f,g,h) where+    toContents (a,b,c,d,e,f,g,h)+        = toContents a ++ toContents b ++ toContents c ++ toContents d+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; d <- parseContents+        ; e <- parseContents+        ; f <- parseContents+        ; g <- parseContents+        ; h <- parseContents+        ; return (a,b,c,d,e,f,g,h)+        }++instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h+         , XmlContent i ) =>+         XmlContent (a,b,c,d,e,f,g,h,i) where+    toContents (a,b,c,d,e,f,g,h,i)+        = toContents a ++ toContents b ++ toContents c ++ toContents d+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h+          ++ toContents i+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; d <- parseContents+        ; e <- parseContents+        ; f <- parseContents+        ; g <- parseContents+        ; h <- parseContents+        ; i <- parseContents+        ; return (a,b,c,d,e,f,g,h,i)+        }++instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h+         , XmlContent i, XmlContent j ) =>+         XmlContent (a,b,c,d,e,f,g,h,i,j) where+    toContents (a,b,c,d,e,f,g,h,i,j)+        = toContents a ++ toContents b ++ toContents c ++ toContents d+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h+          ++ toContents i ++ toContents j+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; d <- parseContents+        ; e <- parseContents+        ; f <- parseContents+        ; g <- parseContents+        ; h <- parseContents+        ; i <- parseContents+        ; j <- parseContents+        ; return (a,b,c,d,e,f,g,h,i,j)+        }++instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h+         , XmlContent i, XmlContent j, XmlContent k ) =>+         XmlContent (a,b,c,d,e,f,g,h,i,j,k) where+    toContents (a,b,c,d,e,f,g,h,i,j,k)+        = toContents a ++ toContents b ++ toContents c ++ toContents d+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h+          ++ toContents i ++ toContents j ++ toContents k+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; d <- parseContents+        ; e <- parseContents+        ; f <- parseContents+        ; g <- parseContents+        ; h <- parseContents+        ; i <- parseContents+        ; j <- parseContents+        ; k <- parseContents+        ; return (a,b,c,d,e,f,g,h,i,j,k)+        }++instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h+         , XmlContent i, XmlContent j, XmlContent k, XmlContent l ) =>+         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l) where+    toContents (a,b,c,d,e,f,g,h,i,j,k,l)+        = toContents a ++ toContents b ++ toContents c ++ toContents d+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h+          ++ toContents i ++ toContents j ++ toContents k ++ toContents l+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; d <- parseContents+        ; e <- parseContents+        ; f <- parseContents+        ; g <- parseContents+        ; h <- parseContents+        ; i <- parseContents+        ; j <- parseContents+        ; k <- parseContents+        ; l <- parseContents+        ; return (a,b,c,d,e,f,g,h,i,j,k,l)+        }++instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h+         , XmlContent i, XmlContent j, XmlContent k, XmlContent l+         , XmlContent m ) =>+         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l,m) where+    toContents (a,b,c,d,e,f,g,h,i,j,k,l,m)+        = toContents a ++ toContents b ++ toContents c ++ toContents d+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h+          ++ toContents i ++ toContents j ++ toContents k ++ toContents l+          ++ toContents m+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; d <- parseContents+        ; e <- parseContents+        ; f <- parseContents+        ; g <- parseContents+        ; h <- parseContents+        ; i <- parseContents+        ; j <- parseContents+        ; k <- parseContents+        ; l <- parseContents+        ; m <- parseContents+        ; return (a,b,c,d,e,f,g,h,i,j,k,l,m)+        }++instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h+         , XmlContent i, XmlContent j, XmlContent k, XmlContent l+         , XmlContent m, XmlContent n ) =>+         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l,m,n) where+    toContents (a,b,c,d,e,f,g,h,i,j,k,l,m,n)+        = toContents a ++ toContents b ++ toContents c ++ toContents d+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h+          ++ toContents i ++ toContents j ++ toContents k ++ toContents l+          ++ toContents m ++ toContents n+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; d <- parseContents+        ; e <- parseContents+        ; f <- parseContents+        ; g <- parseContents+        ; h <- parseContents+        ; i <- parseContents+        ; j <- parseContents+        ; k <- parseContents+        ; l <- parseContents+        ; m <- parseContents+        ; n <- parseContents+        ; return (a,b,c,d,e,f,g,h,i,j,k,l,m,n)+        }++instance ( XmlContent a, XmlContent b, XmlContent c, XmlContent d+         , XmlContent e, XmlContent f, XmlContent g, XmlContent h+         , XmlContent i, XmlContent j, XmlContent k, XmlContent l+         , XmlContent m, XmlContent n, XmlContent o ) =>+         XmlContent (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) where+    toContents (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)+        = toContents a ++ toContents b ++ toContents c ++ toContents d+          ++ toContents e ++ toContents f ++ toContents g ++ toContents h+          ++ toContents i ++ toContents j ++ toContents k ++ toContents l+          ++ toContents m ++ toContents n ++ toContents o+    parseContents = do+        { a <- parseContents+        ; b <- parseContents+        ; c <- parseContents+        ; d <- parseContents+        ; e <- parseContents+        ; f <- parseContents+        ; g <- parseContents+        ; h <- parseContents+        ; i <- parseContents+        ; j <- parseContents+        ; k <- parseContents+        ; l <- parseContents+        ; m <- parseContents+        ; n <- parseContents+        ; o <- parseContents+        ; return (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)+        }+++------------------------------------------------------------------------+-- Useful auxiliaries for "fromAttributes"+------------------------------------------------------------------------++-- | If an attribute is defaultable, then it either takes the default+--   value (which is omitted from the output), or a non-default value+--   (which obviously must be printed).+data Defaultable a  = Default a    | NonDefault a    deriving (Eq,Show)++searchMaybe :: (a -> Maybe b) -> [a] -> Maybe b+searchMaybe _ [] = Nothing+searchMaybe f (x:xs) =+    let fx = f x in+    case fx of+      Nothing  -> searchMaybe f xs+      (Just _) -> fx++maybeToAttr :: (String->a->Maybe Attribute) -> String -> Maybe a+               -> Maybe Attribute+maybeToAttr _ _ Nothing  = Nothing+maybeToAttr to n (Just v) = to n v++defaultToAttr :: (String->a->Maybe Attribute) -> String -> Defaultable a+                 -> Maybe Attribute+defaultToAttr _ _ (Default _)  = Nothing+defaultToAttr to n (NonDefault v) = to n v++definiteA :: (String->Attribute->Maybe a) -> String -> String+             -> [Attribute] -> a+definiteA from tag at as =+    case searchMaybe (from at) as of+      Nothing  -> error ("missing attribute "++at++" in tag <"++tag++">")+      (Just a) -> a++defaultA :: (String->Attribute->Maybe a) -> a -> String+            -> [Attribute] -> Defaultable a+defaultA from def at as =+    case searchMaybe (from at) as of+      Nothing  -> Default def+      (Just a) -> NonDefault a++possibleA :: (String->Attribute->Maybe a) -> String -> [Attribute] -> Maybe a+possibleA from at as = searchMaybe (from at) as++fromAttrToStr :: String -> Attribute -> Maybe String+fromAttrToStr n (n0,v)+        | n == n0   = Just (attr2str v)+        | otherwise = Nothing++toAttrFrStr   :: String -> String -> Maybe Attribute+toAttrFrStr n v = Just (n, str2attr v)++str2attr :: String -> AttValue+str2attr s =+    let f t =+          let (l,r) = span (\c-> not (elem c "\"&<>'")) t+          in if null r then [Left l]+             else Left l: Right (g (head r)): f (tail r)+        g '"'  = RefEntity "quot"+        g '&'  = RefEntity "amp"+        g '<'  = RefEntity "lt"+        g '>'  = RefEntity "gt"+        g '\'' = RefEntity "apos"+    in AttValue (f s)++attr2str :: AttValue -> String          -- really needs symbol table+attr2str (AttValue xs) =+    let f (Left s) = s+        f (Right (RefChar i))        = [chr i]+        f (Right (RefEntity "quot")) = "\""+        f (Right (RefEntity "amp"))  = "&"+        f (Right (RefEntity "lt"))   = "<"+        f (Right (RefEntity "gt"))   = ">"+        f (Right (RefEntity "apos")) = "'"+        f (Right _)                  = "*"  -- Ooops, ST needed here.+    in concatMap f xs++------------------------------------------------------------------------+--  New content-model types+------------------------------------------------------------------------++{-+data OneOf2 a b+data OneOf3 a b c+data OneOf4 a b c d+    ... etc are now defined (with instances) in module OneOfN.+-}++-- | A type corresponding to XML's ANY contentspec.+--   It is either a list of unconverted xml 'Content'+--   or some 'XmlContent'-able value.+--+-- Parsing functions (e.g. 'parseContents') will always produce 'UnConverted'.+-- Note: The Show instance for 'UnConverted' uses 'verbatim'.+data ANYContent = forall a . (XmlContent a, Show a) => ANYContent a+                | UnConverted [Content Posn]++instance Show ANYContent where+    show (UnConverted c) = "UnConverted " ++ (show $ map verbatim c)+    show (ANYContent a)  = "ANYContent " ++ (show a)++instance Eq ANYContent where+    a == b = show a == show b++-- | The List1 type represents lists with at least one element.+--   It is required for DTD content models that use + as a modifier.+data List1 a = NonEmpty [a]  deriving (Eq, Show)+++------------------------------------------------------------------------+--  Instances for new content-model types+------------------------------------------------------------------------+instance (HTypeable a) => HTypeable (List1 a) where+    toHType m  = Defined "List1" [hx]+                         [Constr "NonEmpty" [hx] [List hx] {-Nothing-}]+               where (NonEmpty x) = m+                     hx = toHType x+instance (XmlContent a) => XmlContent (List1 a) where+    toContents (NonEmpty xs) = concatMap toContents xs+    parseContents = fmap NonEmpty $ many1 parseContents++instance HTypeable ANYContent where+    toHType _      = Prim "ANYContent" "ANY"+instance XmlContent ANYContent where+    toContents (ANYContent a)  = toContents a+    toContents (UnConverted s) = map (fmap (const ())) s+    parseContents = P (\cs -> (Right (UnConverted cs), []))++------------------------------------------------------------------------+--+------------------------------------------------------------------------