Comment puis-je commenter une seule ligne en XML?


123

Il s'agit plutôt d'une vérification à ne pas manquer.

Y a-t-il / il n'y a pas de commentaire de ligne en XML? Donc, un sans plus proche, comme "//" utilisé par le compilateur.

J'ai vu Comment puis-je commenter un bloc de balises en XML? et plusieurs autres discussions.

Ce type de commentaire serait pratique pour commenter une ligne sans se soucier de la rapprocher quelque part.


2
XML est conçu sur l'hypothèse que des outils comme les éditeurs effectuent souvent un retour à la ligne, et que les fins de ligne sont donc fragiles. Ce serait une mauvaise idée si les fins de ligne devaient être conservées juste en cas de commentaires.
Michael Kay

2
Les éditeurs n'enveloppent sûrement que les lignes pour l' affichage . Je n'ai jamais connu de nouvelles lignes difficiles à ajouter arbitrairement au fichier lui-même. C'est une nuisance infernale de ne pas avoir de commentaire.
John White

Réponses:


147

Non, il n'y a aucun moyen de commenter une ligne en XML et que le commentaire se termine automatiquement sur un saut de ligne.

XML n'a qu'une seule définition pour un commentaire :

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

XML interdit --dans les commentaires de maintenir la compatibilité avec SGML .


Une solution de contournement consiste à utiliser des commentaires de ligne ( //) et à exécuter un script pour supprimer ces commentaires avant utilisation (peut faire partie d'un processus de construction en une seule étape). Cela constitue un moyen beaucoup plus pratique d'utiliser les commentaires. (J'ai utilisé cette technique avec WiX source (outil d'installation pour Windows). Un certain nombre d'autres étapes étaient nécessaires pour construire le programme d'installation, donc ce n'était qu'une étape de plus à ajouter à un script / processus de construction.)
Peter Mortensen

20

Comme d'autres l'ont dit, il n'y a aucun moyen de faire un commentaire sur une seule ligne légalement en XML qui commente plusieurs lignes, mais il existe des moyens de rendre le commentaire de segments de XML plus facile.

En regardant l'exemple ci-dessous, si vous ajoutez '>' à la première ligne, le XmlTag ne sera pas commenté. Supprimez le '>' et il est à nouveau commenté. C'est le moyen le plus simple que j'ai vu pour commenter / décommenter rapidement XML sans casser les choses.

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

L'avantage supplémentaire est que vous ne manipulez que le commentaire du haut, et le commentaire du bas peut rester là pour toujours. Cela rompt la compatibilité avec SGML et certains parseurs XML y vont. Tant que ce n'est pas un élément permanent dans votre XML et que vos analyseurs l'acceptent, ce n'est pas vraiment un problème.

Le surligneur de syntaxe de Stack Overflow et de Notepad ++ le traite comme un commentaire multiligne, la bibliothèque Boost de C ++ le traite comme un commentaire multiligne, et le seul analyseur que j'ai trouvé jusqu'à présent qui casse est celui de .NET, en particulier C #. Alors, assurez-vous d'abord de tester que vos outils, IDE, bibliothèques, langage, etc. l'acceptent avant de l'utiliser.

Si vous vous souciez de la compatibilité SGML, utilisez simplement ceci à la place:

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

Ajoutez '->' au commentaire supérieur et un '-' au commentaire inférieur. L'inconvénient est de devoir modifier le commentaire du bas à chaque fois, ce qui faciliterait probablement la saisie en <!--haut et -->en bas à chaque fois.

Je tiens également à mentionner que d'autres commentateurs recommandent d'utiliser un éditeur XML qui vous permet de cliquer avec le bouton droit de la souris et de commenter / décommenter des blocs de XML, ce qui est probablement préférable aux astuces de recherche / remplacement sophistiquées (cela constituerait également une bonne réponse en soi, mais je n'ai jamais utilisé de tels outils. Je veux juste m'assurer que l'information n'est pas perdue avec le temps). Personnellement, je n'ai jamais eu à traiter suffisamment de XML pour justifier d'avoir un éditeur plus sophistiqué que Notepad ++, c'est donc à vous de décider.


3
Malheureusement, c'est faux. La spécification dit, pour la compatibilité, la chaîne "-" (double tiret) NE DOIT PAS apparaître dans les commentaires.
kojiro le

2
Bien sûr, ce n'est pas légal. La spécification est claire à ce sujet. Les analyseurs XML peuvent suivre la loi de Postel et vous permettre de vous en sortir, mais un vérificateur de bonne formation conforme le signalera.
kojiro

4
Comme le dit @kojiro, un commentaire contenant "-" n'est pas du XML bien formé. La phrase à propos de "Pour la compatibilité" est simplement les éditeurs de spécifications indiquant leur raison pour inclure cette horrible règle: cela ne signifie pas que vous pouvez ignorer la règle si vous n'êtes pas intéressé par la compatibilité. Abaisser la réponse car elle est fausse.
Michael Kay

10
Vous pourriez l'écrire <!-- ->et qu'il s'agisse d'ajouter un tiret au lieu d'avoir du non-XML.
kojiro le

3
@RyanWH continue de faire ce qui fonctionne pour vous, mais vous semblez dépendre d'un bogue dans l'analyseur XML que vous utilisez. Personnellement, j'utilise un IDE (oXygen) qui me permet de sélectionner un morceau de texte XML, de faire un clic droit et de demander à le commenter. Ce qui semble beaucoup plus facile que votre technique.
Michael Kay

12

C'est la même chose que les commentaires de bloc HTML ou JavaScript:

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

5

Pas orthodoxe, mais ça marche pour moi parfois; définissez votre commentaire comme un autre attribut:

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.