Skip to main content

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:

  1. HTML5 (recomendado): Simplesmente remova o atributo xmlns do elemento <math>. O parser HTML5 reconhece <math> e automaticamente o coloca no namespace MathML correto. Nenhuma declaração explícita é necessária.

  2. Documentos XHTML ou XML: Se estiver servindo o seu documento como application/xhtml+xml ou trabalhando num contexto XML onde namespaces explícitos são obrigatórios, use o URI exato http://www.w3.org/1998/Math/MathML com http://.

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.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

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