A tecla de acesso 'n' salta para outro local na navegação da página. Saltar para o início do conteúdo.
Este documento é uma tradução. Se ocorrerem discrepâncias ou erros, o original em inglês mais recente terá precedência. Os direitos autorais originais pertencem à W3C, como indicado abaixo.
Tradutor: Maurício Samy Silva
Público alvo: XHTML/HTML coders (using editors or scripting), script developers (PHP, JSP, etc.), Web project managers, and anyone who needs a gentle introduction to quirks vs standards modes, and how the DOCTYPE and XML declarations play into that. It is also very useful pre-reading for those wanting to know how to declare the character encoding of their documents.
Este artigo descreve de maneira sumária alguns aspectos, não raro surpreendentes, de como os servidores enviam o XHTML para os agentes de usuário (p. ex.: um navegador), bem como a maneira como estes agentes processam a marcação recebida. Trata-se de uma descrição de itens específicos de implementação e não de considerações sobre normatizações do W3C.
Este material foi extraido de um tutorial sobre como declarar codificação de caracteres em um documento HTML ou XHTML. Estes tópicos tem um peso considerável naquela decisão. Estas informações também esclarecem o porquê de certos aspectos da estilização via CSS não surtirem o efeito planejado, ou mesmo sofrer variações de um agente de usuário para outro.
Quando o servidor envia um documento para o agente de usuário (p. ex.: um navegador) envia também informações sobre o formato dos dados contidos no documento, em um campo do cabeçalho HTTP denominado Content-Type. Esta informação é transmitida em rótulo para tipo de MIME. A seguir um exemplo de cabeçalho HTTP para um arquivo HTML usando o tipo de MIME 'text/html'. Observe que o campo Content-Type pode conter também a codificação de caracteres para o documento .
HTTP/1.1 200 OK
Date: Wed, 05 Nov 2003 10:46:04 GMT
Server: Apache/1.3.28 (Unix) PHP/4.2.3
Content-Location: CSS2-REC.en.html
Vary: negotiate,accept-language,accept-charset
TCN: choice
P3P: policyref=http://www.w3.org/2001/05/P3P/p3p.xml
Cache-Control: max-age=21600
Expires: Wed, 05 Nov 2003 16:46:04 GMT
Last-Modified: Tue, 12 May 1998 22:18:49 GMT
ETag: "3558cac9;36f99e2b"
Accept-Ranges: bytes
Content-Length: 10734
Connection: close
Content-Type: text/html; charset=utf-8
Content-Language: en
O servidor normalmente envia arquivos HTML 4.01 com o tipo de MIME text/html. HTML é uma aplicação SGML.
Quando se trata de XHTML 1.0, que é baseado em XML, as considerações não são tão diretas assim.
Muitas pessoas preferem usar XHTML para tirar vantagens das facilidades que XML proporciona para edição ou processamento dos seus documentos. Contudo, o suporte para arquivos XML não está plenamente implementado em todos os navegadores, de modo que a maioria dos arquivos XHTML 1.0 são servidos atualmente usando-se um tipo de MIME text/html. E, neste caso, o agente de usuário processa o arquivo como sendo HTML.
Para assegurarmos de que as diferenças entre XML e HTML não confundam agentes de usuário mais antigos, ao servir XHTML como HTML, devemos seguir as diretrizes de compatibilidade contidas no Appendix C da especificação para XHTML . Estas diretrizes de compatibilidade recomendam entre outras coisas, que você deixe um espaço antes de '/>' ao finalizar uma tag vazia (tal como img, hr ou br), que você sempre use ambos os atributos id e name para identificador de fragmantos, etc.
XHTML 1.0 pode também ser servido como XML, e XHTML 1.1 é sempre servido como XML. para servir XHTML como XML você pode usar um dos seguintes tipos de MIME; application/xhtml+xml, application/xml ou text/xml. O W3C recomenda que você ao servir XHTML como XML use o primeiro daqueles tipos de MIME, ou seja, application/xhtml+xml.
O fato de que XHTML pode ser servido como HTML ou XML faz diferença na maneira como declarar as informações de codificação.
Os navegadores atuais podem renderizar um arquivo HTML tanto no modo 'standards' como no modo 'quirks'. Isto significa que a apresentação do documento poderá ser em conformidade com as standards do W3C ou baseada em comportamento não standard, à maneira de navegadores antigos.
Os capturas de tela abaixo ilustram algumas destas diferenças.
| Um documento renderizado em modo 'standards' . | O mesmo documento renderizado em modo 'quirks' . |
|---|---|
![]() |
![]() |
E, as diferenças acima ilustradas incluem as seguintes:
No modo 'standards' a largura total de uma caixa especificada via CSS não inclue qualquer valor de padding ou border que for declarado para a caixa ao passo que em modo 'quirks' aqueles valores são incluidos na largura total - esta é a razão pela qual a caixa na figura à esquerda é mais larga que aquela à direita.
Um valor para tamanho de fontes foi declarado via CSS para a tag body (e em consequência, por herança, para todos os demais elementos), e reduzido para 50% para elementos p (parágrafo). No modo 'quirks' a tabela não herdou o valor do tamanho de fonte declarado no elemento body e em consequência o texto ali colocado está com fonte de tamanho menor. (Observe que o texto colocado na caixa maior - na DIV com borda verde - tem o mesmo tamanho em ambos os modos, pois ali o referido texto esta contido dentro de um elemento p - parágrafo - e não dentro de uma tabela.
As duas figuras acima mostram a mesma página, com exatamente a mesma marcação e a mesma estilização CSS. A única diferença entre os códigos fonte dos dois arquivos é que o daquele da figura à esquerda possui uma declaração de DOCTYPE no topo da marcação (na primeira linha da marcação) e o da direita não possui tal declaração. Um arquivo escrito com uma declaração apropriada de DOCTYPE normalmente deverá ser renderizado em modo 'standards' em versões mais recentes da maioria dos navegadores. A falta do DOCTYPE, na marcação provoca renderização em modo 'quirks'.
Navegadores com a capacidade de renderizar tanto em modo 'standards' como em modo 'quirks' são denominados: capazes de realizar o 'doctype switching' (chaveamento de doctype).
O código a seguir mostra a declaração de DOCTYPE no topo do documento (destacada em itálico e na cor vermelha).
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="pt-br" lang="pt-br" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Documento XHTML</title>
<style type="text/css">
body { background: white; color: black; font-family: arial, sans-serif; font-size: 25px; }
p { font-size: 50%; }
h1 { font-size: 16px; }
div { margin: 20px; width: 170px; padding: 50px; border: 6px solid teal; }
</style>
</head>
<body>
<h1>Arquivo de teste para modo Standards</h1>
<div>
<p> Aqui um parágrafo contido em uma DIV. </p>
</div>
<table border="1">
<tr><td><p>Texto na tag p.</p></td>
<td><p>Texto na tag p.</p></td>
</tr>
<tr><td>Sem tag p.</td>
<td>Sem tag p.</td>
</tr>
</table>
</body>
</html>
É uma boa idéia sempre servir suas páginas em modo 'standards', isto é, incluir uma declaração de DOCTYPE.
Sendo XHTML 1.0 baseado em XML, é comum adicionar uma declaração XML no início da marcação, mesmo quando o documento é servido como HTML. A declaração XML está ilustrada na marcação a seguir (declaração XML, destacada em itálico e na cor vermelha):
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="pt-br" lang="pt-br" xmlns="http://www.w3.org/1999/xhtml">
<head>
...
Em navegadores tais como o Internet Explorer 7, Firefox, o Netscape, o Opera, e outros, uma página servida com a declaração de DOCTYPE quer tenha ou não a declaração XML será renderizada em modo 'standards'.
Contudo, para o Internet Explorer 6, se qualquer marcação for adicionada antes da declaração de DOCTYPE a página será renderizada em modo 'quirks'.
Isto é um ponto importante a considerar, uma vez que grande quantidade de usuários utilizam o Internet Explorer 6. Se você pretende que seu documento seja renderizado de modo igual em todos os navegadores complacentes com as standards, analise cuidadosamente as implicações de usar a declaração XML.
E as opções são: se o seu documento está construido de modo a que as diferenças na renderização em modo 'standards' e 'quirks' não sejam relevantes, obviamente você não precisa se preocupar com a conveniência de usar a declaração XML. Se, por outro lado este não for o caso, você terá que lançar mão de artifícios ou "workarounds" nas CSS de modo a corrigir ou contornar as diferenças, ou ainda, simplesmente omitir a declaração XML.
As especificações para XHTML alertam para o fato de que instruções de
processamento são renderizadas em alguns agentes de usuário. E também para o fato de que alguns agentes interpretam a declaração XML como sendo um
documento não reconhecido como XML, e desta forma não renderizam o documento conforme é de se esperar.
Você deverá testar seu documento em
variados agentes de usuário pra decidir qual é a melhor maneira para
servir seu documento.
Notar que ao decidir omitir a declaração XML você deverá optar por uma codificação de caracter em UTF-8 ou UTF-16 para sua página. (Ver Conjunto de caracteres & codificações em XHTML, HTML e CSS para informações complementares a respeito do impacto da declaração de codificações.)
XHTML 1.0 pode ser servido como HTML ou XML. Se você servir como XML, use o tipo de MIME application/xhtml+xml.
Em geral, é uma boa idéia incluir uma declaração de DOCTYPE no topo de um arquivo HTML ou XHTML de maneira a que o documento seja renderizado em modo 'standards' na maioria dos agentes de usuário mais recentes.
A existência da declaração XML em um arquivo XHTML 1.0 servido como HTML fará com que o documento seja renderizado em modo 'quirks' no Internet Explorer 6 (vale dizer, para uma considerável quantidade de usuários).
Para maiores detalhes sobre os tópicos aqui tratados siga para Links relacionados , e leia as páginas e documentação ali apontadas .
Dê-nos a sua opinião (em inglês).
Traduzido de conteúdo em inglês datado de 2007-07-13. Última versão traduzida modificada 2007-07-16 11:18 GMT
Para obter o histórico de alterações do documento, faça uma busca por article-serving-xhtml no blog da i18n.
Copyright © 2004-2007 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply. Your interactions with this site are in accordance with our public and Member privacy statements.