Sobre este problema HTML
Um URI de namespace XML é um identificador único, não um endereço web real que o seu browser vai buscar. O namespace SVG foi definido como http://www.w3.org/2000/svg na especificação original do SVG, e essa string exata é o que os parsers HTML e validadores esperam. Mesmo que usar https em todo o lado seja uma boa prática para pedidos de rede reais, os URIs de namespace não são pedidos de rede — são simplesmente strings fixas usadas para identificar a que vocabulário XML um elemento pertence.
Quando escreve https://www.w3.org/2000/svg em vez de http://www.w3.org/2000/svg, o validador vê um namespace não reconhecido. Isto também pode causar problemas em certos contextos baseados em XML (como XHTML ou ficheiros SVG independentes), onde o browser pode falhar ao reconhecer o elemento como SVG, resultando em gráficos que não são renderizados. No modo HTML5 padrão, a maioria dos browsers ainda renderizará SVGs inline corretamente independentemente do valor xmlns, mas a marcação é tecnicamente inválida e pode causar problemas em ambientes de parsing mais rigorosos como serializadores XML, renderizadores do lado do servidor, ou ferramentas que processam SVG como XML.
Este erro é especialmente comum porque muitos programadores mudam reflexivamente http para https — ou o seu editor ou linter faz isso automaticamente — quando veem uma string parecida com um URL. O mesmo princípio aplica-se a outros URIs de namespace como http://www.w3.org/1999/xhtml para HTML e http://www.w3.org/1998/Math/MathML para MathML. Estes são todos identificadores fixos que não devem ser alterados.
Como corrigir
Substitua https:// por http:// no valor do atributo xmlns. É só isso — não são necessárias outras alterações.
Se o seu projeto usar ferramentas automatizadas que reescrevem URLs http para https, pode precisar de configurar uma exceção para URIs de namespace XML.
Exemplos
❌ Incorreto: usar https no URI do namespace
<svg xmlns="https://www.w3.org/2000/svg" viewBox="0 0 100 100">
<circle cx="50" cy="50" r="40" fill="blue" />
</svg>
Isto desencadeia o erro de validação porque https://www.w3.org/2000/svg não é um valor de namespace reconhecido.
✅ Correto: usar http no URI do namespace
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<circle cx="50" cy="50" r="40" fill="blue" />
</svg>
✅ Correto: SVG inline em HTML sem xmlns
Quando incorpora SVG diretamente dentro de um documento HTML5, o atributo xmlns é opcional — o parser HTML atribui automaticamente o namespace correto aos elementos <svg>:
<svg viewBox="0 0 100 100">
<circle cx="50" cy="50" r="40" fill="blue" />
</svg>
Isto é HTML5 perfeitamente válido. Você só precisa do atributo xmlns quando o SVG é servido como um ficheiro .svg independente ou usado dentro de um documento XHTML.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.
Saiba mais: