Frage

Ich entwickle jetzt Websites und XML -Schnittstellen seit 7 Jahren und kam nie in einer Situation, in der es wirklich notwendig war, die zu verwenden &gt; Für ein >. Alle Disamiten könnten bisher durch Zitieren behandelt werden <, &, " und ' allein.

Hat jemand jemals in einer Situation (in Bezug auf, z. &gt;?

Aktualisieren: Ich habe gerade mit dem überprüft XML Spec, wo es zum Beispiel über Zeichendaten in Abschnitt 2.4 steht:

Zeichendaten

[14]      CharData       ::=      [^<&]* - ([^<&]* ']]>' [^<&]*)

Also sogar da, die > ist nicht als etwas Besonderes erwähnt, außer aus der Endsequenz eines CDATA -Abschnitts.

Dieser eine einzelne Fall, wo die > ist von Bedeutung, wäre das Ende eines CDATA -Abschnitts, ]]>, Aber dann, wenn Sie es zitieren würden, das Zitat (dh die wörtliche Saite ]]&gt;) würde buchstäblich in der Ausgabe landen (da es ist CDATA).

War es hilfreich?

Lösung

Sie müssen nicht unbedingt absolut, weil fast jeder XML -Dolmetscher versteht, was Sie meinen. Trotzdem verwenden Sie einen speziellen Charakter ohne Schutz, wenn Sie dies tun.

XML dreht sich alles um semantisch, und das ist nicht wirklich semantisch konform.

Über dein aktualisieren, Sie haben diesen Teil vergessen:

Die rechte Winkelhalterung (>) kann mit der Zeichenfolge ">" "dargestellt werden und muss für die Kompatibilität mit beiden entkommen werden" &gt; "oder eine Zeichenreferenz, wenn sie in der Zeichenfolge erscheint" ]]> "In Inhalt, wenn diese Zeichenfolge nicht das Ende eines CDATA -Abschnitts markiert.

In der in der Dokumentation angegebenen Anwendungsfall geht es mehr um so etwas:

<xmlmarkup>
]]>
</xmlmarkup>

Hier die ]]> Teil könnte ein Problem mit alten SGML -Parsers sein, also es muss entkommen in = ]]&gt; Aus Gründen.

Andere Tipps

ich benutzte Einer nicht 19 Stunden vor, um einen strengen XML -Validator zu bestehen. Ein weiterer Fall ist, wenn Sie sie tatsächlich in HTML/XML -Inhaltstext (statt Attribute) wie folgt verwenden: <.

Sicher, ein laxer Parser akzeptiert fast alles, was Sie darauf werfen, aber wenn Sie jemals Sorgen um XSS machen, ist <ist Ihr Freund.

Update: Hier ist ein Beispiel, in dem Sie entkommen müssen > in Firefox:

<?xml version="1.0" encoding="utf-8" ?>
<test>
    ]]>
</test>

Zugegeben, es ist immer noch kein Beispiel dafür, einem einzelnen entkommen zu müssen >.

Nicht so sehr wie ein Autor von (x) HTML -Dokumenten, sondern als Benutzer von schlampigen schriftlichen Kommentaren in Websites, die "anbieten", um HTML einzufügen.

Ich meine, wenn Sie Ihre Website richtig machen würden, würden Sie Ihren Inhalt sowieso nicht hardcodieren, oder? Also dein Anruf zu htmlentities Oder was auch immer (lange Zeit nicht sehen, PHP) würde sich darum kümmern, Sonderzeichen für Sie zu ersetzen. So sicher, Sie würden nicht manuell tippen &gt; Aber ich hoffe, Sie ergreifen Maßnahmen so > wird automatisch ersetzt.

Ich habe gerade an ein anderes Beispiel gedacht, in dem Sie zitieren müssen > in HTML5 (nicht xhtml5) Dokumente: Wenn Sie es in Attributen ohne Zitate benötigen (was etwas ist, kann dies natürlich argumentiert werden).

<img src=arrow.png alt=&gt;>

sollte xhtml gleich sein

<img src="arrow.png" alt=">" />

Aber dann wieder, (?

Stellen Sie sich vor, Sie haben den folgenden Text this is a not a ]]> nice day Und Sie beschließen, es nach CDATA -Abschnitten zu umgeben <![CDATA[this is a not a ]]> nice day]]>.

Um dies zu vermeiden (und zur Ermöglichung der Parsen von SGML -Fragmenten mit nicht entlegerten markierten Abschnitten), erklärt Abschnitt 10.4 von ISO 8879: 1986 das das Auftreten von ]]> Außerhalb eines markierten Abschnitts befindet sich ein Fehler.

In den Zeiten von SGML -markierten Abschnitten waren auch sehr beliebt, da sie nicht nur für CDATA (wie in XML), sondern auch für RCDATA (nur zu erlaubte Charakterreferenzen) verwendet wurden und ignorieren und einbeziehen (was die Erkennung von Markup zulässt In ihnen).

Zum Beispiel könnte man in SGML schreiben:

 <!ENTITY %WHATTODO "INCLUDE">
 <![%WHATTODO;[<b>]]&gt;</b>]]>

Das entspricht:

 <b>]]&gt;</b>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top