Frage an xml, comments – XML-Kommentare und "-"

51
<!-- here is some comment --
                            ^
                            |
                    what can be here apart from '>'?

XML scheint '-' in Kommentaren nicht zu mögen. Ich habe irgendwo gelesen, dass '-' einige Modi umschaltet<! ... > Sache, aber<!-- -- -- --> (gerade Anzahl von--s) scheinen auch ungültig zu sein. Wenn es sich um ein historisches Merkmal handelt, was ist "Pro"? ("Contra" Teil ist Unfähigkeit zu haben-- in Kommentaren).

Was ist der Grund, warum die Verarbeitung von Kommentaren dadurch erschwert wird, dass nicht nur '->' das Ende des Kommentars angegeben und '-' nach innen gelassen wird?

Deine Antwort

4   die antwort
25

Es ist eine dieser dummen Regeln, die in XML enthalten sind, weil es in SGML war und die Leute die Kompatibilität nicht brechen wollten. Warum es sich um SGML handelt, ist unklar: Wahrscheinlich, weil es im ursprünglichen Parser drei Codezeilen gespeichert hat.

20

-- ist aus Gründen der Kompatibilität mit SGML nicht zulässig. VonÜber SGML und HTML:

Leerzeichen sind zwischen dem Begrenzer zum Öffnen der Markup-Deklaration ("<!") Und dem Begrenzer zum Öffnen des Kommentars ("-") nicht zulässig, jedoch zwischen dem Begrenzer zum Schließen des Kommentars ("-") und dem Begrenzer zum Schließen der Markup-Deklaration ( ">"). Ein häufiger Fehler besteht darin, eine Reihe von Bindestrichen ("---") in einen Kommentar einzufügen. Autoren sollten vermeiden, zwei oder mehr benachbarte Bindestriche in Kommentare einzufügen.

Also in SGML<! und> Öffnen und Schließen von "Markup-Deklarationen" und-- Öffnet und schließt Kommentare.

34

Vielleicht kann es für jemanden hilfreich sein. Ich hatte ein Problem, dass ich einen Kommandozeilenparameter in XML auskommentieren wollte, der mit - beginnt:

<arg line="-v --line-break 0" />  

so natürlich normal so

<!-- <arg line="-v --line-break 0" /> -->

hat nicht funktioniert, aber ich habe herausgefunden, dass, wenn die- wird durch das UTF-8-Äquivalent ersetzt&#x002D; es funktioniert und kann innerhalb von Kommentaren toleriert werden.

Also in meinem Fall die Zeichenfolge

<arg line="-v &#x002d;&#x002d;line-break 0" />

wird korrekt analysiert und kann Teil von Kommentaren sein.

Natürlich sieht es ein bisschen hässlich aus, aber wenn jemand eine Zeichenfolge behalten möchte - als Kommentar in seiner XML - denke ich, ist es immer noch besser als nichts.

Sie können auch die Escape-Sequenz verwenden&#45; Dies ist die ASCII-Escape-Version und etwas kürzer als die Unicode-Version. drwatsoncode
oder&#x2D; (ASCII / Unicode in hex) Vojta
41

Aus dem Standarddokument:

http://www.w3.org/TR/REC-xml/#sec-comments

[Definition: Kommentare können an einer beliebigen Stelle in einem Dokument außerhalb eines anderen Markups erscheinen. Außerdem können sie in der Dokumenttypdeklaration an von der Grammatik zugelassenen Stellen erscheinen. Sie sind nicht Teil der Zeichendaten des Dokuments. Ein XML-Prozessor kann es einer Anwendung ermöglichen, den Text von Kommentaren abzurufen, muss dies jedoch nicht.ZumKompatibilitätdarf die Zeichenfolge "-" (doppelter Bindestrich) nicht in Kommentaren vorkommen.] Parameterentitätsreferenzen dürfen in Kommentaren nicht erkannt werden.

Ich würde es einen technischen Kompromiss nennen. asawyer
"Pro" ist also Kompatibilität mit SGML. Vi.
Dies sollte IMO geändert werden, da wir jetzt CSS-Parameter haben, die mit einem doppelten Bindestrich beginnen und sich in einem Stilattribut in einem SVG-Element befinden können. Wenn Sie diese Elemente auskommentieren, wird die Kompatibilität mit dem XML-Standard nur aufgrund eines älteren Formats beeinträchtigt, das nicht mehr vorhanden ist. Waruyama

Verwandte Fragen