sig
  type uri
  val string_of_uri : uri -> string
  val uri_of_string : string -> uri
  type aname = string
  type event_handler
  type attrib
  val float_attrib : aname -> float -> attrib
  val int_attrib : aname -> int -> attrib
  val string_attrib : aname -> string -> attrib
  val space_sep_attrib : aname -> string list -> attrib
  val comma_sep_attrib : aname -> string list -> attrib
  val event_handler_attrib : aname -> event_handler -> attrib
  val uri_attrib : aname -> uri -> attrib
  val uris_attrib : aname -> uri list -> attrib
  type elt
  type ename = string
  val empty : unit -> elt
  val comment : string -> elt
  val pcdata : string -> elt
  val encodedpcdata : string -> elt
  val entity : string -> elt
  val leaf : ?a:attrib list -> ename -> elt
  val node : ?a:attrib list -> ename -> elt list -> elt
  val cdata : string -> elt
  val cdata_script : string -> elt
  val cdata_style : string -> elt
  type separator = Space | Comma
  val aname : attrib -> aname
  type acontent = private
      AFloat of float
    | AInt of int
    | AStr of string
    | AStrL of XML_sigs.Iterable.separator * string list
  val acontent : attrib -> XML_sigs.Iterable.acontent
  type econtent = private
      Empty
    | Comment of string
    | EncodedPCDATA of string
    | PCDATA of string
    | Entity of string
    | Leaf of ename * attrib list
    | Node of ename * attrib list * elt list
  val content : elt -> XML_sigs.Iterable.econtent
end