Come posso commentare una singola riga in XML?


123

Questa è piuttosto una verifica da non perdere.

C'è / non c'è un commento in riga in XML? Quindi, uno senza un più vicino, come "//" il compilatore usa.

Ho visto Come commentare un blocco di tag in XML? e molte altre discussioni.

Questo tipo di commento sarebbe pratico per commentare una riga senza preoccuparsi della sua vicinanza da qualche parte.


2
XML è progettato partendo dal presupposto che strumenti come gli editor spesso eseguiranno il wrapping di parole e che le terminazioni di riga siano quindi fragili. Sarebbe una cattiva idea se le terminazioni di riga dovessero essere conservate solo in caso di commenti.
Michael Kay

2
Sicuramente gli editor vanno a capo solo per la visualizzazione . Non ho mai conosciuto newline rigide da aggiungere arbitrariamente al file stesso. È un fastidio infernale non avere un commento in linea.
John White

Risposte:


147

No, non è possibile commentare una riga in XML e fare in modo che il commento termini automaticamente con un'interruzione di riga.

XML ha solo una definizione per un commento :

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

XML vieta --nei commenti di mantenere la compatibilità con SGML .


Una soluzione alternativa consiste nell'usare i commenti di riga ( //) ed eseguire uno script per rimuovere quei commenti prima dell'uso (può essere parte di un processo di compilazione in un unico passaggio). È un modo molto più conveniente di utilizzare i commenti. (Ho usato questa tecnica con il sorgente WiX (strumento di installazione per Windows). Per la creazione del programma di installazione sono stati necessari numerosi altri passaggi, quindi questo era solo un altro passaggio da aggiungere a uno script / processo di build.)
Peter Mortensen

20

Come altri hanno già detto, non c'è modo di fare legalmente un commento su una singola riga in XML che commenta più righe, ma ci sono modi per rendere più facile commentare segmenti di XML.

Guardando l'esempio seguente, se aggiungi ">" alla riga uno, XmlTag verrà decommentato. Rimuovi il ">" e viene nuovamente commentato. Questo è il modo più semplice che ho visto per commentare / decommentare rapidamente XML senza rompere le cose.

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

Il vantaggio aggiuntivo è che manipoli solo il commento in alto e il commento in basso può rimanere lì per sempre. Questo interrompe la compatibilità con SGML e alcuni parser XML lo sbatteranno. Fintanto che questo non è un dispositivo permanente nel tuo XML e i tuoi parser lo accettano, non è davvero un problema.

L' evidenziatore di sintassi di Stack Overflow e Notepad ++ lo tratta come un commento su più righe, la libreria Boost di C ++ lo tratta come un commento su più righe e l'unico parser che ho trovato finora che si interrompe è quello in .NET, in particolare C #. Quindi, assicurati di testare prima che i tuoi strumenti, IDE, librerie, linguaggio, ecc. Lo accettino prima di usarlo.

Se ti interessa la compatibilità SGML, usa semplicemente questo:

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

Aggiungi "->" nel commento in alto e un "-" in quello in basso. Lo svantaggio è dover modificare il commento in basso ogni volta, il che probabilmente renderebbe più semplice digitare ogni volta in <!--alto e -->in basso.

Voglio anche menzionare che altri commentatori consigliano di utilizzare un editor XML che ti consenta di fare clic con il pulsante destro del mouse e commentare / decommentare i blocchi di XML, che è probabilmente preferibile rispetto ai trucchi trova / sostituisci fantasiosi (sarebbe anche una buona risposta in sé, ma non ho mai usato tali strumenti. Voglio solo assicurarmi che le informazioni non vengano perse nel tempo). Personalmente non ho mai avuto a che fare con XML abbastanza da giustificare la presenza di un editor più elaborato di Notepad ++, quindi dipende totalmente da te.


3
Purtroppo questo è sbagliato. La specifica dice: Per compatibilità, la stringa "-" (doppio trattino) NON DEVE essere presente nei commenti.
kojiro

2
Ovviamente non è legale. Le specifiche sono chiare su questo. I parser XML possono seguire la legge di Postel e permetterti di farla franca, ma un verificatore di buona formazione conforme lo contrassegnerà.
kojiro,

4
Come dice @kojiro, un commento contenente "-" non è un XML ben formato. La frase su "Per compatibilità" è semplicemente gli editor delle specifiche che affermano il motivo per cui hanno incluso questa orribile regola: non significa che puoi ignorare la regola se non sei interessato alla compatibilità. Downvoting la risposta in quanto è sbagliata.
Michael Kay

10
Potresti scriverlo <!-- ->e fare in modo che si tratti di aggiungere un trattino invece di avere un non XML.
kojiro

3
@ RyanWH continua a fare ciò che funziona per te, ma sembra che tu dipenda da un bug nel parser XML che stai utilizzando. Personalmente, utilizzo un IDE (oXygen) che mi permette di selezionare un pezzo di testo XML, fare clic con il tasto destro e chiedere di commentarlo. Il che sembra molto più semplice della tua tecnica.
Michael Kay

12

È lo stesso dei commenti di blocco HTML o JavaScript:

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

5

Non ortodosso, ma a volte funziona per me; imposta il tuo commento come un altro attributo:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.