Acerca de este problema HTML
Las URI de espacios de nombres en XML (y por extensión en HTML) son identificadores, no URLs reales que un navegador descarga. Las especificaciones de W3C y WHATWG definen http://www.w3.org/1998/Math/MathML como el único espacio de nombres válido para MathML. Aunque http:// y https:// apuntan al mismo servidor en la práctica, son cadenas diferentes — y la coincidencia de espacios de nombres es puramente una comparación de cadenas. Usar https://www.w3.org/1998/Math/MathML crea lo que la especificación considera un espacio de nombres completamente diferente (y no reconocido).
Este es un error común porque las mejores prácticas modernas fomentan el uso de https:// para todo en la web. Sin embargo, estas URI de espacios de nombres se estandarizaron mucho antes de que HTTPS se convirtiera en la norma, y cambiarlas rompería la compatibilidad hacia atrás en todo el ecosistema XML. La especificación es explícita: solo se permite http://www.w3.org/1998/Math/MathML.
Cómo solucionarlo
Tienes dos opciones dependiendo del tipo de documento:
-
HTML5 (recomendado): Simplemente elimina el atributo
xmlnsdel elemento<math>. El analizador HTML5 reconoce<math>y automáticamente lo coloca en el espacio de nombres MathML correcto. No se necesita declaración explícita. -
Documentos XHTML o XML: Si estás sirviendo tu documento como
application/xhtml+xmlo trabajando en un contexto XML donde se requieren espacios de nombres explícitos, usa la URI exactahttp://www.w3.org/1998/Math/MathMLconhttp://.
La misma regla aplica a otros espacios de nombres conocidos como SVG (http://www.w3.org/2000/svg) y XHTML (http://www.w3.org/1999/xhtml) — siempre usa la forma http:// especificada en el estándar.
Ejemplos
Inválido: usar https:// en la URI del espacio de nombres
El esquema https:// causa el error de validación:
<math xmlns="https://www.w3.org/1998/Math/MathML">
<mi>x</mi><mo>+</mo><mn>1</mn>
</math>
Solucionado: omitir xmlns en HTML5
En un documento HTML5, el analizador maneja el espacio de nombres automáticamente, así que la solución más limpia es eliminar xmlns completamente:
<!DOCTYPE html>
<html lang="en">
<head>
<title>MathML Example</title>
</head>
<body>
<math>
<mi>x</mi><mo>+</mo><mn>1</mn>
</math>
</body>
</html>
Solucionado: usar la URI http:// correcta
Si necesitas declarar explícitamente el espacio de nombres (por ejemplo, en XHTML servido como XML), usa la URI http:// exacta:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mi>x</mi><mo>+</mo><mn>1</mn>
</math>
Comparación rápida
| Código | ¿Válido? |
|---|---|
<math xmlns="https://www.w3.org/1998/Math/MathML"> |
❌ Esquema incorrecto |
<math xmlns="http://www.w3.org/1998/Math/MathML"> |
✅ URI correcta |
<math> (en HTML5) |
✅ Espacio de nombres implícito |
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.