XHTML
O HTML pode ser transferido através da internet para o navegador usando duas sintaxes: sintaxe HTML e sintaxe XML, 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
<!-- 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
<!-- 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:
- No to XHTML um artigo excelente do Spartanicus
- Beware of XHTML por David Hammond
- Sending XHTML as text/html Considered Harmful por Ian Hickson
- XHTML's Dirty Little Secret por Mark Pilgrim
- XHTML - What's the Point? por Henri Sivonen
- XHTML is not for Beginners por Lachlan Hunt
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.