Text.XML.Expat.Format

hexpat-0.20.9: XML parser/formatter based on expat

Safe Haskell | None
Language | Haskell98

Text.XML.Expat.Format

Contents

- High level
- Format document (for use with Extended.hs)
- Low level
- Indentation

Description

This module provides functions to format a tree structure or SAX stream as UTF-8 encoded XML.

The formatting functions always outputs only UTF-8, regardless of what encoding is specified in the document's `XMLDeclaration`. If you want to output a document in another encoding, then make sure the `XMLDeclaration` agrees with the final output encoding, then format the document, and convert from UTF-8 to your desired encoding using some text conversion library.

The lazy `ByteString` representation of the output in generated with very small chunks, so in some applications you may want to combine them into larger chunks to get better efficiency.

Synopsis

- format :: (NodeClass n [], GenericXMLString tag, GenericXMLString text) => n [] tag text -> ByteString
- format' :: (NodeClass n [], GenericXMLString tag, GenericXMLString text) => n [] tag text -> ByteString
- formatG :: (NodeClass n c, GenericXMLString tag, GenericXMLString text) => n c tag text -> c ByteString
- formatNode :: (NodeClass n [], GenericXMLString tag, GenericXMLString text) => n [] tag text -> ByteString
- formatNode' :: (NodeClass n [], GenericXMLString tag, GenericXMLString text) => n [] tag text -> ByteString
- formatNodeG :: (NodeClass n c, GenericXMLString tag, GenericXMLString text) => n c tag text -> c ByteString
- formatDocument :: (DocumentClass d [], GenericXMLString tag, GenericXMLString text) => d [] tag text -> ByteString
- formatDocument' :: (DocumentClass d [], GenericXMLString tag, GenericXMLString text) => d [] tag text -> ByteString
- formatDocumentG :: (DocumentClass d c, GenericXMLString tag, GenericXMLString text) => d c tag text -> c ByteString
- xmlHeader :: ByteString
- treeToSAX :: forall tag text n c. (GenericXMLString tag, GenericXMLString text, Monoid text, NodeClass n c) => n c tag text -> c (SAXEvent tag text)
- documentToSAX :: forall tag text d c. (GenericXMLString tag, GenericXMLString text, Monoid text, DocumentClass d c) => d c tag text -> c (SAXEvent tag text)
- formatSAX :: (GenericXMLString tag, GenericXMLString text) => [SAXEvent tag text] -> ByteString
- formatSAX' :: (GenericXMLString tag, GenericXMLString text) => [SAXEvent tag text] -> ByteString
- formatSAXG :: forall c tag text. (List c, GenericXMLString tag, GenericXMLString text) => c (SAXEvent tag text) -> c ByteString
- indent :: (NodeClass n c, GenericXMLString tag, GenericXMLString text) => Int -> n c tag text -> n c tag text
- indent_ :: forall n c tag text. (NodeClass n c, GenericXMLString tag, GenericXMLString text) => Int -> Int -> n c tag text -> n c tag text

# High level

format :: (NodeClass n [], GenericXMLString tag, GenericXMLString text) => n [] tag text -> ByteString

Format document with <?xml.. header - lazy variant that returns lazy ByteString.

format' :: (NodeClass n [], GenericXMLString tag, GenericXMLString text) => n [] tag text -> ByteString

Format document with <?xml.. header - strict variant that returns strict ByteString.

formatG :: (NodeClass n c, GenericXMLString tag, GenericXMLString text) => n c tag text -> c ByteString

Format document with <?xml.. header - generalized variant that returns a generic list of strict ByteStrings.

formatNode :: (NodeClass n [], GenericXMLString tag, GenericXMLString text) => n [] tag text -> ByteString

Format XML node with no header - lazy variant that returns lazy ByteString.

formatNode' :: (NodeClass n [], GenericXMLString tag, GenericXMLString text) => n [] tag text -> ByteString

Format XML node with no header - strict variant that returns strict ByteString.

formatNodeG :: (NodeClass n c, GenericXMLString tag, GenericXMLString text) => n c tag text -> c ByteString

Format XML node with no header - generalized variant that returns a generic list of strict ByteStrings.

# Format document (for use with Extended.hs)

formatDocument :: (DocumentClass d [], GenericXMLString tag, GenericXMLString text) => d [] tag text -> ByteString

Format an XML document - lazy variant that returns lazy ByteString.

formatDocument' :: (DocumentClass d [], GenericXMLString tag, GenericXMLString text) => d [] tag text -> ByteString

Format an XML document - strict variant that returns strict ByteString.

formatDocumentG :: (DocumentClass d c, GenericXMLString tag, GenericXMLString text) => d c tag text -> c ByteString

Format an XML document - generalized variant that returns a generic list of strict ByteStrings.

# Low level

xmlHeader :: ByteString

The standard XML header with UTF-8 encoding.

treeToSAX :: forall tag text n c. (GenericXMLString tag, GenericXMLString text, Monoid text, NodeClass n c) => n c tag text -> c (SAXEvent tag text)

Flatten a tree structure into SAX events, monadic version.

documentToSAX :: forall tag text d c. (GenericXMLString tag, GenericXMLString text, Monoid text, DocumentClass d c) => d c tag text -> c (SAXEvent tag text)

formatSAX :: (GenericXMLString tag, GenericXMLString text) => [SAXEvent tag text] -> ByteString

Format SAX events with no header - lazy variant that returns lazy ByteString.

formatSAX' :: (GenericXMLString tag, GenericXMLString text) => [SAXEvent tag text] -> ByteString

Format SAX events with no header - strict variant that returns strict ByteString.

formatSAXG

Arguments

:: (List c, GenericXMLString tag, GenericXMLString text) |
=> c (SAXEvent tag text) | SAX events
-> c ByteString |

Format SAX events with no header - generalized variant that uses generic list.

# Indentation

indent

Arguments

:: (NodeClass n c, GenericXMLString tag, GenericXMLString text) |
=> Int | Number of indentation spaces per nesting level
-> n c tag text |
-> n c tag text |

Make the output prettier by adding indentation.

indent_

Arguments

:: (NodeClass n c, GenericXMLString tag, GenericXMLString text) |
=> Int | Initial indent (spaces)
-> Int | Number of indentation spaces per nesting level
-> n c tag text |
-> n c tag text |

Make the output prettier by adding indentation, specifying initial indent.