Pergunta

Como o título descreve, quais são os diferentes doctypes disponível eo que eles significam? Eu noto que o layout parece um pouco diferente no IE7 quando eu mudar de

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

para

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Existem outros e quais são os efeitos ou ramificações?

Obrigado!

Foi útil?

Solução

A Doctype ou Document Type Declaration associa o documento com um Tipo de Documento Definição .

O Tipo de Documento Definição é um padrão para um documento XML. Há muitos DTDs, tanto para documentos XHTML XML e. XML em si não tem muito de um esquema ou um conjunto muito específico de regras, além da exigência de que tudo seja bem formado. Você pode pensar em uma DTD como um mais específico esquema para o documento .

Rendering Modos

Devido ao movimento padrões, os navegadores mais modernos realmente têm diferentes modos de renderização ( modo padrão , para tornar o seu documento e css de acordo com os padrões web mais recentes e peculiaridades modo , em que o navegador traz de volta algumas idéias de renderização desde os primeiros dias da web). Estes modos são instituídos para fins de compatibilidade com versões anteriores. A vasta paisagem de páginas da web que foram criados na primeira era da web são prestados de acordo com as regras do seu tempo, enquanto os documentos mais recentes pode apelar para a nova onda de padrões. Conforme o tempo passa e novos formatos são imaginados, uma DTD correspondente poderia ser criado.

As discrepâncias navegador

Em um mundo ideal, uma página que está sendo carregada por um navegador leria o Doctype no topo e usá-lo para procurar um Document Type Definition. Seria, então, usar o esquema que DTD como base para ler o restante do documento. Doctypes, então, seria essencial para a validação de documentos de marcação. O DTD iria fornecer o padrão contra o qual o documento está a ser validado.

Infelizmente, não é um mundo ideal. Navegadores não necessariamente se comportar de forma consistente aqui, e se o fizerem, o comportamento consistente não está totalmente em linha com a visão original para Doctypes. Embora a análise é feita independentemente do Doctype, os principais navegadores, pelo menos, examinar o Doctype para determinar o modo de processamento. Se o seu Doctype está ausente ou é incompleta, o navegador provavelmente será renderização em modo peculiaridades. Para bem escrito, documentos modernos para aparecer corretamente, o navegador deve ser renderização em modo padrão . Mozilla, Safari, e algumas versões recentes do Opera realmente implementar um Quase Padrões modo, o que é inteiramente dedicado a páginas de transição.

Quando você altera o Doctype e alterações aviso no caminho uma página é exibida, é porque o navegador pode ser a aplicação de um conjunto ligeiramente diferente de regras quando se tenta analisar o documento. Como consequência, a página resultante pode ser um pouco diferente, dependendo se todas as suas partes em conformidade com a DTD, ou pelo menos, dependendo do navegador, que seus valida os dados dentro do modo de renderização que o doctype sugere.

Escolhendo um Doctype

Em busca de padrões de conformidade, Doctypes rigorosas devem ser usados ??sempre que possível.

Ao escrever em XHTML , este Doctype é comum:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Ao escrever em HTML 4.1 , este é comum em vez disso:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

Alguns outros doctypes comuns para XHTML e HTML 4 estão listados aqui, para ser completo:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">

Debate sobre Strict contra Doctypes transitórias

Padrões evangelistas têm chamado para desenvolvedores web para parar de usar o Doctype transitória de novas páginas e use Strict. Mais uma vez, este é um caso em que a teoria e a prática tem algumas dificuldades estando já reconciliados. A esperança original do Doctype de transição foi o de fornecer uma casa de recuperação para a transição sites de legado para com padrões de conformidade. Com doctypes de transição, a restriçãoelementos e atributos é, literalmente, "menos rigorosa", para que os desenvolvedores seria capaz de obter o seu trabalho em execução no modo de padrões mais cedo, e fase as diferenças pendentes ao longo do tempo.

A controvérsia existe porque não é sempre tão simples para uma mudança desenvolvedor do Doctype em um ambiente corporativo. desenvolvedores independentes e fabricantes de sites de pequenas dimensões ou médio podem muitas vezes têm um tempo mais fácil determinar a sua Doctype e fazer essa transição. Em um ambiente de produção da empresa para um serviço baseado na web altamente exigiu, há dependências inerentemente mais complicados em sistemas legados e produtos de 3 código partido, que se pode estar em um roteiro para a remoção ou redesenhar, mas a execução de tais mudanças deve ser feito de forma metódica e progressivamente.

Ferramentas úteis

O W3C ( World Wide Web Consortium ) é um grupo que desempenha um papel activo na definição destes tipos de padrões. Eles mantêm uma ferramenta online útil em http://validator.w3.org/ para verificar e validar documentos contra os seus padrões. Existem muitas outras ferramentas 3rd party e extensões do navegador com funcionalidade semelhante.

Outras dicas

não se importam o doctype você usa (bem, quase true) , eles usá-lo para uma coisa e apenas uma coisa: para decidir qual modo de renderização de usar. Veja por exemplo Fx ou Opera documentação para exemplos do mundo real sobre o que algoritmos é usado para decidir qual o modo de usar (eu acho que há alguma documentação para IE enterrado em algum lugar MSDN também ... [Esta pode ser a página correta] ( http://msdn.microsoft.com/en-us/library/ms535242(VS.85).aspx) , eu não sei, sorry).

No entanto, existem dois modos principais na maioria dos navegadores (alguns navegadores têm um quase modo de padrões também):

    tentar tornar o documento como uma versão antiga do IE faria (um dos seguintes:
  • modo (usado quando nenhum tipo de documento "correta" é encontrado, "correta" dos navegadores ponto de vista) peculiaridades a maioria das diferenças importantes, ou seja, afeta tornando o mais, é que alguns navegadores explora a iE modelo de caixa bug neste modo),
  • e modo padrão (usado quando o navegador encontrou um doctype que considera correto.): Tentar fazer como os padrões diz

Você pode usar (o não-padrão) document.compatMode propriedade em anterior navegadores mencionados para verificar qual o modo que foi usado para processar o documento atual.

(Nota sobre XHTML: Eu assumi que você atendê-lo documentos como HTML (text/html), se você atendê-lo documentar como XHTML (provavelmente application/xhtml+xml) mais navegador salta em modo padrão diretamente e não se preocupam com o tipo de documento em tudo AFAIK .)

BTW: a recomendação (ou, o que parecia ser uma recomendação) na outra resposta é quebrado, o transição DTD não deve ser utilizado em novos documentos. Sempre use estrito (o termo "rigorosa" é uma espécie de induzir em erro, deve ser "default" ou qualquer outra coisa não assustador), período:

Os autores devem usar o DTD Strict quando possível, mas pode usar o DTD Transitional quando for necessário suporte para o atributo apresentação e elementos. - HTML 4.01: 22. Transitional Document Type Definition

Recomendamos que autores escrevem documentos que estejam em conformidade com o estrito DTD ao invés de outros DTDs definidas por esta especificação. - HTML 4.01: 4 Conformidade: requisitos e recomendações

E há muitos post sobre isso, por exemplo, DOCTYPEs não mais transitórias, por favor (a partir de 2006, mas alguns , obviamente, ainda têm problemas com isso:.)

Este post começou com apontando que os navegadores não importa o que você escolher, em seguida, desenvolvido em um discurso retórico sobre como escolher o DTD correto, interessante ... Mas se você estiver indo para gastar (/ resíduos?) tempo e energia para escolher um DTD assim como você pode escolher o correto (a partir de uma perspectiva padrão HTML 4.01 que é).

ou , você pode ignorar tudo isso e usar o seguinte em vez disso, breve qualquer maneira :

<!doctype html>

( Esta resposta a "qualquer razão para não começar a usar o doctype HTML 5?" era uma espécie de relacionados para a última parte.)

Aqui está a explicação oficial dos vários DTD do do W3C:

http://www.w3.org/QA/2002/04/valid-dtd-list .html

Você também pode encontrar o seguinte benéfico:

http://www.freedivs.com/tutorials/Choosing%20a%20DOCTYPE/

Há um monte de doctypes desinformação ao redor. A confusão decorre do fato de que doctypes originalmente foi concebido para uma finalidade (para identificar o DTD, ie. A versão HTML usado), mas em navegadores do mundo real são usados ??para um propósito completamente alheios.

declarações DOCTYPE são utilizados apenas para uma coisa No actual navegadores, que é a mudança entre peculiaridades Modo de renderização e padrões Modo de renderização para CSS. Então, basicamente, é um CSS-coisa, não uma coisa de HTML.

renderização modo Quirks é compatível com alguns velhos erros de renderização em navegadores mais antigos, e é principalmente útil para conteúdo legado você não quer correção. Novo conteúdo deve sempre usar o modo de padrões, uma vez que torna mais correto e consistente entre os navegadores. (Há ainda está prestando diferenças entre os navegadores ao usar o modo padrão, mas há muito pior no modo quirks.)

Ele faz não faz qualquer diferença se você escolher um HTML ou XHTML docytype, nem fará qualquer diferença se você escolher doctype estrito ou de transição. O modo de renderização é basicamente seleccionada como esta:

  • Se o documento não tem qualquer tipo de documento, peculiaridades modo selecionado.
  • Se o documento tiver um não reconhecido doctype, padrões modo selecionado. Isto significa que você pode escrever um doctype aleatório como <!DOCTYPE Chris> e irá funcionar perfeitamente bem.
  • doctypes oficiais do W3C sem a URL correta (a segunda cadeia na tag) seleciona peculiaridades Modo. modo de padrões todos os outros doctypes seleciona. (Edit: é claro que é mais complexo do que isso, e até mesmo difere entre os navegadores que de modo a doctypes gatilhos reconhecidos peculiaridades Se hsivonens visão geral , ligada a partir de uma outra resposta.)

doctypes Historicamente tinham a intenção de declarar qual versão e subconjunto de HTML foram usados. HTML4 define várias versões, onde "transitório" permite que um número de elementos de ans atributos que (como fonte) não é permitido em "rigorosa". Um navegador poderia, teoricamente, processar documentos "strict" diferentes do que -document "transição". No entanto nenhum navegador realmente faz isso .

Edit: pontos scunliffe fora que IE8 terá ainda um outro modo de renderização, o modo de "padrões do IE8". No entanto AFAIK este modo não é acionado por um doctype, mas por uma meta-tag.

Basicamente, o tipo de documento determina como louco IE vai ser.

Se você não configurá-lo para XHTML, ou "estrita" você vai estar vivendo em um mundo de dor quando se trata de IE (mesmo se você configurá-lo, você ainda vai ser odiando no IE, mas faz com que seja muito melhor).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top