Doctype
A line beginning with !!! declares the document's doctype. It must be the first non-blank line of the template; placing it after any tag or statement raises X::HAML::DoctypeNotFirst.
Argument-less form#
!!!
<!DOCTYPE html>
With no argument, !!! emits the format-default doctype. The format
comes from the format config option and the default is
html5. The other formats produce different defaults:
format |
Argument-less !!! output |
|---|---|
html5 |
<!DOCTYPE html> |
html4 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
xhtml |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
Named variants (below) ignore the format option and always emit the
exact doctype the variant names.
Named variants#
| Source | Output |
|---|---|
!!! 5 |
<!DOCTYPE html> |
!!! 1.1 |
XHTML 1.1 |
!!! Strict |
XHTML 1.0 Strict |
!!! Frameset |
XHTML 1.0 Frameset |
!!! Mobile |
XHTML Mobile 1.2 |
!!! RDFa |
XHTML+RDFa 1.0 |
!!! Basic |
XHTML Basic 1.1 |
!!! XML |
<?xml version='1.0' encoding='utf-8' ?> |
!!! XML <enc> |
XML declaration with the given encoding |
!!! XML iso-8859-1
<?xml version='1.0' encoding='iso-8859-1' ?>
Errors#
An unrecognized variant raises X::HAML::UnknownDoctype:
!!! Bogus
[HAML source:1:1] unknown doctype 'Bogus'; expected one of: 5 1.1 Strict Frameset Mobile RDFa Basic XML