Skip to main content
Validación HTML

Se encontró “<?”. Causa probable: Intento de usar una instrucción de procesamiento XML en HTML. (Las instrucciones de procesamiento XML no están soportadas en HTML.)

Acerca de este problema HTML

Las instrucciones de procesamiento XML son una característica de XML, no de HTML. Comienzan con <? y terminan con ?>, y se usan en documentos XML para llevar instrucciones para las aplicaciones que procesan el documento. El ejemplo más común es la declaración XML: <?xml version="1.0" encoding="UTF-8"?>. Aunque estas son perfectamente válidas en XML, el analizador HTML no las reconoce. Cuando el analizador encuentra <?, no sabe cómo manejarlo y lo trata como un comentario erróneo, lo que lleva a un comportamiento inesperado y este error de validación.

Esto es importante por varias razones. Primero, el cumplimiento de estándares — HTML5 tiene un algoritmo de análisis claramente definido, y las instrucciones de procesamiento no son parte de él. Segundo, el comportamiento del navegador se vuelve impredecible — diferentes navegadores pueden manejar el contenido <? inesperado de manera diferente, potencialmente exponiendo código sin procesar o rompiendo tu diseño. Tercero, si código del lado del servidor como PHP se filtra en la salida, puede exponer lógica sensible o detalles de configuración a los usuarios finales.

Hay tres causas comunes de este error:

1. Insertar archivos SVG con su declaración XML. Cuando copias el contenido de un archivo .svg y lo pegas directamente en HTML, el archivo a menudo comienza con una declaración XML y posiblemente una instrucción de procesamiento <?xml-stylesheet?>. Estas deben eliminarse — solo el elemento <svg> y sus hijos deben incluirse.

2. Código del lado del servidor sin procesar. Lenguajes como PHP usan la sintaxis <?php ... ?> (o la etiqueta corta <? ... ?>). Si el servidor no está configurado para procesar archivos PHP, o si un archivo .html contiene código PHP sin ser enrutado a través del intérprete PHP, las etiquetas <?php sin procesar terminan en el HTML enviado al navegador.

3. Copiar y pegar contenido XML. Otros formatos basados en XML (como feeds RSS, fragmentos XHTML, o MathML con declaraciones XML) pueden incluir instrucciones de procesamiento que no son válidas en HTML.

Cómo solucionarlo

  • Para SVGs inline: Abre el archivo SVG en un editor de texto y copia solo el elemento <svg>...</svg>. Elimina la declaración <?xml ...?> y cualquier otra instrucción de procesamiento que preceda a la etiqueta <svg>.
  • Para PHP u otro código del lado del servidor: Asegúrate de que tu servidor esté configurado correctamente para procesar los archivos. Verifica que la extensión del archivo coincida con lo que el servidor espera (ej., .php para archivos PHP). Confirma que el lenguaje del lado del servidor esté instalado y funcionando.
  • Para otro contenido XML: Elimina cualquier instrucción de procesamiento <?...?> antes de insertar el contenido en HTML.

Ejemplos

❌ SVG inline con declaración XML

<body>
  <?xml version="1.0" encoding="UTF-8"?>
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
    <circle cx="50" cy="50" r="40" fill="blue" />
  </svg>
</body>

La línea <?xml version="1.0" encoding="UTF-8"?> desencadena el error.

✅ SVG inline sin declaración XML

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

❌ Código PHP sin procesar en la salida HTML

<body>
  <h1>Welcome</h1>
  <p><?php echo "Hello, World!"; ?></p>
</body>

Si el servidor no procesa el PHP, el <?php ... ?> sin procesar termina en el HTML y desencadena este error.

✅ Salida procesada correctamente (o equivalente HTML estático)

<body>
  <h1>Welcome</h1>
  <p>Hello, World!</p>
</body>

❌ SVG con una instrucción de procesamiento de hoja de estilos XML

<body>
  <?xml-stylesheet type="text/css" href="style.css"?>
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
    <rect width="50" height="50" fill="red" />
  </svg>
</body>

✅ SVG sin la instrucción de procesamiento

<body>
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
    <rect width="50" height="50" fill="red" />
  </svg>
</body>

En HTML, usa elementos estándar <link> o <style> en el <head> para las hojas de estilos en lugar de instrucciones de procesamiento XML.

Encuentra problemas como este automáticamente

Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.

Ayúdanos a mejorar nuestras guías

¿Te ha sido útil esta guía?

¿Listo para validar tus sitios?
Inicia tu prueba gratuita hoy.