Document Type Declaration
From Wikipedia, the free encyclopedia
A Document Type Declaration, or DOCTYPE, is an instruction that associates a particular SGML or XML document (for example, a webpage) with a Document Type Definition (DTD) (for example, the formal definition of a particular version of HTML). In the serialized form of the document, it manifests as a short string of markup that conforms to a particular syntax.
The HTML layout engines in modern web browsers perform DOCTYPE "sniffing" or "switching", wherein the DOCTYPE in a document served as text/html
determines a layout mode, such as "quirks mode" or "standards mode". The text/html
serialization of HTML 5, which is not SGML-based, uses DOCTYPE only for mode selection.[clarification needed]
Contents |
[edit] DTDs
[edit] Syntax
The general syntax for a Document Type Declaration is:
<!DOCTYPE root-element [SYSTEM OR PUBLIC FPI] "uri" [ <!-- internal declarations --> ]>
In XML, the root element of the document is the first element in the document (eg in XHTML, the root element is html, being the first element opened and last closed). The keywords SYSTEM and PUBLIC suggest what kind of DTD it is (one that is on a private system or one that is open to the public). If the "SYSTEM" keyword is chosen, the URI of the DTD may follow; if the PUBLIC keyword is chosen then the declaration must have a FPI (Formal Public Identifier) following it and then the URI of the DTD (the FPI for XHTML 1.1 is "-//W3C//DTD XHTML 1.1//EN").
The last part is called an internal subset which can be used to add/edit entities or add/edit elements. This is optional in XML.
Document Type Declarations are slightly different in SGML, where you may associate the public identifier with the system identifier, as it is in HTML.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
[edit] Example
The first line of many World Wide Web pages reads as follows:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
This Document Type Declaration for XHTML includes by reference a DTD, whose public identifier is -//W3C//DTD XHTML 1.0 Transitional//EN
and whose system identifier is http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
. An entity resolver may use either identifier for locating the referenced external entity. The root element is declared to be html
.
[edit] HTML 4.01 DTDs
HTML 4.01 Strict does not allow presentational markup with the argument that Cascading Style Sheets should be used for that instead. This is how the strict doctype looks:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Transitional DTD allows some older elements and attributes that have been deprecated:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
If frames are used, the frameset doctype must be used instead, like this:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
[edit] XHTML 1.0 DTDs
XHTML's DTDs are also Strict, Transitional and Frameset.
XHTML Strict DTD is the most strict DTD available: no deprecated tags are supported and the code must be written correctly.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML Transitional DTD is like the XHTML Strict DTD, but deprecated tags are allowed. This is the most popular current DTD.[citation needed]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML Frameset DTD is the only XHTML DTD that supports Frameset. The DTD is below.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
[edit] XHTML 1.1 DTD
This is the latest DTD that has the stringency of XHTML 1.0 Strict, and it is based upon the module framework and modules defined in Modularization of XHTML.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
[edit] XHTML Basic DTDs
XHTML Basic 1.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
XHTML Basic 1.1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">
[edit] XHTML Mobile Profile DTDs
XHTML Mobile Profile 1.0
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
XHTML Mobile Profile 1.1
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.1//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile11.dtd">
XHTML Mobile Profile 1.2
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">
[edit] HTML 5 DTDless Doctype
This article contains information about a scheduled or expected future product. It may contain preliminary information that does not reflect the final version of the product. |
HTML 5 has a unique doctype, which is very short and has no Document Type Definition. This is how it appears:
<!DOCTYPE HTML>
[edit] References
[edit] See also
- Document Type Definition contains an example
- RDFa
- XML Schema
[edit] External links
- Recommended DTDs to use in your Web document - an informative (not normative) W3C Quality Assurance publication
- Doctype switch: summary table - an overview table of the effect of different DOCTYPEs on selecting quirks mode or standards compliance mode in HTML renderers
- DOCTYPE grid - another overview table
- FreeBSD Documentation Project Primer section on DOCTYPE - has some info about syntax and formal public identifiers
- Quirks mode and strict mode
- Box model tweaking
- W3C HTML Validator
- Document Type Declaration Statistics