Você precisa fechar meta e vincular tags em HTML?

133

Eu estava lendo o HTML de alguém que nunca fechou meta e tags de link na seção principal do HTML. O código funcionou bem; o fechamento dessas tags é opcional?

Eu pensei que seria deformado se uma tag não fosse fechada.

bcollins
fonte

Respostas:

167

Uma tag sempre deve ser fechada pelo símbolo de fechamento da tag >(se ignorarmos certas regras SGML que se aplicam nominalmente em HTML não XHTML, mas nunca foram implementadas nos navegadores).

O que você quer perguntar é se os elementos precisam ser fechados pelas tags finais. A resposta é que HTML não XHTML (incluindo HTML5 na serialização HTML), nenhuma tag final é necessária ou permitida metae linkelementos. Na prática, no entanto, os navegadores simplesmente ignoram as tags finais explícitas para eles, bem como o culto à carga /antes >, se você as usar. E o HTML5 torna essa permissividade uma regra, mesmo permitindo formalmente a /serialização HTML também.

No XHTML, as regras XML se aplicam, portanto, todo elemento, sem exceção, deve ter uma marca inicial e uma marca final, mas a mesma marca pode ser usada para ambas as funções se o conteúdo do elemento estiver vazio, por exemplo, <meta name="foo" content="bar"/>como abreviação <meta name="foo" content="bar"></meta>. Se você violar isso ao veicular um documento com um tipo de conteúdo XML (XHTML) em um navegador compatível, seu documento não será exibido; uma mensagem de erro é mostrada.

Ao usar um servidor XHTML com o tipo de conteúdo HTML ( Content-Type: text/html), como os documentos XHTML quase sempre estão na Web, os navegadores realmente aplicarão as regras HTML não XHTML.

Para resumir:

  • normalmente, use apenas <meta ...>sem/
  • se você realmente estiver usando XHTML em um contexto em que a análise XHTML é realmente aplicada, siga as regras XML (e certifique-se de conhecê-las)
  • se o seu chefe lhe disser para escrever <meta ... />, faça-o; não é útil, mas não causa danos (exceto se você tentar validar, por exemplo, o doctype do HTML 4.01).
Jukka K. Korpela
fonte
3
O uso de /> causou um problema em que o google bot não reconheceu a tag meta robots. estranho!!!
DevZer0
13
Considero o termo "culto à carga" inadequado neste contexto. Algumas pessoas fecham esses elementos, simplesmente porque reprimem que o XHTML não prevaleceu.
Marcus
6
Alerta de pedante! "Culto à carga" não é hifenizado na prática normal, mas apenas quando se usa a frase inteira como um adjetivo para outra coisa (por exemplo, "programação do culto à carga", "culto à carga /antes >"). Só pensei em esclarecer para evitar confundir a Internet com mais confusão. </pedant_alert>:)
Aaron Wallentine
1
@ DevZer0 - você tem certeza de que a barra foi a causa? Eu esperaria que o Google fosse flexível com coisas assim.
Simon East
3
Não está tornando seu HTML consistente com as regras XHTML um motivo para incluir o / antes>?
Kyle Delaney
28

Depende do doctype. O HTML5 não precisa do fechamento. XHTML faz.

No HTML5, os chamados elementos nulos (elementos que não podem ter conteúdo) não precisam do fechamento, pois são fechados automaticamente. Mas ainda é válido se você fechá-los ..

Leia mais sobre isso aqui: void-elements

Sebsemillia
fonte
4
O HTML5 possui duas serializações, e uma delas (serialização XHTML) torna obrigatórias as tags finais.
Jukka K. Korpela 22/10/2013