xmlgen-0.6.2.2: Fast XML generation library
Safe HaskellNone
LanguageHaskell2010

Text.XML.Generator

Description

This module provides combinators for generating XML documents.

As an example, suppose you want to generate the following XML document:

<?xml version="1.0"?>
<people>
  <person age="32">Stefan</person>
  <person age="4">Judith</person>
</people>

Then you could use the following Haskell code:

let people = [("Stefan", "32"), ("Judith", "4")]
in doc defaultDocInfo $
     xelem "people" $
       xelems $ map ((name, age) -> xelem "person" (xattr "age" age <#> xtext name)) people
Synopsis

General

data Xml t Source #

The type Xml t represent a piece of XML of type t, where t is usually one of Elem, Attr, or Doc.

Instances

Instances details
Semigroup (Xml Attr) Source # 
Instance details

Defined in Text.XML.Generator

Methods

(<>) :: Xml Attr -> Xml Attr -> Xml Attr #

sconcat :: NonEmpty (Xml Attr) -> Xml Attr

stimes :: Integral b => b -> Xml Attr -> Xml Attr

Semigroup (Xml Elem) Source # 
Instance details

Defined in Text.XML.Generator

Methods

(<>) :: Xml Elem -> Xml Elem -> Xml Elem #

sconcat :: NonEmpty (Xml Elem) -> Xml Elem

stimes :: Integral b => b -> Xml Elem -> Xml Elem

Monoid (Xml Attr) Source # 
Instance details

Defined in Text.XML.Generator

Monoid (Xml Elem) Source # 
Instance details

Defined in Text.XML.Generator

AddChildren (Xml Attr) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: Xml Attr -> NsEnv -> Builder

AddChildren (Xml Elem) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: Xml Elem -> NsEnv -> Builder

AddChildren (Xml Attr, [Xml Elem]) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: (Xml Attr, [Xml Elem]) -> NsEnv -> Builder

AddChildren (Xml Attr, Xml Elem) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: (Xml Attr, Xml Elem) -> NsEnv -> Builder

Documents

data Doc Source #

A piece of XML at the document level.

Instances

Instances details
Renderable Doc Source # 
Instance details

Defined in Text.XML.Generator

Misc Doc Source # 
Instance details

Defined in Text.XML.Generator

Methods

xprocessingInstruction :: String -> String -> Xml Doc Source #

xcomment :: String -> Xml Doc Source #

data DocInfo Source #

The DocInfo type contains all information of an XML document except the root element.

Constructors

DocInfo 

Fields

doc :: DocInfo -> Xml Elem -> Xml Doc Source #

Constructs an XML document from a DocInfo value and the root element.

defaultDocInfo :: DocInfo Source #

The default document info (standalone, without document type, without content before/after the root element).

Namespaces

data Namespace Source #

Type for representing presence or absence of an XML namespace.

Instances

Instances details
Eq Namespace Source # 
Instance details

Defined in Text.XML.Generator

Methods

(==) :: Namespace -> Namespace -> Bool

(/=) :: Namespace -> Namespace -> Bool

Show Namespace Source # 
Instance details

Defined in Text.XML.Generator

Methods

showsPrec :: Int -> Namespace -> ShowS

show :: Namespace -> String

showList :: [Namespace] -> ShowS

type Prefix = Text Source #

Namespace prefix.

type Uri = Text Source #

Namespace URI.

type Name = Text Source #

A type for names

namespace :: Prefix -> Uri -> Namespace Source #

Constructs a qualified XML namespace. The given URI must not be the empty string.

noNamespace :: Namespace Source #

A Namespace value denoting the absence of any XML namespace information.

defaultNamespace :: Namespace Source #

A Namespace value denoting the default namespace.

  • For elements, this is the namespace currently mapped to the empty prefix.
  • For attributes, the default namespace does not carry any namespace information.

Elements

data Elem Source #

A piece of XML at the element level.

Instances

Instances details
Renderable Elem Source # 
Instance details

Defined in Text.XML.Generator

Misc Elem Source # 
Instance details

Defined in Text.XML.Generator

Methods

xprocessingInstruction :: String -> String -> Xml Elem Source #

xcomment :: String -> Xml Elem Source #

Semigroup (Xml Elem) Source # 
Instance details

Defined in Text.XML.Generator

Methods

(<>) :: Xml Elem -> Xml Elem -> Xml Elem #

sconcat :: NonEmpty (Xml Elem) -> Xml Elem

stimes :: Integral b => b -> Xml Elem -> Xml Elem

Monoid (Xml Elem) Source # 
Instance details

Defined in Text.XML.Generator

AddChildren (Xml Elem) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: Xml Elem -> NsEnv -> Builder

AddChildren (Xml Attr, [Xml Elem]) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: (Xml Attr, [Xml Elem]) -> NsEnv -> Builder

AddChildren (Xml Attr, Xml Elem) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: (Xml Attr, Xml Elem) -> NsEnv -> Builder

xelem :: AddChildren c => Name -> c -> Xml Elem Source #

Construct a simple-named element with the given children.

xelemQ :: AddChildren c => Namespace -> Name -> c -> Xml Elem Source #

Construct an element with the given children.

xelemEmpty :: Name -> Xml Elem Source #

Construct a simple-named element without any children.

xelemQEmpty :: Namespace -> Name -> Xml Elem Source #

Construct an element without any children.

class AddChildren c Source #

Class for adding children to an element.

The various instances of this class allow the addition of different kinds of children.

Minimal complete definition

addChildren

Instances

Instances details
AddChildren () Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: () -> NsEnv -> Builder

AddChildren String Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: String -> NsEnv -> Builder

AddChildren TextContent Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: TextContent -> NsEnv -> Builder

AddChildren (Xml Attr) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: Xml Attr -> NsEnv -> Builder

AddChildren (Xml Elem) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: Xml Elem -> NsEnv -> Builder

AddChildren (Xml Attr, [Xml Elem]) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: (Xml Attr, [Xml Elem]) -> NsEnv -> Builder

AddChildren (Xml Attr, Xml Elem) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: (Xml Attr, Xml Elem) -> NsEnv -> Builder

xelems :: [Xml Elem] -> Xml Elem Source #

Merges a list of elements into a single piece of XML at the element level.

noElems :: Xml Elem Source #

No elements at all.

xelemWithText :: Name -> TextContent -> Xml Elem Source #

The expression xelemWithText n t constructs an XML element with name n and text content t.

(<>) :: Semigroup a => a -> a -> a #

(<#>) :: a -> b -> (a, b) infixl 5 Source #

Shortcut for constructing pairs. Used in combination with xelem for separating child-attributes from child-elements.

Attributes

data Attr Source #

A piece of XML at the attribute level.

Instances

Instances details
Renderable Attr Source # 
Instance details

Defined in Text.XML.Generator

Semigroup (Xml Attr) Source # 
Instance details

Defined in Text.XML.Generator

Methods

(<>) :: Xml Attr -> Xml Attr -> Xml Attr #

sconcat :: NonEmpty (Xml Attr) -> Xml Attr

stimes :: Integral b => b -> Xml Attr -> Xml Attr

Monoid (Xml Attr) Source # 
Instance details

Defined in Text.XML.Generator

AddChildren (Xml Attr) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: Xml Attr -> NsEnv -> Builder

AddChildren (Xml Attr, [Xml Elem]) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: (Xml Attr, [Xml Elem]) -> NsEnv -> Builder

AddChildren (Xml Attr, Xml Elem) Source # 
Instance details

Defined in Text.XML.Generator

Methods

addChildren :: (Xml Attr, Xml Elem) -> NsEnv -> Builder

xattr :: Name -> TextContent -> Xml Attr Source #

Construct a simple-named attribute by escaping its value.

xattrQ :: Namespace -> Name -> TextContent -> Xml Attr Source #

Construct an attribute by escaping its value.

xattrQRaw :: Namespace -> Name -> Builder -> Xml Attr Source #

Construct an attribute without escaping its value. Note: attribute values are quoted with double quotes.

xattrs :: [Xml Attr] -> Xml Attr Source #

Merge a list of attributes into a single piece of XML at the attribute level.

noAttrs :: Xml Attr Source #

The empty attribute list.

Text

type TextContent = Text Source #

Text content subject to escaping.

xtext :: TextContent -> Xml Elem Source #

Constructs a text node by escaping the given argument.

xtextRaw :: Builder -> Xml Elem Source #

Constructs a text node without escaping the given argument.

xentityRef :: Name -> Xml Elem Source #

Constructs a reference to the named entity. Note: no escaping is performed on the name of the entity

Other

xempty :: Renderable t => Xml t Source #

An empty, polymorphic piece of XML.

class Renderable t => Misc t where Source #

Class providing methods for adding processing instructions and comments.

Minimal complete definition

Nothing

Methods

xprocessingInstruction :: String -> String -> Xml t Source #

Constructs a processing instruction with the given target and content. Note: Rendering does not perform escaping on the target and the content.

xcomment :: String -> Xml t Source #

Constructs an XML comment. Note: No escaping is performed on the text of the comment.

Instances

Instances details
Misc Doc Source # 
Instance details

Defined in Text.XML.Generator

Methods

xprocessingInstruction :: String -> String -> Xml Doc Source #

xcomment :: String -> Xml Doc Source #

Misc Elem Source # 
Instance details

Defined in Text.XML.Generator

Methods

xprocessingInstruction :: String -> String -> Xml Elem Source #

xcomment :: String -> Xml Elem Source #

Rendering

xrender :: (Renderable r, XmlOutput t) => Xml r -> t Source #

Renders a given piece of XML.

class XmlOutput t where Source #

Instances of the XmlOutput class may serve as target of serializing an XML document.

Methods

fromBuilder :: Builder -> t Source #

Creates the target type from a Builder.

Instances

Instances details
XmlOutput ByteString Source # 
Instance details

Defined in Text.XML.Generator

Methods

fromBuilder :: Builder -> ByteString Source #

XmlOutput ByteString Source # 
Instance details

Defined in Text.XML.Generator

Methods

fromBuilder :: Builder -> ByteString Source #

XmlOutput Builder Source # 
Instance details

Defined in Text.XML.Generator

class Renderable t Source #

Any type subject to rendering must implement this type class.

Minimal complete definition

builder, mkRenderable

Instances

Instances details
Renderable Doc Source # 
Instance details

Defined in Text.XML.Generator

Renderable Attr Source # 
Instance details

Defined in Text.XML.Generator

Renderable Elem Source # 
Instance details

Defined in Text.XML.Generator

XHTML documents

xhtmlFramesetDocInfo :: DocInfo Source #

Document info for XHTML 1.0 frameset.

xhtmlStrictDocInfo :: DocInfo Source #

Document info for XHTML 1.0 strict.

xhtmlTransitionalDocInfo :: DocInfo Source #

Document info for XHTML 1.0 transitional.

xhtmlRootElem :: Text -> Xml Elem -> Xml Elem Source #

Constructs the root element of an XHTML document.