HTML pode viajar através da rede para um navegador quer em sintaxe de HTML ou uma sintaxe chamada de XML.


O padrão de HTML5 define ambas as sintaxes. O tipo MIME (enviado no cabeçalho Content-Type de HTTP) indica a escolha da sintaxe: para XHTML o tipo MIME irá ser application/xhtml+xml, de outro modo  text/html.

Este exemplo mostra um documento HTML e um documento XHTML incluindo os cabeçalhos de HTTP apropriados:

Documento HTML

HTTP/1.1 200 OK
Content-Type: text/html

<!DOCTYPE html>
<html lang=en>
    <meta charset=utf-8>
    <p>I am a HTML document</p>

Documento XHTML

HTTP/1.1 200 OK
Content-Type: application/xhtml+xml

<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <p>I am a XHTML document</p>

Tipo MIME versus DOCTYPE

Before HTML5, the two separate specifications defined the two syntaxes (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 these articles:


Most browsers currently support XHTML, including Firefox, Chrome, Safari, Opera, and Internet Explorer (since IE 9). (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 have limited or no support for XHTML.

Diferençãs do HTML

See Properly Using CSS and JavaScript in XHTML Documents for a partial list of differences between HTML and XHTML.


Consulte também