Skip to main content
Validação HTML

O atributo com o nome local “xmlns:svg” não é serializável como XML 1.0.

Sobre este problema HTML

O atributo xmlns define o namespace XML para um elemento. Para SVG, o namespace correto é http://www.w3.org/2000/svg, declarado com xmlns="http://www.w3.org/2000/svg". O atributo xmlns:svg tenta declarar uma vinculação de namespace prefixado adicional — essencialmente mapeando o prefixo svg: para o mesmo URI de namespace. Isto é redundante porque o namespace padrão (sem prefixo) já cobre todos os elementos SVG.

No HTML5, o parser gere os namespaces internamente. A especificação HTML apenas permite um pequeno conjunto de atributos de namespace: xmlns em certos elementos (como <svg> e <math>) e xmlns:xlink para compatibilidade legada. Declarações de namespace prefixado arbitrárias como xmlns:svg não fazem parte do formato de serialização HTML. O validador W3C levanta este erro porque atributos contendo dois pontos nos seus nomes locais (além daqueles especificamente permitidos) não podem ser processados de forma bidirecional através do parser e serializador HTML — não são “serializáveis como XML 1.0.”

Porque isto importa

  • Conformidade com padrões: O HTML5 tem regras rigorosas sobre quais declarações de namespace são permitidas. Usar xmlns:svg viola estas regras.
  • Problemas de serialização: Se um browser analisar o HTML e depois o re-serializar (por exemplo, via innerHTML), o atributo xmlns:svg pode ser perdido, alterado ou causar comportamento inesperado porque está fora do conjunto de atributos serializáveis.
  • Redundância: Mesmo em documentos XML/SVG puros, declarar xmlns:svg="http://www.w3.org/2000/svg" juntamente com xmlns="http://www.w3.org/2000/svg" é desnecessário. O namespace padrão já se aplica ao elemento <svg> e a todos os seus descendentes sem prefixo.

Como corrigir

  1. Localize o elemento <svg> (ou qualquer elemento) que contém o atributo xmlns:svg.
  2. Remova xmlns:svg="http://www.w3.org/2000/svg" inteiramente.
  3. Certifique-se de que o atributo padrão xmlns="http://www.w3.org/2000/svg" permanece se necessário (note que quando incorpora SVG inline num documento HTML5, até mesmo xmlns é opcional visto que o parser HTML infere o namespace automaticamente).

Exemplos

Incorreto: declaração de namespace prefixado redundante

<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40" fill="blue" />
</svg>

O atributo xmlns:svg desencadeia o erro de validação porque não é serializável em HTML.

Correto: apenas namespace padrão

<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 HTML5 sem qualquer atributo de namespace

Quando o SVG é incorporado diretamente num documento HTML5, o parser HTML atribui automaticamente o namespace correto, por isso pode omitir xmlns completamente:

<svg viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40" fill="blue" />
</svg>

Isto é perfeitamente válido e é o padrão mais comum para SVG inline em HTML moderno. O atributo xmlns só é estritamente necessário quando o SVG é servido como um ficheiro XML autónomo (com uma extensão .svg ou um tipo de conteúdo image/svg+xml).

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.