Declaração de tipo de documento - Document type declaration

Uma declaração de tipo de documento , ou DOCTYPE , é uma instrução que associa um determinado documento XML ou SGML (por exemplo, uma página da web ) com uma definição de tipo de documento (DTD) (por exemplo, a definição formal de uma versão específica de HTML 2.0 - 4.0 ) Na forma serializada do documento, ele se manifesta como uma string curta de marcação que está de acordo com uma sintaxe específica.

Os mecanismos de layout HTML em navegadores modernos executam DOCTYPE "sniffing" ou "switching", em que o DOCTYPE em um documento serve para determinar um modo de layout, como " modo quirks " ou "modo padrão". A serialização de HTML5 , que não é baseada em SGML, usa o DOCTYPE apenas para seleção de modo. Como os navegadores da web são implementados com analisadores HTML de propósito especial, em vez de analisadores baseados em DTD de uso geral, eles não usam DTDs e nunca os acessarão, mesmo se um URL for fornecido. O DOCTYPE é mantido no HTML5 como um cabeçalho "quase inútil, mas obrigatório" apenas para acionar o "modo padrão" em navegadores comuns. text/htmltext/html

DTDs

Sintaxe

A sintaxe geral para uma declaração de tipo de documento é:

<!DOCTYPE root-element PUBLIC "FPI" ["URI"] [ 
<!-- internal subset declarations -->
]>

ou

<!DOCTYPE root-element SYSTEM "URI" [ 
<!-- internal subset declarations -->
]>

Em XML, o elemento raiz que representa o documento é o primeiro elemento no documento. Por exemplo, em XHTML, o elemento raiz é <html>, sendo o primeiro elemento aberto (após a declaração doctype) e fechado pela última vez. As palavras-chave SYSTEM e PUBLIC sugerem que tipo de Document Type Definition (DTD) é (aquele que está em um sistema privado ou que está aberto ao público). Se a palavra-chave PUBLIC for escolhida, essa palavra-chave será seguida por uma forma restrita de "identificador público" chamado Identificador Público Formal (FPI) entre aspas duplas. Depois disso, necessariamente, é fornecido um "identificador de sistema" entre aspas duplas. Por exemplo, o FPI para XHTML 1.1 é "- // W3C // DTD XHTML 1.1 // EN" e, existem 3 identificadores de sistema possíveis para XHTML 1.1 dependendo das necessidades, um deles é a referência URI " http: //www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ". Se, em vez disso, a palavra-chave SYSTEM for escolhida, apenas um identificador de sistema deve ser fornecido. Isso significa que o analisador XML deve localizar o DTD de maneira específica do sistema, neste caso, por meio de uma referência URI do DTD entre aspas duplas. A última parte, cercada por colchetes literais ([]), é chamada de subconjunto interno que pode ser usado para adicionar / editar entidades ou adicionar / editar comportamentos de palavras-chave PUBLIC. O subconjunto interno é sempre opcional (e às vezes até proibido em perfis SGML simples, notavelmente aqueles para analisadores HTML básicos que não implementam um analisador SGML completo).

Por outro lado, as declarações de tipo de documento são ligeiramente diferentes em documentos baseados em SGML, como HTML, onde o identificador público pode ser associado ao identificador do sistema. Essa associação pode ser realizada, por exemplo, por meio de um arquivo de catálogo resolvendo o FPI para um identificador de sistema.

Exemplo

A primeira linha de uma página da World Wide Web pode ser lida da seguinte forma:

<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="ar" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">

Esta declaração de tipo de documento para XHTML inclui por referência um DTD, cujo público e cujo identificador de sistema é http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd. Um resolvedor de entidade pode usar qualquer um dos identificadores para localizar a entidade externa referenciada. Nenhum subconjunto interno foi indicado neste exemplo ou nos próximos. O elemento raiz é declarado ser htmle, portanto, é a primeira tag a ser aberta após o final da declaração doctype neste exemplo e nos próximos também. A tag HTML não faz parte da declaração doctype, mas foi incluída nos exemplos para fins de orientação.

DTDs comuns

Alguns DTDs comuns foram colocados em listas. O W3C produziu uma lista de DTDs comumente usados ​​na web, que contém o DTD HTML5 "simples", DTDs XHTML / HTML mais antigos, DTDs de formatos baseados em XML incorporados comuns como MathML e SVG , bem como documentos "compostos" que os combinam formatos. Tanto o W3C HTML5 quanto sua versão WHATWG correspondente recomendam que os navegadores aceitem apenas DTDs XHTML de certos FPIs e prefiram usar lógica interna em vez de buscar arquivos DTD externos. Ele também especifica um "DTD interno" para XHTML, que é meramente uma lista de nomes de entidades HTML.

DTDs HTML 4.01

O Strict DTD não permite marcação de apresentação com o argumento de que as folhas de estilo em cascata devem ser usadas para isso. É assim que o Strict DTD se parece:

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

O DTD transicional permite alguns PUBLIC mais antigos e atributos que foram descontinuados:

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

Se forem usados quadros , o DTD do conjunto de quadros deve ser usado, como este:

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

DTDs XHTML 1.0

Os DTDs do XHTML também são Strict, Transitional e Frameset.

XHTML Strict DTD. Nenhuma tag obsoleta é suportada e o código deve ser escrito corretamente de acordo com a Especificação XML.

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

O XHTML Transitional DTD é como o XHTML Strict DTD, mas tags obsoletas são permitidas.

 <?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 xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

XHTML Frameset DTD é o único XHTML DTD que oferece suporte a Frameset. O DTD está abaixo.

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

XHTML 1.1 DTD

XHTML 1.1 é a revisão finalizada mais recente de XHTML, apresentando suporte para modularização XHTML . O XHTML 1.1 tem o rigor do XHTML 1.0 Strict.

<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML 1.1//EN"
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

DTDs XHTML Basic

XHTML Basic 1.0

<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML Basic 1.0//EN"
  "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">

XHTML Basic 1.1

<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML Basic 1.1//EN"
  "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">

HTML5 DTD-less DOCTYPE

O HTML5 usa uma DOCTYPEdeclaração muito curta, devido à falta de referências a um DTD na forma de URL ou FPI. Tudo o que ele contém é o nome da marca do elemento raiz do documento HTML,. Nas palavras do próprio rascunho de especificações:

Em outras palavras, <!DOCTYPE html>não faz distinção entre maiúsculas e minúsculas.

Com exceção da falta de um URI ou da string FPI (a string FPI é tratada com distinção entre maiúsculas e minúsculas pelos validadores), este formato (uma correspondência da string sem distinção entre maiúsculas e minúsculas !DOCTYPE HTML) é o mesmo encontrado na sintaxe do HTML baseado em SGML 4.01 DOCTYPE. Tanto no HTML4 quanto no HTML5, a sintaxe formal é definida em letras maiúsculas, mesmo que ambas as minúsculas e combinações de minúsculas e maiúsculas também sejam tratadas como válidas.

Em XHTML5 o DOCTYPEdeve haver uma correspondência entre maiúsculas e minúsculas da string " <!DOCTYPE html>". Isso ocorre porque na sintaxe XHTML, todos os nomes de elementos HTML devem estar em letras minúsculas, incluindo o elemento raiz referenciado dentro do HTML5 DOCTYPE.

O DOCTYPEé opcional em XHTML5 e pode ser simplesmente omitido. No entanto, se a marcação for processada como XML e HTML , um DOCTYPE deve ser usado.

Veja também

Referências

links externos