sig
  type attrib
  type aname = string
  val int_attrib : XML.aname -> int -> XML.attrib
  val string_attrib : XML.aname -> string -> XML.attrib
  val space_sep_attrib : XML.aname -> string list -> XML.attrib
  val comma_sep_attrib : XML.aname -> string list -> XML.attrib
  val get_int_attrib : XML.aname -> XML.attrib list -> int
  val get_string_attrib : XML.aname -> XML.attrib list -> string
  val get_attrib_list : XML.aname -> XML.attrib list -> string list
  type elt
  type ename = string
  val empty : unit -> XML.elt
  val comment : string -> XML.elt
  val pcdata : string -> XML.elt
  val entity : string -> XML.elt
  val leaf : ?a:XML.attrib list -> XML.ename -> XML.elt
  val node : ?a:XML.attrib list -> XML.ename -> XML.elt list -> XML.elt
  val encode_unsafe : string -> string
  val encode_unsafe_and_at : string -> string
  val output :
    ?preformatted:XML.ename list ->
    ?no_break:XML.ename list ->
    ?encode:(string -> string) -> (string -> unit) -> XML.elt -> unit
  val pretty_print :
    ?width:int ->
    ?preformatted:XML.ename list ->
    ?no_break:XML.ename list ->
    ?encode:(string -> string) -> (string -> unit) -> XML.elt -> unit
  val decl :
    ?version:string -> ?encoding:string -> (string -> unit) -> unit -> unit
  type attribs = XML.attrib list
  val amap : (XML.ename -> XML.attribs -> XML.attribs) -> XML.elt -> XML.elt
  val amap1 : (XML.ename -> XML.attribs -> XML.attribs) -> XML.elt -> XML.elt
  val rm_attrib : (XML.aname -> bool) -> XML.attribs -> XML.attribs
  val rm_attrib_from_list :
    (XML.aname -> bool) -> (string -> bool) -> XML.attribs -> XML.attribs
  val map_int_attrib :
    (XML.aname -> bool) -> (int -> int) -> XML.attribs -> XML.attribs
  val map_string_attrib :
    (XML.aname -> bool) -> (string -> string) -> XML.attribs -> XML.attribs
  val map_string_attrib_in_list :
    (XML.aname -> bool) -> (string -> string) -> XML.attribs -> XML.attribs
  val add_int_attrib : XML.aname -> int -> XML.attribs -> XML.attribs
  val add_string_attrib : XML.aname -> string -> XML.attribs -> XML.attribs
  val add_comma_sep_attrib :
    XML.aname -> string -> XML.attribs -> XML.attribs
  val add_space_sep_attrib :
    XML.aname -> string -> XML.attribs -> XML.attribs
  val fold :
    (unit -> 'a) ->
    (string -> 'a) ->
    (string -> 'a) ->
    (string -> 'a) ->
    (XML.ename -> XML.attrib list -> 'a) ->
    (XML.ename -> XML.attrib list -> 'a list -> 'a) -> XML.elt -> 'a
  val all_int_attribs :
    ?is_elt:(string -> bool) -> string -> XML.elt -> int list
  val all_string_attribs :
    ?is_elt:(string -> bool) -> string -> XML.elt -> string list
  val all_attribs_list :
    ?is_elt:(string -> bool) -> string -> XML.elt -> string list list
  val all_entities : XML.elt -> string list
  val translate :
    (XML.ename -> XML.attrib list -> XML.elt) ->
    (XML.ename -> XML.attrib list -> XML.elt list -> XML.elt) ->
    ('-> XML.ename -> XML.attrib list -> XML.elt list) ->
    ('-> XML.ename -> XML.attrib list -> XML.elt list -> XML.elt list) ->
    (XML.ename -> XML.attrib list -> '-> 'a) -> '-> XML.elt -> XML.elt
end