Sobre este problema HTML
O elemento <html> serve como a raiz de um documento HTML. De acordo com a especificação HTML, só pode existir um elemento raiz, e deve conter exatamente um elemento <head> seguido de um elemento <body>. Quando o analisador do navegador encontra uma segunda etiqueta de abertura <html>, não sabe o que fazer com ela — a etiqueta é considerada “perdida” porque aparece num contexto onde não é esperada ou permitida.
Este erro ocorre tipicamente em alguns cenários comuns:
-
Erros de copiar-colar — Ao copiar HTML de outro ficheiro, pode acidentalmente colar um documento inteiro (incluindo a sua etiqueta
<html>) dentro de um documento existente. -
Erros de template ou inclusão — Inclusões do lado do servidor, motores de template, ou frameworks baseados em componentes podem injetar uma estrutura completa de documento HTML (com a sua própria etiqueta
<html>) numa página que já tem uma. - Fusão incorreta de ficheiros — Combinar múltiplos ficheiros HTML sem remover as etiquetas estruturais dos ficheiros internos.
-
Duplicação acidental — Simplesmente ter uma etiqueta
<html>duplicada devido a um erro de digitação ou descuido de edição.
Uma etiqueta <html> perdida sinaliza uma estrutura de documento mal formada. Os navegadores tentarão recuperar ignorando a etiqueta duplicada, mas a intenção por trás da marcação torna-se ambígua. Isto pode levar a renderização imprevisível, estilos quebrados, ou scripts que falham ao direcionar elementos corretamente. Também prejudica a acessibilidade, pois leitores de ecrã e outras tecnologias assistivas dependem de uma árvore de documento bem formada para interpretar o conteúdo.
Para corrigir este problema, procure no seu código fonte HTML por todas as instâncias de <html e certifique-se de que apenas uma existe — no topo do documento, logo após a declaração <!DOCTYPE html>. Se encontrar uma segunda, remova-a juntamente com quaisquer etiquetas duplicadas correspondentes </html>, <head>, </head>, <body>, e </body> que vieram com ela, mantendo apenas o conteúdo real de que necessita.
Exemplos
Incorreto: Etiqueta <html> duplicada do conteúdo colado
Este exemplo mostra um documento HTML completo acidentalmente incorporado dentro de outro, o que produz o erro de etiqueta de abertura perdida:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
</head>
<body>
<h1>Welcome</h1>
<!-- Accidentally pasted another full document -->
<!DOCTYPE html>
<html lang="en">
<head>
<title>Other Page</title>
</head>
<body>
<p>This content was pasted from another file.</p>
</body>
</html>
</body>
</html>
Correto: Elemento <html> único com conteúdo fusionado
Remova a estrutura de documento duplicada e mantenha apenas o conteúdo de que necessita:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
</head>
<body>
<h1>Welcome</h1>
<!-- Only the relevant content from the other file -->
<p>This content was pasted from another file.</p>
</body>
</html>
Incorreto: Etiqueta <html> duplicada acidental
Por vezes a duplicação é um simples erro de digitação:
<!DOCTYPE html>
<html lang="en">
<html lang="en">
<head>
<title>My Page</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
Correto: Etiqueta <html> única
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
Verificar projetos baseados em templates
Se usa um sistema de templates (por exemplo, inclusões PHP, Jinja2, Handlebars, ou similar), certifique-se de que os seus parciais e inclusões contêm apenas fragmentos de conteúdo — não estruturas completas de documento. Por exemplo, um parcial incluído deve parecer-se com isto:
<!-- partial: sidebar.html — no <html>, <head>, or <body> tags -->
<aside>
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
</ul>
</nav>
</aside>
A regra chave é simples: todo o documento HTML deve ter exatamente um elemento <html>. Se o validador reportar uma etiqueta de abertura perdida, rastreie-a de volta à sua origem — seja um erro de copiar-colar, uma inclusão de template, ou uma simples duplicação — e remova-a.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.