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.
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 <, > se convierte en > y & se convierte en &. 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 <b>bold</b> in source.
The <b> 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:
// <div class="box"></div>
</code></pre>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 <b> 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

Atributos
La etiqueta <xmp> también admite los Atributos globales.
Práctica
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.