W3docs

Etiqueta HTML <xmp>

La etiqueta <xmp> muestra el texto entre las etiquetas de apertura y cierre sin interpretar el HTML y usando una fuente monoespaciada.

La etiqueta HTML <xmp> está obsoleta y en desuso. Ha sido eliminada del estándar HTML y no debe utilizarse en páginas nuevas. Esta página explica qué hacía antes, por qué fue eliminada y cómo mostrar HTML literal o texto preformateado correctamente en la actualidad.

Históricamente, <xmp> ("example") mostraba el texto entre sus etiquetas de apertura y cierre exactamente como estaba escrito — con una fuente monoespaciada, conservando los espacios en blanco y los saltos de línea — y, de manera fundamental, sin interpretar ningún HTML en su interior. Eso significaba que podías pegar marcado sin procesar como <b>bold</b> y el navegador mostraría los corchetes angulares en lugar de renderizar texto en negrita.

Peligro

No uses <xmp>. No cumple con las especificaciones de HTML5 y su comportamiento no es fiable entre navegadores. Usa <pre> (opcionalmente con <code>) y escapa los caracteres <, > y & con entidades HTML. Consulta el reemplazo moderno a continuación.

Por qué se eliminó <xmp>

El elemento <xmp> fue declarado en desuso porque su comportamiento de "mostrar HTML sin procesar sin escapar" es fundamentalmente incompatible con la forma en que los navegadores analizan los documentos:

  • El análisis era inconsistente. Dado que el analizador debía cambiar a un modo especial de "texto sin procesar" para encontrar el cierre </xmp>, los navegadores no se ponían de acuerdo en casos límite — las etiquetas anidadas, los comentarios y especialmente la cadena literal </xmp> que aparecía dentro del contenido se comportaban de manera diferente en distintos motores.
  • Fomentaba el contenido sin escapar. Los autores dependían de <xmp> para volcar HTML directamente en una página. Un </xmp> perdido en ese contenido cerraría el bloque prematuramente y dejaría que el resto del marcado se renderizara, lo cual supone tanto un error de renderizado como un posible problema de seguridad.
  • Ya existía una alternativa estándar y predecible. <pre> conserva los espacios en blanco y utiliza una fuente monoespaciada, y el escape de entidades muestra de forma fiable los caracteres < y > literales. Dado que esa combinación está bien definida y funciona igual en todas partes, <xmp> dejó de ser necesaria.

La etiqueta estrechamente relacionada <plaintext> fue eliminada por las mismas razones. Para ver la lista completa, consulta Etiquetas HTML en desuso.

El reemplazo moderno

Para mostrar HTML literal, usa <pre> y reemplaza cada carácter especial con su entidad HTML: < se convierte en &lt;, > se convierte en &gt; y & se convierte en &amp;. El navegador decodifica las entidades a los caracteres visibles pero nunca los trata como marcado.

<!DOCTYPE html>
<html>
  <head>
    <title>Showing literal HTML with pre</title>
  </head>
  <body>
    <pre>
This is &lt;b&gt;bold&lt;/b&gt; in source.
The &lt;b&gt; tag is shown as text, not rendered.
    </pre>
  </body>
</html>

En la página renderizada, el bloque <pre> anterior muestra exactamente:

This is <b>bold</b> in source.
The <b> tag is shown as text, not rendered.

Cuando el texto preformateado es específicamente un bloque de código fuente, envuélvelo en <code> para una semántica más clara:

<pre><code>function greet(name) {
  return "Hello, " + name;
}

// Literal HTML still needs escaping here too:
// &lt;div class="box"&gt;&lt;/div&gt;
</code></pre>
Información

La regla de escape es la diferencia clave respecto a <xmp>. Dentro de <pre> (y en cualquier otro lugar del HTML normal), un <b> literal sería analizado como una etiqueta, por lo que debes escribir &lt;b&gt; para mostrarlo como texto.

Sintaxis

La etiqueta <xmp> venía en pares. El contenido se escribía entre las etiquetas de apertura (<xmp>) y cierre (</xmp>). (Se muestra solo como referencia — no la uses.)

Ejemplo heredado de la etiqueta HTML <xmp>

El ejemplo a continuación muestra cómo se usaba <xmp> en su momento. Se conserva como referencia histórica; en HTML moderno, reemplázalo con el enfoque <pre> mostrado anteriormente.

Etiqueta HTML <xmp>

<!DOCTYPE html>
<html>
  <head>
    <title>The title of the document</title>
  </head>
  <body>
    <xmp> This is a preformatted text.
      All characters in this area have the same width,
      and the spaces and line breaks within this element are shown as typed.
    </xmp>
  </body>
</html>

Resultado

ejemplo de la etiqueta xmp

Atributos

La etiqueta <xmp> también admite los Atributos globales.

Práctica

Práctica
¿Qué es verdad sobre la etiqueta HTML <xmp>?
¿Qué es verdad sobre la etiqueta HTML <xmp>?

Etiquetas relacionadas

  • <pre> — el elemento estándar para texto preformateado y monoespaciado.
  • <code> — marca un fragmento de código informático.
  • <plaintext> — otra etiqueta eliminada con un comportamiento similar de texto sin procesar.
  • Etiquetas HTML en desuso — la lista completa de elementos obsoletos que deben evitarse.
Was this page helpful?