W3docs

Tag HTML <xmp>

Il tag <xmp> mostra il testo tra i tag di apertura e chiusura senza interpretare l'HTML al suo interno, usando un carattere monospaziato.

Il tag HTML <xmp> è obsoleto e deprecato. È stato rimosso dallo standard HTML e non deve essere utilizzato nelle nuove pagine. Questa pagina spiega cosa faceva in passato, perché è stato eliminato e come visualizzare correttamente HTML letterale o testo preformattato oggi.

Storicamente, <xmp> ("example") rendeva il testo tra i tag di apertura e chiusura esattamente come scritto — con un carattere monospaziato, preservando spazi bianchi e interruzioni di riga — e, soprattutto, senza interpretare alcun HTML al suo interno. Ciò significava che era possibile incollare markup grezzo come <b>bold</b> e il browser mostrasse le parentesi angolari invece di rendere il testo in grassetto.

Pericolo

Non utilizzare <xmp>. Non è conforme a HTML5 e il suo comportamento non è affidabile tra i browser. Utilizza <pre> (facoltativamente con <code>) ed esegui l'escape dei caratteri <, > e & con le entità HTML. Consulta la sostituzione moderna di seguito.

Perché <xmp> è stato rimosso

L'elemento <xmp> è stato deprecato perché il suo comportamento "mostra HTML grezzo senza escape" è fondamentalmente ostile al modo in cui i browser analizzano i documenti:

  • L'analisi era incoerente. Poiché il parser doveva passare a una modalità speciale "testo grezzo" per trovare il tag di chiusura </xmp>, i browser non erano concordi sui casi limite — tag annidati, commenti e in particolare la stringa letterale </xmp> all'interno del contenuto si comportavano diversamente nei vari motori.
  • Incoraggiava contenuti non sottoposti a escape. Gli autori si affidavano a <xmp> per inserire HTML direttamente in una pagina. Un singolo </xmp> errato in quel contenuto avrebbe terminato il blocco anticipatamente e lasciato che il resto del markup venisse renderizzato, un bug di rendering e un potenziale problema di sicurezza.
  • Esisteva già un'alternativa standard e prevedibile. <pre> preserva gli spazi bianchi e usa un carattere monospaziato, e l'escape delle entità mostra in modo affidabile < e > come testo letterale. Poiché questa combinazione è ben definita e funziona allo stesso modo ovunque, <xmp> non era più necessario.

Il tag strettamente correlato <plaintext> è stato rimosso per le stesse ragioni. Per l'elenco completo, consulta Tag HTML deprecati.

La sostituzione moderna

Per mostrare HTML letterale, utilizza <pre> e sostituisci ogni carattere speciale con la sua entità HTML: < diventa &lt;, > diventa &gt; e & diventa &amp;. Il browser decodifica le entità nei caratteri visibili, ma non le tratta mai come markup.

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

Nella pagina renderizzata, il blocco <pre> sopra mostra esattamente:

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

Quando il testo preformattato è specificamente un blocco di codice sorgente, racchiudilo in <code> per una semantica più chiara:

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

La regola di escape è la differenza fondamentale rispetto a <xmp>. All'interno di <pre> (e ovunque else nel normale HTML), un <b> letterale verrebbe analizzato come tag, quindi devi scrivere &lt;b&gt; per visualizzarlo come testo.

Sintassi

Il tag <xmp> veniva usato in coppia. Il contenuto era scritto tra i tag di apertura (<xmp>) e chiusura (</xmp>). (Mostrato solo a scopo di riferimento — non utilizzarlo.)

Esempio legacy del tag HTML <xmp>

L'esempio seguente mostra come <xmp> veniva utilizzato in passato. È mantenuto a titolo di riferimento storico; nell'HTML moderno, sostituiscilo con l'approccio <pre> mostrato sopra.

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>

Risultato

esempio del tag xmp

Attributi

Il tag <xmp> supporta anche gli Attributi Globali.

Esercitazione

Pratica
Cosa è vero riguardo al tag HTML <xmp>?
Cosa è vero riguardo al tag HTML <xmp>?

Tag correlati

  • <pre> — l'elemento standard per il testo preformattato monospaziato.
  • <code> — contrassegna un frammento di codice informatico.
  • <plaintext> — un altro tag rimosso con un comportamento simile al testo grezzo.
  • Tag HTML deprecati — l'elenco completo degli elementi obsoleti da evitare.
Was this page helpful?