sig
  type attr = string * string
  type t =
      Tag of string * Xmlerr.attr list
    | ETag of string
    | Data of string
    | Comm of string
  type src = {
    len : unit -> int;
    get_char : int -> char;
    sub : int -> int -> string;
  }
  val string_input : string -> Xmlerr.src
  val ic_input : Stdlib.in_channel -> Xmlerr.src
  val parse : Xmlerr.src -> Xmlerr.t list
  val parse_rev : Xmlerr.src -> Xmlerr.t list
  val parse_f : '-> (Xmlerr.t -> '-> 'a) -> Xmlerr.src -> 'a
  val parse_string : string -> Xmlerr.t list
  val parse_file : filename:string -> Xmlerr.t list
  val strip_space : Xmlerr.t list -> Xmlerr.t list
  val x_lowercase : Xmlerr.t list -> Xmlerr.t list
  val print_html : Xmlerr.t list -> unit
  val print_code : Xmlerr.t list -> unit
  val read_file : string -> string
  val input_ic : Stdlib.in_channel -> string
  val parse_stdin : unit -> Xmlerr.t list
  val parse_ic : Stdlib.in_channel -> Xmlerr.t list
end