Ich verstehe die Gründe, warum die meisten HTML-Zeichenentitäten erstellt wurden, aber ich verstehe den Zweck der kaufmännischen Und-HTML-Entität nicht. &
enthält mehr Bits als ein &
-Symbol, und es enthält sogar bereits das &
!
Warum wurde entschieden, dass kaufmännisches Und in dem Format codiert werden soll, das mehr Daten erfordert, anstatt nur das Symbol zu verwenden?
Kommentare
- Es ist so, als hätten wir die Möglichkeit, ein Zitat in ein anderes Zitat aufzunehmen. Computer haben seit langem dieses Problem : Code kann Daten in einer anderen Situation sein, und Daten können Code sein Was unterscheidet Computer von gewöhnlichen Maschinen und was unterscheidet die menschliche Sprache von den Geräuschen, die Tiere machen? Gehen Sie jetzt weiter und beziehen Sie sich auf sich selbst!
Antwort
Um Mehrdeutigkeiten zu vermeiden. Angenommen, Sie möchten eine Website darüber schreiben HTML. Sie schreiben die Zeile: „Um ein Literal < zu schreiben, müssen Sie & lt; schreiben.“ Um das in HTML aufzuschreiben:
<p>To write a literal < you have to write <.
… oops. Damit es funktioniert, müssen Sie das Zeichen &
von der HTML-Syntax unterscheiden können, die mit &
beginnt. Deshalb müssen Sie schreiben:
<p>To write a literal < you have to write &lt;.
… was korrekt wiedergegeben wird.
Kommentare
- Ich würde sagen, es ist Mehrdeutigkeit zuzulassen . Um zwei Interpretationsebenen in einen Kontext aufnehmen zu können.
- @ user251748 Das ‚ lässt keine Mehrdeutigkeit zu, ‚ klärt es.
Antwort
Es sieht so aus, als ob dies bis zu SCRIPT zurückreicht, das 1968 erfunden wurde.
grob gesagt wurde SCRIPT zu SCRIPT / VS, was zu GML wurde SGMLguid, das zu HTML wurde
Hier ist das Originalpapier, in dem SCRIPT vorgestellt wird:
http://web.mit.edu/smadnick/www/papers/J002.pdf
Warum &
wählen? Stellen Sie sich vor, Sie befinden sich in einem Terminalfenster. Sie haben keine Maus. Sie können die Cursortasten nicht zum Durchlaufen des Fensters verwenden Sie können nur in der Befehlszeile eingeben. Wenn Sie eine Zeile löschen möchten, geben Sie , um ein Zeichen zu löschen, geben Sie @
ein. Sie sehen gegen Ende ¢ wird verwendet, um ein Escape-Zeichen zu kennzeichnen. Cent war früher auf Tastaturen (Schicht 6), wurde aber fallen gelassen. (etwas mit ASCII zu tun) Die meisten Tastaturen ersetzten es durch ^, einige jedoch durch ¬
. Wenn Sie also plötzlich in SCRIPT programmieren, fällt es Ihnen sehr schwer, das Escape-Zeichen auf neuen Computern einzugeben. Sie müssen ein Ersatzzeichen auswählen. Wenn Sie eines der Symbole auf derselben Taste verwenden, können einige Leute es nicht eingeben, da die Tastaturhersteller immer noch streiten.
Sie müssen auswählen ein Ersatz-Escape-Zeichen für das Zeichen auf Schlüssel 6. Was wählen Sie?
Kommentare
- Ich glaube nicht, dass ‚ Ihre Antwort ist beantwortet die Frage wirklich, aber ich mag Ihre Antwort wirklich sehr.
- @ChrisG Dies ist die einzige Antwort auf die gestellte Frage: Warum ist & das Escape-Zeichen? Da jedoch eine Antwort, die erklärt, was ein Escape-Zeichen ist, akzeptiert wird, wird die Frage vermutlich schlecht ausgedrückt.
- @DavidArno Die gestellte Frage lautete jedoch nicht ‚ t warum & das Escape-Zeichen ist, warum & selbst maskiert werden muss f.
- Es stimmt, ich musste die Frage auf einer etwas tieferen Ebene interpretieren. Aber es war interessant, die Antwort zu recherchieren
- @SebastianRedl, ja, das sehe ich jetzt. Die Art und Weise, wie die Frage formuliert ist, habe ich jedoch als “ gelesen. Warum wird & als Escapezeichen verwendet, wenn & selbst muss dann entkommen? “ Glücklicherweise können einige von Ihnen schlecht formulierte Fragen besser lesen als ich, also was das OP wissen wollte wurde beantwortet 🙂
Antwort
In jedem Datenformat muss der Escape-Mechanismus selbst maskiert werden. Das Escape-Zeichen ist ein Sonderzeichen.
Ich möchte beispielsweise diesen Text anzeigen:
kaufmännisches Und wird wie
&
Wenn ich diesen HTML-Code als
<p>Ampersands are escaped like <code>&</code>
schreibe, wird er angezeigt as:
kaufmännisches Und wird wie
&
Also muss ich tatsächlich schreiben:
<p>Ampersands are escaped like <code>&amp;</code>
, das korrekt angezeigt wird als:
kaufmännisches Und wird wie
&
maskiert. In vielen Sprachen ist der Backslash ein Escape Charakter. Dann muss die Literalzeichenfolge C:\projects
als C:\\projects
maskiert werden.
Wenn ein Datenformat verwendet werden soll Um beliebige Daten darstellen zu können, benötigt es entweder eine bekannte Länge oder ein Trennzeichen. Die Handhabung bekannter Längen ist in vom Menschen bearbeitbaren Formaten unhandlich. Aber wenn wir ein Trennzeichen haben, muss es entkommen können. Wir brauchen also einen Fluchtmechanismus, und der Fluchtmechanismus muss sich selbst entkommen. Eine minimale Lösung besteht darin, das Trennzeichen als Escape-Zeichen zu verwenden. Z.B. Für ein Trennzeichen "
könnte die Zeichenfolge don"t do that
als "don""t do that"
codiert werden.
Kommentare
- Das ASCII-Escape-Zeichen wurde ursprünglich genau für diesen Zweck entwickelt. Der vollständige Name lautet Data Link Escape . Ich habe es zuvor in einer Modem / Mux-Situation verwendet.
Antwort
Weil „&“ startet eine Entität, daher ist die Verwendung selbst kein gültiger HTML-Code (obwohl einige Browser dies möglicherweise akzeptieren, ist dies nicht garantiert).
Kommentare
- Einzelne kaufmännische Und-Zeichen sind in HTML in Ordnung, es sei denn, sie bilden ein mehrdeutiges kaufmännisches Und , dh eine benannte Zeichenreferenz, die nicht ‚ t im HTML-Standard definiert. Ansonsten sind kaufmännische Und-Zeichen gut definiert.
- @amon – sicher, aber ‚ ist erwähnenswert, dass die Definition, wann sie ‚ re allow hat sich zwischen verschiedenen HTML-Versionen geändert (HTML2 hat sie beispielsweise nur zugelassen, wenn ihnen ‚ kein alphanumerisches Zeichen gefolgt ist, unabhängig davon, ob ein Semikolon folgt). und dass Sie selbst mit der strengsten Definition unter einigen Umständen immer noch in der Lage sein müssen, ihnen zu entkommen. Während HTML dies zulässt, tun dies weder SGML noch XML, sodass SGML-Parser mit einer HTML-DTD fehlschlagen und XHTML-Parser ‚ dies ebenfalls nicht akzeptieren. Daher würde ich ‚ nicht empfehlen, diese Funktion tatsächlich zu verwenden.
- Zuerst gab es HTML. Dann herrschte Chaos, da jeder Browser-Anbieter tat, was er wollte. Serious Engineers ™ hatten dieses Chaos satt und entwickelten XHTML. Aber das Schreiben von XML von Hand ist zum Kotzen, und das Chaos ging weiter. Schließlich wurde das Chaos kodifiziert und HTML5 genannt. Es analysiert das Chaos ganz gut, aber auf eine klar definierte Weise. Es ist nicht mehr sinnvoll, HTML5 als SGML-Dialekt zu interpretieren. Und mit Ausnahme von XHTML war HTML niemals XML. Aber jeder aktuelle Browser oder HTML-Parser aus der Ferne kann mit HTML5 gut umgehen, zumindest auf syntaktischer Ebene.
- @amon: Das Schreiben von HTML von Hand ist zum Kotzen, es sei denn, das Lesen der HTML5-Spezifikation zur Fehlerbehebung macht Spaß ‚ kann nicht sagen, wie der Parser interpretiert, wie der HTML-Text zu DOM wird, da ‚ einfach zu viele seltsame Hinterlassenschaften vorhanden sind Eckfälle und verschiedene Arten, dasselbe zu schreiben. Es sei denn, Sie beschränken Ihren HTML-Code ohnehin auf eine XHTML-kompatible Teilmenge. In diesem Fall schreiben Sie einfach das tatsächliche XHTML.
Antwort
Jede Programmiersprache oder Skriptsprache hat ihre eindeutigen Bezeichner, oder Sie können reservierte Schlüsselwörter sagen, die von Entwicklern im Code nicht verwendet werden können. Einige Zeichen sind auch im HTML reserviert. Ein kaufmännisches Und (&) wird als Entität verwendet, um reservierte Zeichen in HTML anzuzeigen. Einige Beispiele sind wie folgt:
< >