HTML can travel over the network to the browser either in HTML syntax or XML syntax, also known as XHTML.
HTML5 and HTML/XHTML
The HTML5 standard defines both these syntaxes. The choice of syntax is indicated by the MIME type (which is sent in the HTTP Content-Type
header): the MIME type for HTML syntax is text/html
, and the MIME type for XHTML syntax is application/xhtml+xml
.
This example shows an HTML document and an XHTML document including the relevant HTTP headers:
HTML document
HTTP/1.1 200 OK Content-Type: text/html <!DOCTYPE html> <html lang=en> <head> <meta charset=utf-8> <title>HTML</title> </head> <body> <p>I am a HTML document</p> </body> </html>
XHTML document
HTTP/1.1 200 OK
Content-Type: application/xhtml+xml
<html xml:lang="en" xmlns="https://www.w3.org/1999/xhtml
">
<head>
<title>XHTML</title>
</head>
<body>
<p>I am a XHTML document</p>
</body>
</html>
MIME type versus DOCTYPE
Prior to HTML5, the two syntaxes were defined by two separate specifications: HTML 4.01 and XHTML 1.0. According to the XHTML1 standard, you could use XHTML by declaring a special DOCTYPE. However, no browsers have ever implemented this, and the HTML5 standard has reversed the decision. If your page is sent as text/html
, you are not using XHTML.
Instead, the proper MIME type must be present in the Content-Type
HTTP header. If you only put the MIME type into an HTML meta tag like <meta http-equiv=…>
, it will be ignored and treated like text/html
.
If you serve your pages as text/html
and believe that you are writing XHTML, you may face several problems, as described in the following articles:
- No to XHTML an excellent article from Spartanicus
- Beware of XHTML by David Hammond
- Sending XHTML as text/html Considered Harmful by Ian Hickson
- XHTML's Dirty Little Secret by Mark Pilgrim
- XHTML - What's the Point? by Henri Sivonen
- XHTML is not for Beginners by Lachlan Hunt
Support
XHTML is supported by most modern browsers, including Firefox, Chrome, Safari, and Opera. However, only Internet Explorer 9 and above supports XHTML. Internet Explorer 8 and older browsers instead show a download dialog box for unknown file types when they see an XHTML document with the correct XHTML MIME type.
Also be aware that many popular JavaScript libraries and developer tools do not support or have limited support for XHTML.
Differences from HTML
See Properly Using CSS and JavaScript in XHTML Documents for a list of some of the differences between HTML and XHTML.