80
<!-- here is some comment --
                            ^
                            |
                    what can be here apart from '>'?

XMLはコメント内の「-」を好まないようです。どこかで「-」が内部のいくつかのモードを切り替えることを読みまし<! ... >たが、<!-- -- -- -->(偶数--の)も無効のようです。それが歴史的な特徴である場合、その「プロ」の部分は何ですか?(「反対」の部分は--コメントに含めることができないことです)。

コメントの「->」の終わりだけを作成せず、「-」を内部に許可することによってコメント処理を複雑にする理由は何ですか?

4

5 に答える 5

59

標準文書から:

http://www.w3.org/TR/REC-xml/#sec-comments

[定義: コメントは、他のマークアップ以外のドキュメント内のどこにでも表示できます。さらに、文法で許可されている場所で文書型宣言内に表示される場合があります。それらはドキュメントの文字データの一部ではありません。XML プロセッサは、アプリケーションがコメントのテキストを取得できるようにする場合がありますが、必須ではありません。互換性のため に、文字列 " -- " (2 つのハイフン) をコメント内で使用しないでください。]パラメータ エンティティ参照は、コメント内で認識されてはなりません。

于 2012-05-31T22:32:29.880 に答える
58

多分それは誰かにとって役立つかもしれません。-- で始まる XML のコマンド ライン パラメータをコメント アウトしたいという問題がありました。

<arg line="-v --line-break 0" />  

このように自然に通常の方法で

<!-- <arg line="-v --line-break 0" /> -->

は機能しませんでしたが、-が置き換えられた場合、UTF-8 に相当する&#x002D;&#45;、機能し、コメント内で許容できることがわかりました。

だから私の場合、文字列

<arg line="-v &#45;&#45;line-break 0" />

正しく解析され、コメントの一部にすることができます。

もちろん、少し醜いように見えますが、XML のコメントとして文字列を保持したい場合は、何もないよりはましだと思います。

于 2014-01-02T14:29:43.860 に答える
37

それは SGML にあり、人々は互換性を壊したくなかったので、XML にあるばかげたルールの 1 つです。なぜそれが SGML にあるのかは、誰でも推測できます。おそらく、元のパーサーで 3 行のコードを節約したからでしょう。

于 2012-06-01T08:00:10.873 に答える
30

--SGML との互換性のために許可されていません。On SGML および HTMLから:

マークアップ宣言の開始区切り文字 (「<!」) とコメントの開始区切り文字 (「--」) の間では空白を使用できませんが、コメントの終了区切り文字 (「--」) とマークアップ宣言の終了区切り文字 ( ">」)。一般的なエラーは、コメント内に一連のハイフン ("---") を含めることです。著者は、コメント内に 2 つ以上の隣接するハイフンを入れないようにする必要があります。

そのため、SGML では、「マークアップ宣言」を<!開いて閉じ、コメントを開いたり閉じたりします。>--

于 2012-05-31T22:39:13.967 に答える