Wie kann ich eine einzelne Zeile in XML kommentieren?

123

Dies ist eher eine Überprüfung, die Sie nicht verpassen sollten.

Gibt es in XML keinen Zeilenkommentar? Also eine ohne näher, wie "//", die der Compiler verwendet.

Ich habe gesehen, wie ich einen Block von Tags in XML auskommentiere. und einige andere Diskussionen.

Diese Art von Kommentar wäre praktisch, um eine Zeile zu kommentieren, ohne sie irgendwo unten näher zu bringen.

Durchstreifen
quelle
2
XML basiert auf der Annahme, dass Tools wie Editoren häufig Zeilenumbrüche ausführen und dass Zeilenenden daher fragil sind. Es wäre eine schlechte Idee, wenn Zeilenenden nur für Kommentare beibehalten werden müssten.
Michael Kay
2
Sicherlich umbrechen Redakteure nur Zeilen für die Anzeige . Ich habe nie gewusst, dass harte Zeilenumbrüche willkürlich zur Datei selbst hinzugefügt werden. Es ist ein höllisches Ärgernis, keinen Zeilenkommentar zu haben.
John White

Antworten:

147

Nein, es gibt keine Möglichkeit, eine Zeile in XML zu kommentieren und den Kommentar automatisch bei einem Zeilenumbruch zu beenden.

XML hat nur eine Definition für einen Kommentar :

'<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'

XML verbietet --in Kommentaren die Kompatibilität mit SGML .

Kojiro
quelle
Eine Problemumgehung besteht darin, Zeilenkommentare ( //) zu verwenden und ein Skript auszuführen, um diese Kommentare vor der Verwendung zu entfernen (kann Teil eines Einzelschritt-Erstellungsprozesses sein). Dies erleichtert die Verwendung von Kommentaren erheblich. (Ich habe diese Technik mit der WiX- Quelle (Installationsprogramm für Windows) verwendet. Zum Erstellen des Installationsprogramms waren eine Reihe weiterer Schritte erforderlich, sodass dies nur ein weiterer Schritt zum Hinzufügen zu einem Erstellungsskript / -prozess war.)
Peter Mortensen
20

Wie andere bereits gesagt haben, gibt es in XML keine Möglichkeit, einen einzeiligen Kommentar legal zu erstellen, der mehrere Zeilen auskommentiert . Es gibt jedoch Möglichkeiten, das Auskommentieren von XML-Segmenten zu vereinfachen.

Wenn Sie im folgenden Beispiel '>' zu Zeile 1 hinzufügen, wird der XmlTag nicht kommentiert. Entfernen Sie das '>' und es ist wieder auskommentiert. Dies ist der einfachste Weg, den ich gesehen habe, um XML schnell zu kommentieren / zu kommentieren, ohne Dinge zu beschädigen.

<!-- --
<XmlTag variable="0" />
<!-- -->

Der zusätzliche Vorteil ist, dass Sie nur den oberen Kommentar manipulieren und der untere Kommentar einfach für immer dort bleiben kann. Dies unterbricht die Kompatibilität mit SGML und einige XML-Parser werden darauf verzichten. Solange dies kein fester Bestandteil Ihres XML ist und Ihre Parser dies akzeptieren, ist es kein wirkliches Problem.

Der Syntax- Textmarker von Stack Overflow und Notepad ++ behandelt ihn wie einen mehrzeiligen Kommentar, C ++ 's Boost Bibliothek von behandelt ihn als mehrzeiligen Kommentar, und der einzige Parser, den ich bisher gefunden habe, der bricht, ist der in .NET, insbesondere C #. Testen Sie daher zunächst, ob Ihre Tools, IDE, Bibliotheken, Sprache usw. dies akzeptieren, bevor Sie es verwenden.

Wenn Sie sich für die SGML-Kompatibilität interessieren, verwenden Sie stattdessen einfach Folgendes:

<!-- -
<XmlTag variable="0" />
<!- -->

Fügen Sie '->' zum oberen Kommentar und ein '-' zum unteren Kommentar hinzu. Der Nachteil ist, dass der untere Kommentar jedes Mal bearbeitet werden muss, was es wahrscheinlich einfacher machen würde, jedes Mal <!--oben und -->unten einzugeben.

Ich möchte auch erwähnen, dass andere Kommentatoren die Verwendung eines XML-Editors empfehlen, mit dem Sie mit der rechten Maustaste auf XML-Blöcke klicken und diese kommentieren / auskommentieren können. Dies ist wahrscheinlich den ausgefallenen Tricks zum Suchen / Ersetzen vorzuziehen (dies wäre auch eine gute Antwort für sich). Ich habe jedoch noch nie solche Tools verwendet. Ich möchte nur sicherstellen, dass die Informationen nicht im Laufe der Zeit verloren gehen. Ich persönlich musste mich nie genug mit XML befassen, um zu rechtfertigen, dass ein Editor schicker als Notepad ++ ist. Das liegt also ganz bei Ihnen.

Shaz
quelle
3
Das ist leider falsch. In der Spezifikation heißt es: Aus Kompatibilitätsgründen darf die Zeichenfolge "-" (doppelter Bindestrich) NICHT in Kommentaren vorkommen.
Kojiro
2
Natürlich ist es nicht legal. Die Spezifikation ist klar. XML-Parser befolgen möglicherweise das Postelsche Gesetz und lassen Sie damit durchkommen, aber eine konforme Überprüfung der Formmäßigkeit weist darauf hin.
Kojiro
4
Wie @kojiro sagt, ist ein Kommentar mit "-" kein wohlgeformtes XML. Der Satz über "Aus Kompatibilitätsgründen" ist lediglich der Spezifikationseditor, der den Grund für die Aufnahme dieser schrecklichen Regel angibt: Dies bedeutet nicht, dass Sie die Regel ignorieren können, wenn Sie nicht an Kompatibilität interessiert sind. Die Antwort herabstimmen, da sie falsch ist.
Michael Kay
10
Sie könnten es schreiben <!-- ->und es wäre eine Frage des Hinzufügens eines Bindestrichs anstelle von Nicht-XML.
Kojiro
3
@RyanWH macht weiter, was für Sie funktioniert, aber Sie scheinen von einem Fehler im verwendeten XML-Parser abhängig zu sein. Persönlich verwende ich eine IDE (oXygen), mit der ich einen XML-Text auswählen, mit der rechten Maustaste klicken und ihn auskommentieren kann. Das scheint viel einfacher zu sein als Ihre Technik.
Michael Kay
12

Es ist dasselbe wie die HTML- oder JavaScript-Blockkommentare:

<!-- The to-be-commented XML block goes here. -->
Nassim
quelle
5

Nicht orthodox, aber es funktioniert manchmal bei mir; Legen Sie Ihren Kommentar als weiteres Attribut fest:

<node usefulAttr="foo" comment="Your comment here..."/>
j rdl
quelle