W3docs

HTML <xmp> Tag

Das <xmp>-Tag gibt Text zwischen Start- und End-Tag ohne HTML-Interpretation in einer nichtproportionalen Schrift aus.

Das HTML-Tag <xmp> ist veraltet und wurde entfernt. Es wurde aus dem HTML-Standard gestrichen und darf auf neuen Seiten nicht mehr verwendet werden. Diese Seite erklärt, was es früher leistete, warum es entfernt wurde und wie man heute korrekt wörtlichen HTML-Code oder vorformatierten Text anzeigt.

Früher renderte <xmp> („example") den Text zwischen seinem Start- und End-Tag genau so, wie er geschrieben wurde — in einer nichtproportionalen Schrift, mit erhaltenen Leerzeichen und Zeilenumbrüchen — und ohne dabei enthaltenes HTML zu interpretieren. Das bedeutete, man konnte reinen Markup-Code wie <b>bold</b> einfügen, und der Browser zeigte die spitzen Klammern an, anstatt fetten Text zu rendern.

Gefahr

Verwenden Sie <xmp> nicht. Es entspricht nicht dem HTML5-Standard, und sein Verhalten ist browserübergreifend unzuverlässig. Verwenden Sie stattdessen <pre> (optional mit <code>) und ersetzen Sie die Zeichen <, > und & durch HTML-Entities. Siehe den modernen Ersatz unten.

Warum <xmp> entfernt wurde

Das <xmp>-Element wurde als veraltet eingestuft, weil sein Verhalten „rohen HTML ohne Escaping anzeigen" grundlegend mit der Art kollidiert, wie Browser Dokumente parsen:

  • Das Parsen war inkonsistent. Da der Parser in einen speziellen „Rohtextmodus" wechseln musste, um das schließende </xmp> zu finden, waren sich Browser bei Grenzfällen uneinig — verschachtelte Tags, Kommentare und insbesondere die Zeichenfolge </xmp> im Inhalt selbst verhielten sich in verschiedenen Engines unterschiedlich.
  • Es förderte unescapten Inhalt. Autoren verließen sich auf <xmp>, um HTML direkt in eine Seite einzufügen. Ein einzelnes unbeabsichtigtes </xmp> im Inhalt würde den Block vorzeitig beenden und den restlichen Markup rendern lassen — sowohl ein Darstellungsfehler als auch ein potenzielles Sicherheitsproblem.
  • Eine standardisierte, vorhersehbare Alternative existierte bereits. <pre> bewahrt Leerzeichen und verwendet eine nichtproportionale Schrift, und Entity-Escaping zeigt < und > zuverlässig als Text an. Da diese Kombination klar definiert ist und überall gleich funktioniert, war <xmp> nicht länger notwendig.

Das eng verwandte Tag <plaintext> wurde aus denselben Gründen entfernt. Die vollständige Liste finden Sie unter Veraltete HTML-Tags.

Der moderne Ersatz

Um wörtlichen HTML-Code anzuzeigen, verwenden Sie <pre> und ersetzen Sie jedes Sonderzeichen durch seine HTML-Entity: < wird zu &lt;, > wird zu &gt; und & wird zu &amp;. Der Browser dekodiert die Entities zurück in die sichtbaren Zeichen, behandelt sie aber nie als 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>

Auf der gerenderten Seite zeigt der obige <pre>-Block genau Folgendes an:

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

Wenn der vorformatierte Text speziell ein Quellcode-Block ist, schließen Sie ihn in <code> ein, um die Semantik zu verdeutlichen:

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

Die Escaping-Regel ist der wesentliche Unterschied zu <xmp>. Innerhalb von <pre> (und überall sonst in normalem HTML) würde ein wörtliches <b> als Tag geparst werden, daher müssen Sie &lt;b&gt; schreiben, um es als Text anzuzeigen.

Syntax

Das <xmp>-Tag kam paarweise vor. Der Inhalt wurde zwischen dem öffnenden (<xmp>) und dem schließenden (</xmp>) Tag geschrieben. (Nur zur Referenz gezeigt — verwenden Sie es nicht.)

Veraltetes Beispiel des HTML-Tags <xmp>

Das folgende Beispiel zeigt, wie <xmp> früher verwendet wurde. Es dient als historische Referenz; ersetzen Sie es in modernem HTML durch den oben gezeigten <pre>-Ansatz.

HTML <xmp> Tag

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

Ergebnis

Beispiel des xmp-Tags

Attribute

Das <xmp>-Tag unterstützt auch die globalen Attribute.

Übung

Übung
Was trifft auf das HTML-Tag <xmp> zu?
Was trifft auf das HTML-Tag <xmp> zu?

Verwandte Tags

  • <pre> — das Standardelement für vorformatierten, nichtproportionalen Text.
  • <code> — kennzeichnet einen Fragment mit Computercode.
  • <plaintext> — ein weiteres entferntes Tag mit ähnlichem Rohtextverhalten.
  • Veraltete HTML-Tags — die vollständige Liste veralteter Elemente, die vermieden werden sollten.
Was this page helpful?