Warning: Reason support is experimental. We are looking for beta-tester and contributors.

Module XHTML_sigs

module XHTML_sigs : sig..end

The elements, attributes, attribute types and data types are given names that match the names in the W3C recommendation as closely as allowed by a strict typing discipline and the lexical conventions of O'Caml:

  • elements are implemented as O'Caml constructors with the same name as in the W3C recommendation. The domain and codomain are specified as 'a elt, where 'a is a concrete phantom type build out of polymorphic variants.
  • attributes are implemented as O'Caml constructors with a_ prefixed to the name. The name is the same as in the W3C recommendation, unless an additional prefix is required to disambiguate:
    • a_fs_rows and a_fs_cols instead of a_rows and a_cols for framesets, because of the different argument types.
  • attribute types are implemented as O'Caml types that all have the same names as in the W3C recommendation, but are all lowercase.
  • data types are also implemented as O'Caml types that all have the same names as in the W3C recommendation and are again all lowercase.


Finite sets of alternatives are mapped to polymorphic variants.

The phantom type is always the most general required by any (supported) version of the standard. Type discipline is enforced by exporting or not-exporting the corresponding constructor.

The type defining group of html elements are in XHTML_types


module type T_01_01 = sig..end
module type T_01_00 = sig..end
module type T = T_01_01