Sobre este problema HTML
URIs de namespace em XML (e por extensão em HTML) são identificadores, não URLs reais que um navegador busca. As especificações do W3C e WHATWG definem http://www.w3.org/1998/Math/MathML como o único namespace válido para MathML. Mesmo que http:// e https:// apontem para o mesmo servidor na prática, são strings diferentes — e a correspondência de namespace é puramente uma comparação de strings. Usar https://www.w3.org/1998/Math/MathML cria o que a especificação considera um namespace completamente diferente (e não reconhecido).
Este é um erro comum porque as melhores práticas modernas encorajam o uso de https:// para tudo na web. No entanto, estes URIs de namespace foram padronizados muito antes de HTTPS se tornar a norma, e alterá-los quebraria a compatibilidade com versões anteriores em todo o ecossistema XML. A especificação é explícita: apenas http://www.w3.org/1998/Math/MathML é permitido.
Como corrigir
Você tem duas opções dependendo do tipo de documento:
-
HTML5 (recomendado): Simplesmente remova o atributo
xmlnsdo elemento<math>. O parser HTML5 reconhece<math>e automaticamente o coloca no namespace MathML correto. Nenhuma declaração explícita é necessária. -
Documentos XHTML ou XML: Se estiver servindo o seu documento como
application/xhtml+xmlou trabalhando num contexto XML onde namespaces explícitos são obrigatórios, use o URI exatohttp://www.w3.org/1998/Math/MathMLcomhttp://.
A mesma regra aplica-se a outros namespaces bem conhecidos como SVG (http://www.w3.org/2000/svg) e XHTML (http://www.w3.org/1999/xhtml) — use sempre a forma http:// especificada no padrão.
Exemplos
Inválido: usar https:// no URI de namespace
O esquema https:// causa o erro de validação:
<math xmlns="https://www.w3.org/1998/Math/MathML">
<mi>x</mi><mo>+</mo><mn>1</mn>
</math>
Corrigido: omitir xmlns no HTML5
Num documento HTML5, o parser gere o namespace automaticamente, por isso a correção mais limpa é remover completamente o xmlns:
<!DOCTYPE html>
<html lang="en">
<head>
<title>MathML Example</title>
</head>
<body>
<math>
<mi>x</mi><mo>+</mo><mn>1</mn>
</math>
</body>
</html>
Corrigido: usar o URI http:// correto
Se precisar declarar explicitamente o namespace (por exemplo, em XHTML servido como XML), use o URI http:// exato:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mi>x</mi><mo>+</mo><mn>1</mn>
</math>
Comparação rápida
| Código | Válido? |
|---|---|
<math xmlns="https://www.w3.org/1998/Math/MathML"> |
❌ Esquema errado |
<math xmlns="http://www.w3.org/1998/Math/MathML"> |
✅ URI correto |
<math> (em HTML5) |
✅ Namespace implícito |
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.