私は、完全にうまく動作している.htmlファイルを持っていますが、何らかの理由でサブライム3が無効なコードを持っていると判断した場合、以下:なぜ昇華は<!-------(複数のダッシュ)の構文エラーを考慮する
ことが起こって、どのようにコードを変更することなく、それを修正している理由の任意のアイデア?
私は、完全にうまく動作している.htmlファイルを持っていますが、何らかの理由でサブライム3が無効なコードを持っていると判断した場合、以下:なぜ昇華は<!-------(複数のダッシュ)の構文エラーを考慮する
ことが起こって、どのようにコードを変更することなく、それを修正している理由の任意のアイデア?
HTML5仕様の状態(私の強調):
コメントは、4つの文字列
U+003C LESS-THAN SIGN
、U+0021 EXCLAMATION MARK
、U+002D HYPHEN-MINUS
、U+002D HYPHEN-MINUS
(<!--
)で開始する必要があります。このシーケンスに続いて、コメントは、テキストが単一>
(U+003E
)文字で始めることはできませんという追加の制限で、テキストを持って、また>
(U+003E
)文字が続くU+002D HYPHEN-MINUS
文字(-
)で始めることができも含む2つの連続した
U+002D HYPHEN-MINUS
文字(--
)、も
U+002D HYPHEN-MINUS
文字(-
)で終わります。最後に、コメントは3文字シーケンスU+002D HYPHEN-MINUS
,U+002D HYPHEN-MINUS
,U+003E GREATER-THAN SIGN
(-->
)で終了する必要があります。
だから、それは不平を言っている理由です。コードを変更せずに修正する方法は、面倒です。
あなたの主張は、Cの開発者にとって、実際には書かれたコードがうまく動作しないため、なぜ未定義の動作について心配する必要があるのだろうと思っているのです。 1つの特定の実装で正常に動作するという事実は、移植可能なコードには関係ありません。
私の助言は、実際にコードを変更することです。結局のところ、有効ではなく、ブラウザ(現在または将来)は単にそれを拒否する権利の範囲内にあります。余談として
いくつかの歴史的な掘削した後、HTMLが基になったSGMLは、コメントに関するわずかに異なるルールを持っていたので、これは許可されていません表示されます。
<!--
トークンが検出されると、パーサーはコメントモードに切り替えられました。コメントモードでは、実際にコメント内に>
文字が許可されています。 --
シーケンスに遭遇した場合は、>
endとなる異なるモードに変更されました。
実際には、これらの2つのモードの切り替えスイッチであるように見えるので、がコメントを終了する>
を入力すると、<!-- >>>>> -- xyzzy -- >>>>> -->
のようになります。いずれかの
XML、この動作を採用しなかったとHTMLが今理由はほとんど誰コメント振る舞っていることを知っていたということで、ルール「全てのコメント内--
を使用しない」に従うためにそれを修正しましたSGMLの方法で、いくつかの痛みを引き起こします:-)
[XMLコメント](https://www.w3.org/TR/xml/#sec-comments)でも同じです。規格は理由としてSGMLとの互換性を挙げている。 –
詳細な回答をありがとうpax –