TyXML allows you to build XML trees whose validity is ensured by the typechecker. It's based on a traduction of XML types into polymorphic variants, originally written by Thorsten Ohl. Currently, the transcription has been done for HTML5 and SVG.

TyXML also provides a generic printer and some low-level (and untyped) iterators over XML trees. The printer has options for printing HTML in more browser-friendly way when served as "text/html" (instead of "text/xml"). HTML5 is always printed with those options.

All modules provided by TyXML are also provided in functorial interface, where every module is parameterised by the underlying XML representation.

A camlp4 extension, named Pa_tyxml, allows to write HTML pages or HTML fragments with the usual syntax. For creating HTML5- or SVG-nodes, the syntax extension relies on the presence of a module called Html5 or Svg which keeps the actual implementation, e.g.

  let module Html5 = Eliom_content.Html5.F in
  <:html5< <div>xyz</div> >>