Wofür wurde das <XMP> -Tag verwendet?


73

Erinnert sich jemand an das XMPEtikett?

Wofür wurde es verwendet und warum wurde es veraltet?


Ziemlich sicher, dass es für nervige Entwickler verwendet wurde, die HTML-Parser schreiben, da dies gültig ist (und von Google nicht weniger verwendet wird):<xmp style="display:none"><!-- do not remove the plaintext nor xmp tags --><plaintext/><xmp>.</xmp>
Akiva

Antworten:


33

Eine schnelle Google-Suche in W3C zeigt, dass diese XMPfür die Anzeige von vorformatiertem Text in HTML 3.2 und früheren Versionen eingeführt wurde . Als W3C das XMPTag ablehnte, schlug es vor, das PRETag als bevorzugte Alternative zu verwenden.

Update: http://www.w3.org/TR/REC-html32#xmp , http://www.w3.org/MarkUp/html-spec/html-spec_5.html#SEC5.5.2.1


1
Tatsächlich wurden sie in der HTML 3.0-Referenz bereits als "veraltet" markiert. w3.org/MarkUp/html3/html3.dtd vom 1. August 1995. Dies zitiert übrigens auch den genauen Grund, warum es veraltet ist (dies wäre die Antwort auf die zweite Frage des OP).
Herr Lister

1
pre ist keine Alternative xmp zitiert den gesamten enthaltenen Text. Ideal zum Debuggen. Nicht sicher. Funktioniert überall AFAIK.
Tuntable

Diese Seite erklärt, warum <xmp>nicht sicher ist: html5sec.org/#134
Julien

62

XMPund PREunterscheiden. Der Inhalt von PRETags wird wie folgt formatiert:

  • Der Inhalt wird mit einer festen Schriftart angezeigt.
  • Alle Leerzeichen bleiben erhalten, und
  • Jeder Zeilenumbruch beginnt eine neue Zeile.

Wenn Sie Sonderzeichen wie einschließen mögen <, >und &innerhalb von PRETags, müssen sie entkommen sein , so dass sie durch den Browser nicht besondere Interpretation sind.

Im Gegensatz dazu muss der Inhalt von XMPTags nicht maskiert werden.

Die einzige Zeichenfolge, die nicht in XMPTags enthalten sein kann, ist das XMPEnd-Tag ( </XMP>).

XMPwird weiterhin von den von mir getesteten Browsern unterstützt. Sie können es mit xmp.html versuchen . Zeigen Sie die Quelle an, um die Tags anzuzeigen.


18
Ich habe vier Arten der Darstellung von Code vorgestellt. Textarea scheint der Gewinner zu sein. Hier ist meine Bewertung: dadinck.x10.mx/code_example.html
dadinck

2
Sicherheitshinweis: XMP ist KEIN XSS-Schutz - sein einziger Zweck besteht darin, eine statische HTML-Seite selbst zu erstellen und Code
anzuzeigen,

@dadinck, Ihr xml.html Link verlinkt auf "Das mit dieser Website verknüpfte Webhosting-Konto wurde vorübergehend gesperrt!" ....
Pacerier

@ Pacerier Entschuldigung. Das war nur vorübergehend. Es ist wieder da.
Dadinck

1
@Boldewyn <plaintext>ist ebenso veraltet wie das <xmp>Tag, also ein No-Go. Die wahrscheinlich beste Alternative ist <textarea>Tag.
Agnius Vasiliauskas

18

XMP macht einige Dinge, die PRE nicht unterstützt. Ich bin immer noch auf XMP angewiesen, es gibt keinen Ersatz.


24
Vielleicht könnten Sie erklären, warum PRE kein Ersatz für XMP ist. So wie es aussieht, ist dies keine wirkliche Antwort.
Anders R. Bystrup

17
<xmp>ignoriert HTML-Tags und Entitäten; <pre>nicht.
Álvaro González

1
Wie wäre es <textarea />als Ersatz?
James Love

1
Wie wäre es mit der Verwendung von Server-Side-Script-Escape? : P ................................................ ..........................................<pre><?php echo htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES); ?></pre>
jave.web

2
Versuchen Sie, eine XML-Ausgabe im Browser mit xmp und dann vorab zu debuggen. xmp zeigt die korrekte Ausgabe an.
Șerban Ghiță

5

<xmp>wird mit strapdown.js bei der Formatierung der Markdown-Notation verwendet. Der Name Strapdown kombiniert die Begriffe Bootstrap und Markdown .

<!DOCTYPE html>
<html>
  <title>Example</title>
  <xmp theme="united">
## Example

 - note one
 - note two
 - note three
  </xmp>
  <script src="http://strapdownjs.com/v/0.2/strapdown.js"></script>
</html>

3

Ich benutze das xmpTag immer noch zum Debuggen var_dump();in PHP. Ich kann mich einfach nicht erinnern, das preTag aus irgendeinem Grund verwendet zu haben.

Ich denke, es spielt keine Rolle, denn wenn Sie wirklich Text ausgeben möchten, sollten Sie ihn textareamit dem readonlyAttribut verwenden.


4
Es ist sehr praktisch für diesen Zweck. Da var_dump()nichts zurückgegeben wird, benötigen Sie Ausgabepufferfunktionen, um die Ausgabe in HTML zu codieren. <xmp>ist eine schnelle Alternative zum Schreiben einer Wrapper-Funktion und funktioniert überall.
Álvaro González


2

Ich habe verwendet <textarea>, was den HTML-Code in eine ordentliche Box legt und den Code klar als anders als den Text davor oder danach definiert.

<textarea><b>boldtext</b><textarea>


2

Funktioniert immer noch, um rohes HTML anzuzeigen. Wenn Sie es im Skript verwenden, brechen Sie das Start-Tag.

var stuff='<xmp'+'>this is shown as is<br/>hello</xmp>';
document.getElementById("x").innerHTML=stuff;
<div id="x"></div>

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.