sig
  type cdata = string
  type id = string
  type idref = string
  type idrefs = idref list
  type name = string
  type nmtoken = string
  type nmtokens = nmtoken list
  type pcdata = string
  type character = char
  type charset = string
  type charsets = charset list
  type color =
      [ `Aqua
      | `Black
      | `Blue
      | `Fuchsia
      | `Gray
      | `Green
      | `Hex of string
      | `Lime
      | `Maroon
      | `Navy
      | `Olive
      | `Purple
      | `RGB of int * int * int
      | `Red
      | `Silver
      | `Teal
      | `White
      | `Yellow ]
  type contenttype = string
  type contenttypes = contenttype list
  type coords = string list
  type datetime = string
  type fpi = string
  type frametarget = string
  type languagecode = string
  type length = [ `Percent of int | `Pixels of int ]
  type linktypes =
      [ `Alternate
      | `Appendix
      | `Bookmark
      | `Chapter
      | `Contents
      | `Copyright
      | `Glossary
      | `Help
      | `Index
      | `Next
      | `Prev
      | `Section
      | `Start
      | `Stylesheet
      | `Subsection ] list
  type mediadesc =
      [ `All
      | `Aural
      | `Braille
      | `Handheld
      | `Print
      | `Projection
      | `Screen
      | `TTY
      | `TV ] list
  type multilength = [ `Percent of int | `Pixels of int | `Relative of int ]
  type multilengths = multilength list
  type number = int
  type pixels = int
  type script = string
  type shape = string
  type text = string
  type uri = string
  type uris = uri
  type 'a attrib
  type 'a attribs
  type core = [ `Class | `Id | `Title ]
  val a_class : nmtokens -> [> `Class ] attrib
  val a_id : id -> [> `Id ] attrib
  val a_title : cdata -> [> `Title ] attrib
  type i18n = [ `XML_lang ]
  val a_xml_lang : nmtoken -> [> `XML_lang ] attrib
  type common = [ `Class | `Id | `Title | `XML_lang ]
  module STRUCTURE : sig type t = [ `Body | `Head | `Html | `Title ] end
  val a_profile : uri -> [> `Profile ] attrib
  val a_version : cdata -> [> `Version ] attrib
  val a_xmlns : [< `W3_org_1999_xhtml ] -> [> `XMLns ] attrib
  module TEXT :
    sig
      type heading = [ `H1 | `H2 | `H3 | `H4 | `H5 | `H6 ]
      type block = [ `Address | `Blockquote | `Div | `P | `Pre ]
      type inline =
          [ `Abbr
          | `Acronym
          | `Br
          | `Cite
          | `Code
          | `Dfn
          | `Em
          | `Kbd
          | `Q
          | `Samp
          | `Span
          | `Strong
          | `Var ]
      type flow =
          [ `Abbr
          | `Acronym
          | `Address
          | `Blockquote
          | `Br
          | `Cite
          | `Code
          | `Dfn
          | `Div
          | `Em
          | `H1
          | `H2
          | `H3
          | `H4
          | `H5
          | `H6
          | `Kbd
          | `P
          | `Pre
          | `Q
          | `Samp
          | `Span
          | `Strong
          | `Var ]
    end
  val a_cite : uri -> [> `Cite ] attrib
  val a_xml_space : [< `Preserve ] -> [> `XML_space ] attrib
  module HYPERTEXT : sig type inline = [ `A ] type flow = inline end
  val a_accesskey : character -> [> `Accesskey ] attrib
  val a_charset : charset -> [> `Charset ] attrib
  val a_href : uri -> [> `Href ] attrib
  val a_hreflang : languagecode -> [> `Hreflang ] attrib
  val a_rel : linktypes -> [> `Rel ] attrib
  val a_rev : linktypes -> [> `Rev ] attrib
  val a_tabindex : number -> [> `Tabindex ] attrib
  val a_type : contenttype -> [> `Type ] attrib
  module LIST :
    sig
      type list = [ `Dl | `Ol | `Ul ]
      type t = [ `Dd | `Dt | `Li ]
      type flow = list
    end
  module PRESENTATION :
    sig
      type block = [ `Hr ]
      type inline = [ `B | `Big | `I | `Small | `Sub | `Sup | `Tt ]
    end
  module FORMS :
    sig
      type t = [ `Option ]
      type form = [ `Form ]
      type formctrl_sans_label = [ `Input | `Select | `Textarea ]
      type formctrl = [ `Input | `Label | `Select | `Textarea ]
      type block = form
      type inline_sans_label = formctrl_sans_label
      type inline = formctrl
      type flow_sans_label = [ `Form | `Input | `Select | `Textarea ]
      type flow = [ `Form | `Input | `Label | `Select | `Textarea ]
    end
  val a_action : uri -> [> `Action ] attrib
  val a_checked : [< `Checked ] -> [> `Checked ] attrib
  val a_cols : number -> [> `Cols ] attrib
  val a_enctype : contenttype -> [> `Enctype ] attrib
  val a_for : idref -> [> `For ] attrib
  val a_maxlength : number -> [> `Maxlength ] attrib
  val a_method : [< `Get | `Post ] -> [> `Method ] attrib
  val a_multiple : [< `Multiple ] -> [> `Multiple ] attrib
  val a_name : cdata -> [> `Name ] attrib
  val a_rows : number -> [> `Rows ] attrib
  val a_selected : [< `Selected ] -> [> `Selected ] attrib
  val a_size : number -> [> `Size ] attrib
  val a_src : uri -> [> `Src ] attrib
  val a_input_type :
    [< `Checkbox | `Hidden | `Password | `Radio | `Reset | `Submit | `Text ] ->
    [> `Input_Type ] attrib
  val a_value : cdata -> [> `Value ] attrib
  module TABLES :
    sig
      type t = [ `Caption | `Td | `Th | `Tr ]
      type block = [ `Table ]
      type flow = block
    end
  val a_abbr : text -> [> `Abbr ] attrib
  val a_align :
    [< `Center | `Char | `Justify | `Left | `Right ] -> [> `Align ] attrib
  val a_axis : cdata -> [> `Axis ] attrib
  val a_colspan : number -> [> `Colspan ] attrib
  val a_headers : idrefs -> [> `Headers ] attrib
  val a_rowspan : number -> [> `Rowspan ] attrib
  val a_scope :
    [< `Col | `Colgroup | `Row | `Rowgroup ] -> [> `Scope ] attrib
  val a_summary : text -> [> `Summary ] attrib
  val a_valign :
    [< `Baseline | `Bottom | `Middle | `Top ] -> [> `Valign ] attrib
  val a_border : pixels -> [> `Border ] attrib
  val a_cellpadding : length -> [> `Cellpadding ] attrib
  val a_cellspacing : length -> [> `Cellspacing ] attrib
  val a_datapagesize : cdata -> [> `Datapagesize ] attrib
  val a_frame :
    [< `Above
     | `Below
     | `Border
     | `Box
     | `Hsides
     | `LHS
     | `RHS
     | `Void
     | `Vsides ] ->
    [> `Frame ] attrib
  val a_rules :
    [< `All | `Cols | `Groups | `None | `Rows ] -> [> `Rules ] attrib
  val a_char : character -> [> `Char ] attrib
  val a_charoff : length -> [> `Charoff ] attrib
  module IMAGE : sig type inline = [ `Img ] end
  val a_alt : text -> [> `Alt ] attrib
  val a_height : length -> [> `Height ] attrib
  val a_longdesc : uri -> [> `Longdesc ] attrib
  val a_width : length -> [> `Width ] attrib
  val a_fs_rows : multilengths -> [> `FS_Rows ] attrib
  val a_fs_cols : multilengths -> [> `FS_Cols ] attrib
  val a_frameborder : [< `One | `Zero ] -> [> `Frameborder ] attrib
  val a_marginheight : pixels -> [> `Marginheight ] attrib
  val a_marginwidth : pixels -> [> `Marginwidth ] attrib
  val a_noresize : [< `Noresize ] -> [> `Noresize ] attrib
  val a_scrolling : [< `Auto | `No | `Yes ] -> [> `Scrolling ] attrib
  val a_target : frametarget -> [> `Target ] attrib
  module METAINFORMATION : sig type t = [ `Meta ] end
  val a_content : cdata -> [> `Content ] attrib
  val a_http_equiv : nmtoken -> [> `Http_equiv ] attrib
  val a_scheme : cdata -> [> `Scheme ] attrib
  module STYLE_SHEET : sig type t = [ `Style ] end
  val a_media : mediadesc -> [> `Media ] attrib
  module LINK : sig type t = [ `Link ] end
  module BASE : sig type t = [ `Base ] end
  type block =
      [ `Address | `Blockquote | `Div | `Form | `Hr | `P | `Pre | `Table ]
  type block_sans_form =
      [ `Address | `Blockquote | `Div | `Hr | `P | `Pre | `Table ]
  type flow =
      [ `A
      | `Abbr
      | `Acronym
      | `Address
      | `Blockquote
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Div
      | `Dl
      | `Em
      | `Form
      | `H1
      | `H2
      | `H3
      | `H4
      | `H5
      | `H6
      | `Input
      | `Kbd
      | `Label
      | `Ol
      | `P
      | `Pre
      | `Q
      | `Samp
      | `Select
      | `Span
      | `Strong
      | `Table
      | `Textarea
      | `Ul
      | `Var ]
  type flow_sans_table =
      [ `A
      | `Abbr
      | `Acronym
      | `Address
      | `Blockquote
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Div
      | `Dl
      | `Em
      | `Form
      | `H1
      | `H2
      | `H3
      | `H4
      | `H5
      | `H6
      | `Input
      | `Kbd
      | `Label
      | `Ol
      | `P
      | `Pre
      | `Q
      | `Samp
      | `Select
      | `Span
      | `Strong
      | `Textarea
      | `Ul
      | `Var ]
  type inline =
      [ `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ]
  type inline_sans_a =
      [ `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ]
  type inline_sans_label =
      [ `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ]
  type heading = TEXT.heading
  type 'a elt
  type ('a, 'b) nullary = ?a:'a attrib list -> unit -> 'b elt
  type ('a, 'b, 'c) unary = ?a:'a attrib list -> 'b elt -> 'c elt
  type ('a, 'b, 'c, 'd) binary =
      ?a:'a attrib list -> 'b elt -> 'c elt -> 'd elt
  type ('a, 'b, 'c) star = ?a:'a attrib list -> 'b elt list -> 'c elt
  type ('a, 'b, 'c) plus =
      ?a:'a attrib list -> 'b elt -> 'b elt list -> 'c elt
  type html = [ `Html ] elt
  val html :
    ?a:[< `Version | `XML_lang | `XMLns ] attrib list ->
    [< `Head ] elt -> [< `Body | `Frameset ] elt -> html
  val head :
    ([< `Profile | `XML_lang ], [< `Base | `Link | `Meta | `Style | `Title ],
     [> `Head ])
    plus
  val title : ([< i18n ], [< `PCDATA ], [> `Title ]) unary
  val body :
    ([< common ],
     [< `Address
      | `Blockquote
      | `Div
      | `Dl
      | `Form
      | `H1
      | `H2
      | `H3
      | `H4
      | `H5
      | `H6
      | `Hr
      | `Ol
      | `P
      | `Pre
      | `Table
      | `Ul ],
     [> `Body ])
    star
  val pcdata : string -> [> `PCDATA ] elt
  val entity : string -> [> `PCDATA ] elt
  val space : unit -> [> `PCDATA ] elt
  val h1 :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `H1 ])
    star
  val h2 :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `H2 ])
    star
  val h3 :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `H3 ])
    star
  val h4 :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `H4 ])
    star
  val h5 :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `H5 ])
    star
  val h6 :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `H6 ])
    star
  val address :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Address ])
    star
  val blockquote :
    ([< `Cite | `Class | `Id | `Title | `XML_lang ],
     [< `Address
      | `Blockquote
      | `Div
      | `Dl
      | `Form
      | `H1
      | `H2
      | `H3
      | `H4
      | `H5
      | `H6
      | `Hr
      | `Ol
      | `P
      | `PCDATA
      | `Pre
      | `Table
      | `Ul ],
     [> `Blockquote ])
    star
  val div :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `Address
      | `Blockquote
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Div
      | `Dl
      | `Em
      | `Form
      | `H1
      | `H2
      | `H3
      | `H4
      | `H5
      | `H6
      | `Input
      | `Kbd
      | `Label
      | `Ol
      | `P
      | `PCDATA
      | `Pre
      | `Q
      | `Samp
      | `Select
      | `Span
      | `Strong
      | `Table
      | `Textarea
      | `Ul
      | `Var ],
     [> `Div ])
    star
  val p :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `P ])
    star
  val pre :
    ([< `Class | `Id | `Title | `XML_lang | `XML_space ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Pre ])
    star
  val abbr :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Abbr ])
    star
  val acronym :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Acronym ])
    star
  val br : ([< core ], [> `Br ]) nullary
  val cite :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Cite ])
    star
  val code :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Code ])
    star
  val dfn :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Dfn ])
    star
  val em :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Em ])
    star
  val kbd :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Kbd ])
    star
  val q :
    ([< `Cite | `Class | `Id | `Title | `XML_lang ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Q ])
    star
  val samp :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Samp ])
    star
  val span :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Span ])
    star
  val strong :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Strong ])
    star
  val a :
    ([< `Accesskey
      | `Charset
      | `Class
      | `Href
      | `Hreflang
      | `Id
      | `Name_01_00
      | `Rel
      | `Rev
      | `Tabindex
      | `Target
      | `Title
      | `Type
      | `XML_lang ],
     [< `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `A ])
    star
  val dl : ([< common ], [< `Dd | `Dt ], [> `Dl ]) plus
  val ol : ([< common ], [< `Li ], [> `Ol ]) plus
  val ul : ([< common ], [< `Li ], [> `Ul ]) plus
  val dd :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `Address
      | `Blockquote
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Div
      | `Dl
      | `Em
      | `Form
      | `H1
      | `H2
      | `H3
      | `H4
      | `H5
      | `H6
      | `Input
      | `Kbd
      | `Label
      | `Ol
      | `P
      | `PCDATA
      | `Pre
      | `Q
      | `Samp
      | `Select
      | `Span
      | `Strong
      | `Table
      | `Textarea
      | `Ul
      | `Var ],
     [> `Dd ])
    star
  val dt :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Dt ])
    star
  val li :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `Address
      | `Blockquote
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Div
      | `Dl
      | `Em
      | `Form
      | `H1
      | `H2
      | `H3
      | `H4
      | `H5
      | `H6
      | `Input
      | `Kbd
      | `Label
      | `Ol
      | `P
      | `PCDATA
      | `Pre
      | `Q
      | `Samp
      | `Select
      | `Span
      | `Strong
      | `Table
      | `Textarea
      | `Ul
      | `Var ],
     [> `Li ])
    star
  val hr : ([< common ], [> `Hr ]) nullary
  val b :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `B ])
    star
  val big :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Big ])
    star
  val i :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `I ])
    star
  val small :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Small ])
    star
  val sub :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Sub ])
    star
  val sup :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Sup ])
    star
  val tt :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Tt ])
    star
  module Basic_Forms :
    sig
      val form :
        action:uri ->
        ([< `Class
          | `Enctype
          | `Id
          | `Method
          | `Name_01_00
          | `Target
          | `Title
          | `XML_lang ],
         [< `Address
          | `Blockquote
          | `Div
          | `Dl
          | `H1
          | `H2
          | `H3
          | `H4
          | `H5
          | `H6
          | `Hr
          | `Ol
          | `P
          | `PCDATA
          | `Pre
          | `Table
          | `Ul ],
         [> `Form ])
        star
      val input :
        ([< `Accesskey
          | `Checked
          | `Class
          | `Id
          | `Input_Type
          | `Maxlength
          | `Name
          | `Size
          | `Src
          | `Tabindex
          | `Title
          | `Value
          | `XML_lang ],
         [> `Input ])
        nullary
      val label :
        ([< `Accesskey | `Class | `For | `Id | `Title | `XML_lang ],
         [< `A
          | `Abbr
          | `Acronym
          | `B
          | `Big
          | `Br
          | `Cite
          | `Code
          | `Dfn
          | `Em
          | `I
          | `Img
          | `Input
          | `Kbd
          | `PCDATA
          | `Q
          | `Samp
          | `Select
          | `Small
          | `Span
          | `Strong
          | `Sub
          | `Sup
          | `Textarea
          | `Tt
          | `Var ],
         [> `Label ])
        star
      val option :
        ([< `Class | `Id | `Selected | `Title | `Value | `XML_lang ],
         [< `PCDATA ], [> `Option ])
        unary
      val select :
        ([< `Class
          | `Id
          | `Multiple
          | `Name
          | `Size
          | `Tabindex
          | `Title
          | `XML_lang ],
         [< `Option ], [> `Select ])
        plus
      val textarea :
        rows:number ->
        cols:number ->
        ([< `Accesskey
          | `Class
          | `Id
          | `Name
          | `Tabindex
          | `Title
          | `XML_lang ],
         [< `PCDATA ], [> `Textarea ])
        unary
    end
  module Basic_Tables :
    sig
      val a_align : [< `Center | `Left | `Right ] -> [> `Align ] attrib
      val a_scope : [< `Col | `Row ] -> [> `Scope ] attrib
      val a_valign : [< `Bottom | `Middle | `Top ] -> [> `Valign ] attrib
      val caption :
        ([< common ],
         [< `A
          | `Abbr
          | `Acronym
          | `B
          | `Big
          | `Br
          | `Cite
          | `Code
          | `Dfn
          | `Em
          | `I
          | `Img
          | `Input
          | `Kbd
          | `Label
          | `PCDATA
          | `Q
          | `Samp
          | `Select
          | `Small
          | `Span
          | `Strong
          | `Sub
          | `Sup
          | `Textarea
          | `Tt
          | `Var ],
         [> `Caption ])
        star
      val table :
        ?caption:[< `Caption ] elt ->
        ([< `Class | `Id | `Summary | `Title | `Width | `XML_lang ],
         [< `Tr ], [> `Table ])
        plus
      val td :
        ([< `Abbr
          | `Align
          | `Axis
          | `Class
          | `Colspan
          | `Headers
          | `Id
          | `Rowspan
          | `Scope
          | `Title
          | `Valign
          | `XML_lang ],
         [< `A
          | `Abbr
          | `Acronym
          | `Address
          | `Blockquote
          | `Br
          | `Cite
          | `Code
          | `Dfn
          | `Div
          | `Dl
          | `Em
          | `Form
          | `H1
          | `H2
          | `H3
          | `H4
          | `H5
          | `H6
          | `Input
          | `Kbd
          | `Label
          | `Ol
          | `P
          | `PCDATA
          | `Pre
          | `Q
          | `Samp
          | `Select
          | `Span
          | `Strong
          | `Textarea
          | `Ul
          | `Var ],
         [> `Td ])
        star
      val th :
        ([< `Abbr
          | `Align
          | `Axis
          | `Class
          | `Colspan
          | `Headers
          | `Id
          | `Rowspan
          | `Scope
          | `Title
          | `Valign
          | `XML_lang ],
         [< `A
          | `Abbr
          | `Acronym
          | `Address
          | `Blockquote
          | `Br
          | `Cite
          | `Code
          | `Dfn
          | `Div
          | `Dl
          | `Em
          | `Form
          | `H1
          | `H2
          | `H3
          | `H4
          | `H5
          | `H6
          | `Input
          | `Kbd
          | `Label
          | `Ol
          | `P
          | `PCDATA
          | `Pre
          | `Q
          | `Samp
          | `Select
          | `Span
          | `Strong
          | `Textarea
          | `Ul
          | `Var ],
         [> `Th ])
        star
      val tr :
        ([< `Align | `Class | `Id | `Title | `Valign | `XML_lang ],
         [< `Td | `Th ], [> `Tr ])
        plus
    end
  val caption :
    ([< common ],
     [< `A
      | `Abbr
      | `Acronym
      | `B
      | `Big
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Em
      | `I
      | `Img
      | `Input
      | `Kbd
      | `Label
      | `PCDATA
      | `Q
      | `Samp
      | `Select
      | `Small
      | `Span
      | `Strong
      | `Sub
      | `Sup
      | `Textarea
      | `Tt
      | `Var ],
     [> `Caption ])
    star
  val table :
    ?caption:[< `Caption ] elt ->
    ?columns:[< `Colgroups of [< `Colgroup ] elt list
              | `Cols of [< `Col ] elt list ] ->
    ([< `Border
      | `Cellpadding
      | `Cellspacing
      | `Class
      | `Datapagesize
      | `Frame
      | `Id
      | `Rules
      | `Summary
      | `Title
      | `Width
      | `XML_lang ],
     [< `Tr ], [> `Table ])
    plus
  val tablex :
    ?caption:[< `Caption ] elt ->
    ?columns:[< `Colgroups of [< `Colgroup ] elt list
              | `Cols of [< `Col ] elt list ] ->
    ?thead:[< `Thead ] elt ->
    ?tfoot:[< `Tfoot ] elt ->
    ([< `Border
      | `Cellpadding
      | `Cellspacing
      | `Class
      | `Datapagesize
      | `Frame
      | `Id
      | `Rules
      | `Summary
      | `Title
      | `Width
      | `XML_lang ],
     [< `Tbody ], [> `Table ])
    plus
  val td :
    ([< `Abbr
      | `Align
      | `Axis
      | `Char
      | `Charoff
      | `Class
      | `Colspan
      | `Headers
      | `Id
      | `Rowspan
      | `Scope
      | `Title
      | `Valign
      | `XML_lang ],
     [< `A
      | `Abbr
      | `Acronym
      | `Address
      | `Blockquote
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Div
      | `Dl
      | `Em
      | `Form
      | `H1
      | `H2
      | `H3
      | `H4
      | `H5
      | `H6
      | `Input
      | `Kbd
      | `Label
      | `Ol
      | `P
      | `PCDATA
      | `Pre
      | `Q
      | `Samp
      | `Select
      | `Span
      | `Strong
      | `Table
      | `Textarea
      | `Ul
      | `Var ],
     [> `Td ])
    star
  val th :
    ([< `Abbr
      | `Align
      | `Axis
      | `Char
      | `Charoff
      | `Class
      | `Colspan
      | `Headers
      | `Id
      | `Rowspan
      | `Scope
      | `Title
      | `Valign
      | `XML_lang ],
     [< `A
      | `Abbr
      | `Acronym
      | `Address
      | `Blockquote
      | `Br
      | `Cite
      | `Code
      | `Dfn
      | `Div
      | `Dl
      | `Em
      | `Form
      | `H1
      | `H2
      | `H3
      | `H4
      | `H5
      | `H6
      | `Input
      | `Kbd
      | `Label
      | `Ol
      | `P
      | `PCDATA
      | `Pre
      | `Q
      | `Samp
      | `Select
      | `Span
      | `Strong
      | `Table
      | `Textarea
      | `Ul
      | `Var ],
     [> `Th ])
    star
  val tr :
    ([< `Align
      | `Char
      | `Charoff
      | `Class
      | `Id
      | `Title
      | `Valign
      | `XML_lang ],
     [< `Td | `Th ], [> `Tr ])
    plus
  val col :
    ([< `Align
      | `Char
      | `Charoff
      | `Class
      | `Id
      | `Span
      | `Title
      | `Valign
      | `Width
      | `XML_lang ],
     [> `Col ])
    nullary
  val colgroup :
    ([< `Align
      | `Char
      | `Charoff
      | `Class
      | `Id
      | `Span
      | `Title
      | `Valign
      | `Width
      | `XML_lang ],
     [< `Col ], [> `Colgroup ])
    star
  val thead :
    ([< `Align
      | `Char
      | `Charoff
      | `Class
      | `Id
      | `Title
      | `Valign
      | `XML_lang ],
     [< `Tr ], [> `Thead ])
    plus
  val tbody :
    ([< `Align
      | `Char
      | `Charoff
      | `Class
      | `Id
      | `Title
      | `Valign
      | `XML_lang ],
     [< `Tr ], [> `Tbody ])
    plus
  val tfoot :
    ([< `Align
      | `Char
      | `Charoff
      | `Class
      | `Id
      | `Title
      | `Valign
      | `XML_lang ],
     [< `Tr ], [> `Tfoot ])
    plus
  val img :
    src:uri ->
    alt:text ->
    ([< `Class
      | `Height
      | `Id
      | `Longdesc
      | `Name_01_00
      | `Title
      | `Width
      | `XML_lang ],
     [> `Img ])
    nullary
  val frameset :
    ?noframes:[< `Noframes ] elt ->
    ([< `Class | `FS_Cols | `FS_Rows | `Id | `Title ],
     [< `Frame | `Frameset ], [> `Frameset ])
    plus
  val frame :
    src:uri ->
    ([< `Class
      | `Frameborder
      | `Id
      | `Longdesc
      | `Marginheight
      | `Marginwidth
      | `Name_01_00
      | `Noresize
      | `Scrolling
      | `Title ],
     [> `Frame ])
    nullary
  val noframes : ([< common ], [< `Body ], [> `Noframes ]) unary
  val meta :
    content:cdata ->
    ([< `Http_equiv | `Name | `Scheme | `XML_lang ], [> `Meta ]) nullary
  val style :
    contenttype:contenttype ->
    ([< `Media | `Title | `XML_lang | `XML_space ], [< `PCDATA ],
     [> `Style ])
    star
  val link :
    ([< `Charset
      | `Class
      | `Href
      | `Hreflang
      | `Id
      | `Media
      | `Rel
      | `Rev
      | `Target
      | `Title
      | `Type
      | `XML_lang ],
     [> `Link ])
    nullary
  val base : href:uri -> unit -> [> `Base ] elt
  val output :
    ?encode:(string -> string) ->
    ?encoding:string -> (string -> unit) -> html -> unit
  val pretty_print :
    ?width:int ->
    ?encode:(string -> string) ->
    ?encoding:string -> (string -> unit) -> html -> unit
  val version : string
  val standard : uri
  val validator : uri
  val validator_icon : unit -> [> `A ] elt
  val addto_class : string -> 'a elt -> 'a elt
  val addto_class1 : string -> 'a elt -> 'a elt
  val set_rowspan : int -> ([< `Td | `Th ] as 'a) elt -> 'a elt
  val rewrite_hrefs : (string -> string) -> 'a elt -> 'a elt
  val all_hrefs : 'a elt -> uri list
  val all_anchors : 'a elt -> id list
  val a_name_01_00 : cdata -> [> `Name_01_00 ] attrib
end