Como posso comentar uma única linha em XML?

123

Esta é uma verificação apenas para não perder.

Existe / não há um comentário de linha em XML? Então, um sem um mais próximo, como "//" o compilador usa.

Vi Como comentar um bloco de tags em XML? e várias outras discussões.

Esse tipo de comentário seria prático para comentar uma linha sem incomodá-la em algum lugar mais abaixo.

Roam
fonte
2
O XML é projetado no pressuposto de que ferramentas como editores geralmente executam quebra de linha e que as terminações de linha são, portanto, frágeis. Seria uma má idéia se as terminações de linha tivessem que ser preservadas apenas no caso de comentários.
Michael Kay
2
Certamente, os editores quebram apenas as linhas para exibição . Eu nunca soube que novas linhas rígidas fossem adicionadas arbitrariamente ao próprio arquivo. É um incômodo infernal não ter um comentário na linha.
John John

Respostas:

147

Não, não há como comentar uma linha em XML e fazer com que o comentário termine automaticamente em uma quebra de linha.

XML possui apenas uma definição para um comentário :

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

O XML proíbe --comentários para manter a compatibilidade com o SGML .

kojiro
fonte
Uma solução alternativa é usar comentários de linha ( //) e executar um script para remover esses comentários antes do uso (pode fazer parte de um processo de construção de etapa única). Torna uma maneira muito mais conveniente de usar comentários. (Eu usei essa técnica com a fonte WiX (ferramenta de instalação para Windows). Várias outras etapas foram necessárias para criar o instalador, portanto, essa foi apenas mais uma etapa para adicionar a um script / processo de compilação.)
Peter Mortensen
20

Como outros já disseram, não há como fazer um único comentário de linha legalmente em XML que comente várias linhas, mas existem maneiras de tornar mais fácil comentar segmentos de XML.

Observando o exemplo abaixo, se você adicionar '>' à linha um, o XmlTag será descomentado. Remova o '>' e ele será comentado novamente. Essa é a maneira mais simples que eu já vi para comentar / descomentar XML rapidamente sem quebrar as coisas.

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

O benefício adicional é que você manipula apenas o comentário principal e o comentário inferior pode ficar ali para sempre. Isso rompe a compatibilidade com o SGML e alguns analisadores XML o fazem vomitar. Contanto que este não seja um elemento permanente em seu XML e seus analisadores o aceitem, não é realmente um problema.

O marcador de sintaxe do Stack Overflow e do Notepad ++ o trata como um comentário de várias linhas, a biblioteca Boost do C ++ o trata como um comentário de várias linhas, e o único analisador que encontrei até agora que quebra é o do .NET, especificamente do C #. Portanto, verifique primeiro se suas ferramentas, IDE, bibliotecas, idioma etc. o aceitam antes de usá-lo.

Se você se preocupa com a compatibilidade SGML, basta usar isso:

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

Adicione '->' ao comentário superior e um '-' ao comentário inferior. A desvantagem é ter que editar o comentário inferior a cada vez, o que provavelmente tornaria mais fácil digitar na <!--parte superior e -->inferior de cada vez.

Também quero mencionar que outros comentaristas recomendam o uso de um editor XML que permita clicar com o botão direito do mouse e comentar / descomentar blocos de XML, o que provavelmente é preferível a truques sofisticados de localizar / substituir (isso também seria uma boa resposta, mas nunca usei essas ferramentas. Quero apenas garantir que as informações não sejam perdidas ao longo do tempo). Pessoalmente, nunca tive que lidar com o XML o suficiente para justificar ter um editor mais sofisticado que o Notepad ++, portanto, isso depende totalmente de você.

Shaz
fonte
3
Infelizmente, isso está errado. A especificação diz: Para compatibilidade, a string "-" (hífen duplo) NÃO DEVE ocorrer nos comentários.
kojiro
2
Claro que não é legal. A especificação é clara nisso. Os analisadores de XML podem seguir a Lei de Postel e permitir que você se safe dela, mas um verificador de boa formação compatível o sinalizará.
kojiro
4
Como o @kojiro diz, um comentário contendo "-" não é um XML bem formado. A frase sobre "Para compatibilidade" é meramente os editores de especificações que indicam o motivo da inclusão dessa regra horrível: isso não significa que você pode ignorar a regra se não estiver interessado em compatibilidade. Voto negativo da resposta, pois ela está errada.
Michael Kay
10
Você pode escrevê-lo <!-- ->e fazer questão de adicionar um traço em vez de não ser XML.
kojiro
3
O @RyanWH continua fazendo o que funciona para você, mas você parece depender de um bug no analisador XML que está usando. Pessoalmente, uso um IDE (oXygen) que permite selecionar um pedaço de texto XML, clicar com o botão direito do mouse e pedir para comentar. O que parece muito mais fácil do que sua técnica.
Michael Kay
12

É o mesmo que os comentários do bloco HTML ou JavaScript:

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

Não é ortodoxo, mas às vezes funciona para mim; defina seu comentário como outro atributo:

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