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 son compatibles con 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 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 falso, 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 crudo 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. Incluir archivos SVG en línea 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 de PHP, las etiquetas <?php crudas 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 en línea: 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é correctamente configurado para procesar los archivos. Verifica que la extensión del archivo coincida con lo que el servidor espera (ej., .php para archivos PHP). Verifica que el lenguaje del lado del servidor esté instalado y funcionando.
  • Para otro contenido XML: Elimina cualquier instrucción de procesamiento <?...?> antes de embeber el contenido en HTML.

Ejemplos

❌ SVG en línea 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 en línea 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 salida HTML

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

Si el servidor no procesa el PHP, el <?php ... ?> crudo 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 <link> o <style> estándar en el <head> para 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.