Wednesday, July 16, 2014

Importance of DOCTYPE declaration in (X)HTML

From my
experience, I can remember many cases where I knew for sure that I have written
a HTML document correctly with Javascript and CSS, still it is not rendered
properly in the browser. Few weeks back, I encountered the same problem and
like every time it is the DOCTYPE declaration which is the reason for this
mess. So. I thought of sharing my knowledge regarding DOCTYPE through this
post. DOCTYPE is a declaration that we usually find in the very beginning of an
HTML document (it applies to XHTML too). The first thing to remember here is
that DOCTYPE is not a HTML tag. It provides some information to the browser
regarding the version of HTML that has been used in the document. In other
words, DOCTYPE is a meta-information for the HTML document.

What happens if we don’t specify the
DOCTYPE declaration?

A DOCTYPE
declaration tells the browsers to render a HTML document in standards and compliant
mode. It ensures that the rendering of (X)HTML, CSS, and DOM is done in a
standard way. Browsers make many assumptions and guesswork while rending a
(X)HTML. If we do not specify any DOCTYPE declaration, browsers will use the
“Quirks” mode and render the (X)HTML according to its own proprietary logic. Even
if a (X)HTML has a valid DOCTYPE declaration but has validation errors against
that DOCTYPE, the browsers may not complain and continue render it. For
example, the (X)HTML below fails validation but it is rendered correctly in
browsers.

<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title> Test
</title>

</head>

<body>

<p>HTML
content..</p></br>

</body>

</html>

Only if we
have a valid DOCTYPE declaration and no validation errors with respect to the
declared DOCTYPE, we can rest assure that the (X)HTML document will be properly
rendered across browsers without writing any browser-specific tag. A list of
valid doctypes can be found here.

Adding
a DOCTYPE declaration to (X)HTMl documents is always the best practice. Most of
tools we use to create (X)HTML documents do add a DOCTYPE declaration by
default and also checks for the validity of the document against the declared
DOCTYPE. The documents should only be published when there is no validation
errors against a declared DOCTYPE.