Sobre este problema HTML
O atributo xmlns:v declara o namespace XML urn:schemas-microsoft-com:vml, que habilitava a Vector Markup Language proprietária da Microsoft nas versões 5 a 8 do Internet Explorer. O VML era uma forma de renderizar formas vetoriais diretamente em HTML antes do SVG ganhar suporte amplo nos navegadores. Quando se trabalhava com documentos baseados em XML (como XHTML), declarações de namespace como xmlns:v eram sintaticamente válidas. No entanto, HTML5 não é uma linguagem XML — tem as suas próprias regras de análise e reconhece apenas um conjunto limitado de declarações de namespace no elemento <html>, especificamente xmlns (para o namespace XHTML padrão) e xmlns:xlink (em certos contextos SVG/MathML). Qualquer outro atributo xmlns:*, incluindo xmlns:v, xmlns:o, e xmlns:w, desencadeia um erro de validação.
Por que isto é um problema
Conformidade com os padrões: A especificação HTML5 explicitamente não permite declarações de namespace XML arbitrárias. O validador W3C sinaliza xmlns:v porque não faz parte do conjunto de atributos HTML5 para qualquer elemento.
Sem suporte de navegadores modernos: O VML só era suportado no Internet Explorer, que foi descontinuado. Nenhum navegador atual renderiza conteúdo VML, por isso a declaração de namespace não serve qualquer propósito.
Limpeza do código: Manter atributos legados e não funcionais bagunça a sua marcação e pode confundir programadores que fazem manutenção do código. Também pode causar problemas com analisadores HTML, linters e ferramentas de build que impõem conformidade estrita com HTML5.
Como corrigir
-
Remova o atributo
xmlns:vda sua tag<html>(ou onde quer que apareça). -
Remova quaisquer atributos de namespace relacionados como
xmlns:o(namespace Office) ouxmlns:w(namespace Word), que também são inválidos em HTML5 e frequentemente aparecem junto comxmlns:v. -
Substitua conteúdo VML por SVG se a sua página dependia de VML para gráficos vetoriais. SVG é suportado nativamente em todos os navegadores modernos e não requer declaração de namespace no elemento
<html>. -
Certifique-se de que o atributo
langestá definido no elemento<html>para acessibilidade, já que está a editar essa linha.
Exemplos
Inválido: usar xmlns:v no elemento html
<!DOCTYPE html>
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word">
<head>
<title>My Page</title>
</head>
<body>
<p>Hello world</p>
</body>
</html>
Isto desencadeia múltiplos erros de validação — um para cada atributo xmlns:* que HTML5 não reconhece.
Válido: atributos de namespace removidos
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
</head>
<body>
<p>Hello world</p>
</body>
</html>
Substituir VML por SVG
Se a sua página usava VML para desenhar formas, substitua a marcação VML por SVG inline. Não é necessária declaração de namespace em <html> — o elemento <svg> carrega o seu próprio namespace implicitamente em HTML5.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Vector Graphics with SVG</title>
</head>
<body>
<svg width="200" height="200" aria-label="Blue circle">
<circle cx="100" cy="100" r="80" fill="steelblue" />
</svg>
</body>
</html>
Fontes comuns deste problema
Este atributo aparece frequentemente em HTML que foi:
- Exportado do Microsoft Word ou Outlook. Estas aplicações geram HTML com declarações de namespace VML para formas, efeitos de texto e formatação de email.
- Copiado de templates legados. Templates de websites mais antigos e templates de email às vezes incluíam VML para cantos arredondados ou imagens de fundo no Internet Explorer.
- Gerado por editores WYSIWYG desatualizados que visavam versões antigas do IE.
Se está a trabalhar com templates de email HTML, note que alguns clientes de email (nomeadamente versões antigas do Outlook desktop) ainda usam o motor de renderização do Word e podem depender de VML para certos efeitos como imagens de fundo. Nesse contexto, você pode intencionalmente manter VML na sua fonte de email — mas esteja ciente de que a marcação não passará na validação HTML5. Para páginas web, não há razão para manter estes atributos.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.