sig
  type document =
      Element of (string * (string * string) list * Nethtml.document list)
    | Data of string
  type element_class =
    [ `Block | `Essential_block | `Everywhere | `Inline | `None ]
  type model_constraint =
    [ `Any
    | `Block
    | `Elements of string list
    | `Empty
    | `Except of Nethtml.model_constraint * Nethtml.model_constraint
    | `Flow
    | `Inline
    | `Or of Nethtml.model_constraint * Nethtml.model_constraint
    | `Special
    | `Sub_exclusions of string list * Nethtml.model_constraint ]
  type simplified_dtd =
    (string * (Nethtml.element_class * Nethtml.model_constraint)) list
  val html40_dtd : Nethtml.simplified_dtd
  val relaxed_html40_dtd : Nethtml.simplified_dtd
  val parse_document :
    ?dtd:Nethtml.simplified_dtd ->
    ?return_declarations:bool ->
    ?return_pis:bool ->
    ?return_comments:bool -> Lexing.lexbuf -> Nethtml.document list
  val parse :
    ?dtd:Nethtml.simplified_dtd ->
    ?return_declarations:bool ->
    ?return_pis:bool ->
    ?return_comments:bool ->
    Netchannels.in_obj_channel -> Nethtml.document list
  val decode :
    ?enc:Netconversion.encoding ->
    ?subst:(int -> string) -> Nethtml.document list -> Nethtml.document list
  val encode :
    ?enc:Netconversion.encoding ->
    ?prefer_name:bool -> Nethtml.document list -> Nethtml.document list
  val map_list :
    (string -> string) -> Nethtml.document list -> Nethtml.document list
  val write :
    ?dtd:Nethtml.simplified_dtd ->
    Netchannels.out_obj_channel -> Nethtml.document list -> unit
end