XHTML

O HTML pode ser transferido através da internet para o navegador usando duas sintaxes: sintaxe HTML e sintaxe XML (en-US), também conhecido como XHTML.

HTML5 e HTML/XHTML

Ambas as sintaxes são definidas através do padrão HTML5. A escolha da sintaxe é dedicada ao tipo MIME, que é enviado no cabeçalho HTTP Content-Type . O tipo MIME para sintaxe HTML é text/html, e o tipo MIME para sintaxe XHTML é aplication/xhtml+xml.

O exemplo mostra um documento HTML e um XHTML incluindo os cabeçalhos relevantes do HTTP.

Documento HTML

html
<!-- Content-Type: text/html -->

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>HTML</title>
  </head>
  <body>
    <p>Eu sou um documento HTML</p>
  </body>
</html>

Documento XHTML

xml
<!-- Content-Type: application/xhtml+xml -->

<html xml:lang="en" xmlns="https://www.w3.org/1999/xhtml">
  <head>
    <title>XHTML</title>
  </head>
  <body>
    <p>Eu sou um documento XHTML</p>
  </body>
</html>

Tipo MIME contra DOCTYPE

Antes do HTML5, as duas sintaxes eram definidas por duas especificações diferentes: HTML 4.01 e XHTML 1.0. O padrão XHTML1 afirma que você poderia usar XHTML declarando um DOCTYPE especial. Porém, isso nunca foi implementado por nenhum navegador,e tem sido trocado pelo padrão HTML5. Se sua página é enviada como text/html você não pode usar XHTML.

Observe que o tipo MIME deve ser declarado no Content-Type HTTP header. Se você apenas inseriu a meta tag no HTML como <meta http-equiv=…>, ele será ignorado e tratado como text/html.

Se você apresentar suas páginas text/html e acreditar que você está escrevendo XHTML, você poderá enfrentar vários problemas, tal como descritos nos seguintes artigos:

Suporte

O XHTML é suportado pela maioria dos navegadores modernos, incluindo Firefox, Chrome, Safari, e Opera. Entretanto, o Internet Explorer suporta XHTML somente a partir da versão 9. O Internet Explorer 8 e suas versões mais antigas mostrarão uma mensagem de tipo de arquivo desconhecido quando aberto um documento XHTML com o tipo XHTML MIME correto.

Também é bom observar que muitas bibliotecas populars de JavaScript e ferramentas para desenvolvedores não suportam XHTML ou tem suporte limitado.

Diferenças entre HTML

Veja Properly Using CSS and JavaScript in XHTML Documents para uma lista com algumas das diferenças entre HTML e XHTML.

Ferramentas

Veja também