XMLの1行にコメントするにはどうすればよいですか?


123

これはむしろ見逃さないための検証です。

XMLに行コメントはありませんか?したがって、コンパイラが使用する "//"のように、クローザーがないもの。

XMLでタグのブロックをコメントアウトするにはどうすればよいですか。そして他のいくつかの議論。

このタイプのコメントは、行をどこかに近づけることなく、コメントアウトするのに実用的です。


2
XMLは、エディターなどのツールがワードラップを実行することが多く、したがって行末が壊れやすいことを前提に設計されています。コメントのために行末を保持しなければならないのは悪い考えです。
Michael Kay

2
確かに、エディタは表示のために行を折り返すだけです。ファイル自体に任意に追加されるハード改行を私は知りません。それは、行コメントがない地獄の迷惑です。
John White

回答:


147

いいえ、XMLの行にコメントを付けて、改行でコメントを自動的に終了させる方法はありません。

XMLにはコメントの定義が1つしかありません。

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

XML では、SGMLとの互換性--を維持するためにコメントを禁止しています。


回避策は、行コメント(//)を使用し、スクリプトを実行して、使用前にそれらのコメントを削除することです(単一ステップのビルドプロセスの一部になる場合があります)。コメントを使用するより便利な方法になります。(私はWiXソース(Windows用のインストーラーツール)でこの手法を使用しました。インストーラーのビルドには他のいくつかの手順が必要だったので、これはビルドスクリプト/プロセスに追加するためのもう1つの手順でした。)
Peter Mortensen

20

他の人が言ったように、複数の行をコメントアウトするXMLで単一の行コメントを合法的に行う方法はありません、XMLのセグメントをコメントアウトしやすくする方法があります。

以下の例を見ると、 '>'を1行目に追加すると、XmlTagはコメント解除されます。「>」を削除すると、再びコメント化されます。これは、物事を壊すことなく、XMLをすばやくコメント/コメント解除するために私が見た最も簡単な方法です。

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

追加の利点は、上部のコメントのみを操作し、下部のコメントは永久にそこにとどまることができることです。これにより、SGMLとの互換性が失われ、一部のXMLパーサーがSGMLを妨害します。これがXMLの永続的なフィクスチャではなく、パーサーがそれを受け入れる限り、それは本当に問題ではありません。

Stack OverflowとNotepad ++の構文ハイライターは複数行コメントのように扱い、C ++のBoostライブラリはそれを複数行コメントとして扱います。これまでに見つけた唯一のパーサーは、.NETのパーサー、特にC#です。したがって、使用する前に、まずツール、IDE、ライブラリ、言語などがそれを受け入れることをテストしてください。

SGMLの互換性を気にする場合は、代わりにこれを使用してください。

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

上部のコメントに「->」を追加し、下部のコメントに「-」を追加します。欠点は、下部のコメントを毎回編集する必要があることです。これにより<!--、上部と-->下部に毎回入力するのが簡単になるでしょう。

また、他のコメント作成者は、XMLのブロックを右クリックしてコメント/コメント解除できるXMLエディターの使用を推奨していることにも言及したいと思います。しかし、私はそのようなツールを使用したことがありません。情報が時間の経過とともに失われないようにしたいだけです)。私は個人的に、Notepad ++よりも優れたエディターを正当化するのに十分なほどXMLを扱う必要がなかったので、これは完全にあなた次第です。


3
残念ながら、これは誤りです。仕様によると、互換性のために、文字列 "-"(二重ハイフン)はコメント内で使用してはなりません。
小次郎2013年

2
もちろんそれは合法ではありません。スペックはそれで明らかです。XMLパーサーはPostelの法則に準拠しているため、問題を回避できますが、準拠の整形式チェッカーがフラグを立てます。
小次郎2013年

4
@kojiroが言うように、「-」を含むコメントは整形式のXMLではありません。「互換性のため」というフレーズは、この恐ろしいルールを含める理由を述べているスペックエディタにすぎません。互換性に関心がない場合でも、ルールを無視できるという意味ではありません。答えが間違っているので、反対票を投じます。
マイケルケイ

10
あなたはそれ<!-- ->を書いて、それを非XMLではなくダッシュを追加することの問題にすることができます。
小次郎2013年

3
@RyanWHはあなたのために働くことを続けますが、あなたはあなたが使っているXMLパーサーのバグに依存しているようです。個人的には、XMLテキストの一部を選択して右クリックし、コメントアウトすることを可能にするIDE(oXygen)を使用しています。それはあなたのテクニックよりもずっと簡単に思えます。
Michael Kay

12

これは、HTMLまたはJavaScriptブロックのコメントと同じです。

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

5

正統派ではありませんが、私にとってはうまくいくことがあります。コメントを別の属性として設定します。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.