Sobre este problema HTML
Os namespaces XML são identificados por strings URI que funcionam como nomes únicos. Nunca são obtidos ou carregados pelo navegador — servem simplesmente como um identificador que deve coincidir exatamente com o que a especificação define. O namespace XLink foi definido como http://www.w3.org/1999/xlink desde a sua criação, e alterar o protocolo para https cria uma string completamente diferente que os parsers e validadores não reconhecem.
É um erro comum e compreensível. Os programadores são treinados para preferir URLs https:// em todo o lado por questões de segurança, e muitas ferramentas de linting ou hábitos podem encorajar a conversão automática de http:// para https://. No entanto, os URIs de namespace são um caso especial onde esta regra não se aplica. A string é puramente declarativa — não é feito nenhum pedido de rede e não há benefício de segurança em usar https.
Também vale a pena notar que o atributo xmlns:xlink está largamente obsoleto no HTML moderno. Quando o SVG está incorporado diretamente num documento HTML5, os navegadores lidam automaticamente com a resolução de namespaces. Só precisa de xmlns:xlink quando servir SVG como XML autónomo (com um ficheiro .svg ou tipo de conteúdo application/xhtml+xml). Na maioria dos casos, pode simplesmente remover o atributo completamente e usar xlink:href ou, ainda melhor, o atributo href simples, que agora é suportado em elementos SVG como <use>, <image> e <a>.
Exemplos
Incorreto: usar https:// no URI do namespace
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink">
<use xlink:href="#icon-star"></use>
</svg>
Isto desencadeia o erro de validação porque https://www.w3.org/1999/xlink não corresponde ao identificador de namespace necessário.
Corrigido: usar o URI de namespace http:// correto
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<use xlink:href="#icon-star"></use>
</svg>
Preferível: remover o namespace e usar href simples
No HTML5, pode remover completamente a declaração xmlns:xlink e usar o atributo href padrão em vez de xlink:href:
<svg xmlns="http://www.w3.org/2000/svg">
<use href="#icon-star"></use>
</svg>
Esta é a abordagem mais limpa para SVG inline em documentos HTML modernos. O atributo xlink:href está depreciado no SVG 2, e todos os navegadores modernos suportam href simples em elementos de ligação SVG.
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: