# Functor Xmlm.Make

    module Make: functor (String : String) -> functor (Buffer : Buffer  with type string = String.t) -> S
      with type string = String.t

Functor building streaming XML IO with the given strings and buffers.

Parameters:

`String` | : | `String`
`Buffer` | : | `Buffer with type string = String.t`

# Basic types and values

    type string

    type encoding = [ `ISO_8859_1 | `US_ASCII | `UTF_16 | `UTF_16BE | `UTF_16LE | `UTF_8 ]

    type dtd = string option

    type name = string * string

    type attribute = name * string

    type tag = name * attribute list

    type signal = [ `Data of string
           | `Dtd of dtd
           | `El_end
           | `El_start of tag ]

    val ns_xml : string

    val ns_xmlns : string

# Input

    type pos = int * int

    type error = [ `Expected_char_seqs of string list * string
           | `Expected_root_element
           | `Illegal_char_ref of string
           | `Illegal_char_seq of string
           | `Malformed_char_stream
           | `Max_buffer_size
           | `Unexpected_eoi
           | `Unknown_encoding of string
           | `Unknown_entity_ref of string
           | `Unknown_ns_prefix of string ]

    exception Error of pos * error

    val error_message : error -> string

    type source = [ `Channel of Pervasives.in_channel
           | `Fun of unit -> int
           | `String of int * Xmlm.std_string ]

    type input

    val make_input : ?enc:encoding option ->
           ?strip:bool ->
           ?ns:(string -> string option) ->
           ?entity:(string -> string option) ->
           source -> input

    val input : input -> signal

    val input_tree : el:(tag -> 'a list -> 'a) ->
           data:(string -> 'a) -> input -> 'a

    val input_doc_tree : el:(tag -> 'a list -> 'a) ->
           data:(string -> 'a) -> input -> dtd * 'a

    val peek : input -> signal

    val eoi : input -> bool

    val pos : input -> pos

# Output

    type 'a frag = [ `Data of string | `El of tag * 'a list ]

    type dest = [ `Buffer of Xmlm.std_buffer
           | `Channel of Pervasives.out_channel
           | `Fun of int -> unit ]

    type output

    val make_output : ?decl:bool ->
           ?nl:bool ->
           ?indent:int option ->
           ?ns_prefix:(string -> string option) ->
           dest -> output

    val output_depth : output -> int

    val output : output -> signal -> unit

    val output_tree : ('a -> 'a frag) -> output -> 'a -> unit

    val output_doc_tree : ('a -> 'a frag) -> output -> dtd * 'a -> unit