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

Attributi
Il tag <xmp> supporta anche gli Attributi Globali.
Esercitazione
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.