W3docs

Tag HTML <xmp>

A tag <xmp> exibe o texto entre as tags de abertura e fechamento sem interpretar o HTML e usando uma fonte monoespaçada.

A tag HTML <xmp> é obsoleta e descontinuada. Foi removida do padrão HTML e não deve ser utilizada em novas páginas. Esta página explica o que ela fazia, por que foi removida e como exibir HTML literal ou texto pré-formatado corretamente nos dias de hoje.

Historicamente, <xmp> ("example") renderizava o texto entre suas tags de abertura e fechamento exatamente como escrito — em uma fonte monoespaçada, com espaços em branco e quebras de linha preservados — e, de forma crítica, sem interpretar nenhum HTML dentro dela. Isso significava que você podia colar marcação bruta como <b>bold</b> e o navegador mostraria os colchetes angulares em vez de renderizar o texto em negrito.

Perigo

Não use <xmp>. Ela não está em conformidade com o HTML5 e seu comportamento é não confiável entre navegadores. Use <pre> (opcionalmente com <code>) e escape os caracteres <, > e & com entidades HTML. Veja o substituto moderno abaixo.

Por que <xmp> foi removida

O elemento <xmp> foi descontinuado porque seu comportamento de "mostrar HTML bruto sem escape" é fundamentalmente incompatível com a forma como os navegadores analisam documentos:

  • A análise era inconsistente. Como o analisador precisava entrar em um modo especial de "texto bruto" para encontrar o </xmp> de fechamento, os navegadores discordavam sobre casos extremos — tags aninhadas, comentários e, especialmente, a string literal </xmp> aparecendo dentro do conteúdo se comportavam de forma diferente em diferentes motores.
  • Incentivava conteúdo sem escape. Os autores dependiam de <xmp> para despejar HTML diretamente em uma página. Um único </xmp> perdido nesse conteúdo encerraria o bloco antecipadamente e permitiria que o restante da marcação fosse renderizado, o que é ao mesmo tempo um bug de renderização e um potencial problema de segurança.
  • Uma alternativa padrão e previsível já existia. O <pre> preserva espaços em branco e usa uma fonte monoespaçada, e o escape de entidades exibe de forma confiável os literais < e >. Como essa combinação é bem definida e funciona da mesma forma em todos os lugares, o <xmp> não era mais necessário.

A tag intimamente relacionada <plaintext> foi removida pelos mesmos motivos. Para a lista completa, consulte Tags HTML Descontinuadas.

O substituto moderno

Para exibir HTML literal, use <pre> e substitua cada caractere especial pela sua entidade HTML: < vira &lt;, > vira &gt; e & vira &amp;. O navegador decodifica as entidades de volta aos caracteres visíveis, mas nunca os trata como marcação.

<!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>

Na página renderizada, o bloco <pre> acima exibe exatamente:

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

Quando o texto pré-formatado é especificamente um bloco de código-fonte, envolva-o em <code> para uma semântica mais 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>
Informação

A regra de escape é a diferença fundamental em relação ao <xmp>. Dentro do <pre> (e em qualquer outro lugar no HTML normal), um <b> literal seria analisado como uma tag, portanto você deve escrever &lt;b&gt; para exibi-lo como texto.

Sintaxe

A tag <xmp> vinha em pares. O conteúdo era escrito entre as tags de abertura (<xmp>) e fechamento (</xmp>). (Mostrado apenas para referência — não a utilize.)

Exemplo legado da tag HTML <xmp>

O exemplo abaixo mostra como <xmp> era usado antigamente. É mantido para referência histórica; no HTML moderno, substitua-o pela abordagem com <pre> mostrada acima.

Tag 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

exemplo da tag xmp

Atributos

A tag <xmp> também suporta os Atributos Globais.

Prática

Prática
O que é verdade sobre a tag HTML <xmp>?
O que é verdade sobre a tag HTML <xmp>?

Tags relacionadas

  • <pre> — o elemento padrão para texto pré-formatado e monoespaçado.
  • <code> — marca um fragmento de código de computador.
  • <plaintext> — outra tag removida com comportamento similar de texto bruto.
  • Tags HTML Descontinuadas — a lista completa de elementos obsoletos a evitar.
Was this page helpful?