dポイントプレゼントキャンペーン実施中!

HTMLの文法に行コメントが無い理由を教えてください。

A 回答 (15件中1~10件)

>No.14 補足



少し日が経ちましたが。

慣れてくると、書き方はたくさんある方が、選択肢は多い方が良いです。
コメントの入れ子もそうですね。

ですが、そういう書き方が(ルール上、ブラウザの実装上で)出来なければどうしようもありません。

<ruby>などはHTML4やXHTML1.0でも使ってますが、それはFirefoxなどでは「表示上は問題ない」だけで、
コメントの入れ子などは表示上に問題があるため、使っていません。


ルール(HTMLの文法、およびブラウザ仕様)を変えるのは私ではなく、
ルールを制定しているW3CやWHATWG、Microsoft社、Webkit org.、Mozilla Foundation、Opera Software(社?)などです。
ルールを変えられるのであれば、ルールを変えれば使えるようになりますが、そうでなければそのルールに従うしか有りません。

WHATWGにはHTML5のタグ(コメントではありませんが)のことでいくつか提案はしましたが、
すべて却下されました。
    • good
    • 0

>No.11


指摘訂正ありがとうございます。


>src 属性があるとき、または不明な MIME 型が指定されたとき、その内容が無視されることを利用しています。

なるほど、これはいいかもです。

HTML4では<head>に<object type="text/javascript">を入れることが出来ますが、ブラウザは<head>内の<object type="text/javascript">は全部無視するようですので、
これでも擬似コメントになりますね。
特に<head>内では<script>なども含まれると思いますから、<script>タグの入れ子を防ぐことが出来ると思います。
(表示やJavaScriptでアクセス出来ないだけかもしれませんし、内部的にはわかりません。また各ブラウザの最新版は調べてません。)


タグ(命令)の終了記号、JavaScriptで";"に相当する*MLでは">"記号を省略したい、ということだとすると、
SGMLでは<tag<tag>という書き方も許容されているようですが、
おそらく現行や将来のHTMLでも採用されないかと思います。
逆に、<!-- -->が行コメントに等しいと考えれば、
範囲コメントは<comment> </comment>ということになりますし、*ML的にも自然だと思います。

この回答への補足

script 要素ではエディタの色分けでコメント色にできないのがちょっと。

HTMLのコメントには不便を感じます。
まだ自分がHTMLを書き慣れてないからかもしれません。慣れてる人は不便を感じないものですか?

補足日時:2011/06/10 14:10
    • good
    • 1

comment 要素で思い出しましたが、script 要素をコメントのように使うことは可能です。

HTML Std. (HTML5) では inline documentation として言及されています。

ゲームの地図データとして。
<script src="game-engine.js"></script>
<script type="text/x-game-map">
........U.........e
o............A....e
.....A.....AAA....e
.A..AAA...AAAAA...e
</script>

外部スクリプトの説明として。
<script src="cool-effects.js">
// create new instances using:
// var e = new Effect();
// start the effect using .play, stop using .stop:
// e.play();
// e.stop();
</script>

src 属性があるとき、または不明な MIME 型が指定されたとき、その内容が無視されることを利用しています。言うまでもなく濫用は禁物ですが、<script type="text/html">...</script> でのコメント化なら目くじらを立てることもないでしょうし。

参考URL:http://www.whatwg.org/specs/web-apps/current-wor …
    • good
    • 0

要するに、行コメントがないというルールだから行コメントがありません。



ルールを変えれば良いだけですが、ルールを決めている人が変えないだけです。
(ルールが変わったら、たとえばHTML4はHTML4.01に、XHTML1.0はXHTML1.1などとして、ちょっとだけ変わりましたよと知らせてきます。)
    • good
    • 0

SGML の注釈はタグ <...> ではありません。

マーク宣言 <!...> の一種です。他に処理命令 <?...> もあります。

※IE の独自拡張にはコメント要素 <comment>...</comment> があります(それゆえ、document.all にはコメントも含まれるし、*:first-child がコメントにマッチしてしまう)。

---
マーク宣言には文書型宣言 <!DOCTYPE ...>、要素型宣言 <!ELEMENT ...>、属性リスト宣言 <!ATTLIST ...> などがあります。

また、<![CDATA[...]]>(マークの無意味化)のように、ある区間のマーク・本文をまとめたものをマーク区間と言います。<![IGNORE[...]]>(内容の無視)と <![INCLUDE[...]]>(内容の包含)の切り替えなどは、質問者氏には良さげな仕組みだと思います。

マーク宣言の中で注釈を埋め込みたいとき、--...-- のように二重ハイフンで注釈を囲みます。
<!ELEMENT
 A  --要素名--
 -  --開始タグは省略不可--
 -  --終了タグは省略不可--
 (%inline;)*  --内容モデルはインライン--
 -(A)  --ただし A 要素自身を除く--
 >

中身が注釈だけのとき、注釈宣言となります。
<!--注釈-->

注釈宣言では、注釈と注釈の間に空白なら入れても構いません。
<!--注釈--
 --注釈--
 --注釈-->

というわけで、SGML 注釈はいわゆる「行コメント」として使っても(マーク宣言の中でなら)遜色ないものでは。とは言え、どうにも複雑な印象もありますが、いかがでしょうか。

---
SGML 注釈をまともに実装する HTML ブラウザはありません。そこで、HTML 4.0 では実装を簡単にしてブラウザの差異をなくすべく、注釈内に二重ハイフンを入れてはならないことにしました。これは XML の注釈も同じです。
<!--簡単注釈-->
<!--これは駄目-- --これは駄目-->

マーク区間についても、XML において本文に使えるのはマークを無効化する <![CDATA[...]]> だけになりました。かつ、本文には "]]>" を書いてはならないことになりました。なぜかはお分かりでしょう。

結局、SGML 仕様が複雑だったのと、ブラウザなどの実装があまりにバラバラだったので、注釈宣言・マーク区間の入れ子を避けるように、あるいはうっかり入れ子にならないように簡略化してきた、という歴史があります。「規格の互換性」と「実装の互換性」の両方の呪縛とでも言いましょうか。

今、HTML Std. (HTML5) の策定を進めている人達とは別に、XML の新版を作ろうという動きもあります。その中では、注釈の入れ子を許すべき、という意見が出ています。まあ、どうなるかは何とも。
    • good
    • 0

すでに話は展開しているようですが。



>例えばjavascriptも行の概念がないけど行コメントはあります。

行の概念の有無と、改行が意味を持たないのとはまた違うように思います。

ちなみに、JavaScriptは行の概念があり、改行が意味を持ちます。行末の ; は、省略しても意味が変わらない限り省略出来ます。
もちろん、行コメントありで、それ以外では構文上改行が意味を持たない言語はありますけどね。

この回答への補足

訂正させてしまって申し訳ない。

コメントは人が書くときに意味があって、人が書くときには行の概念はあるわけです。だから言語的な行の概念は関係ないのではと、他の言語を引き合いに出したわけです。

補足日時:2011/06/09 17:06
    • good
    • 0

連続失礼。

脊髄反射ダメですね。

コメントの入れ子にしたい場合、
行コメントと言うよりも、EMPTY種類のコメントタグと、ANY種のコメントタグの2種類をつくった方がいいと思います。
EMPTY種
<img>、<br>など
ANY種
<div>ここに<p>でも<span>でも</span>何でも</p>入る</div>


たとえば。

<コメント命令>
<div>
<!--コメント-->
<h1>あああ</h1>
<p>なにか文章
<!--コメントは続く-->
<h2>いいい</h1>
<p>文章も続く
</div>
</コメント命令>


まあ、HTML5も新ルールが作られるとは思いませんけど。


via:

/* 関数を全部コメントアウト
function a(){
// 入れ子コメント
alert('hello');
}
*/
    • good
    • 1

昔のブラウザはネストしたコメントも書けましたよ。



<!--- コメント
<!-- ここも
<!-
コメント
->
-->
ここまでコメント--->

セクション1つ全部をコメントにしたい、
-> でも、セクション中の段落ごとにコメントが使われている
-> どうする?

なんていうときに、ハイフンの数を増やすことで入れ子に出来たんですが、今はもう無理ですね。
    • good
    • 0

文法的な話をすると。



HTMLタグ、XHTMLタグと、それらの元になっているSGMLタグ、XMLタグは、
<(小なり記号)から>(大なり記号)までが1つの命令です。

<の直後に命令の種類が書かれ、命令の種類が/であれば、終了タグとして扱います。

<p>段落開始から段落終了</p>


コメントタグも同様、<という命令開始で始まり、タグの種類を示す!--が続き、>で終了します。(コメントタグの場合は--(ハイフン2つ)が必要。
内容無し(<img>などと同じ)ですので、終了タグはありません。


分解すると。

<!--コメント本文-->

<  : 命令開始
!  : 命令の種類
--  : コメント開始
(コメント本文)
--  : コメント終了
>  : 命令終了

と分解されます。

つまり、<、>という2つの文字がセットになっていなければなりません。

ですので、「行コメント」を作るのであれば、

<行コメント開始命令> この部分をコメントとする

というルールになるはずです。


「HTMLタグの外側にHTMLコメントをつくることが出来るか」というルールについて。

<p>段落1
<p>段落2

終了タグが省略できるわけですから、
「行コメント」というよりも、「次のタグまでをコメントとするタグ」というのはつくれると思います。


では、なぜこういうルールを作らなかったのか。


知らんがな(´・ω・`)

、、、先の回答へ続く。
    • good
    • 0

>マークアップ言語としてはマーク以外(つまり改行文字)を利用した文法を認めたくないと言うことですかね。



 そんな高慢なものじゃなくて、HTMLは人が作業できることを優先に作られた歴史によるものでしょう。
 そのため、他のプログラム言語では考えられない優柔不断な部分があります。たとえば、
<head>
<title>タイトル</title>
<body>
<p>ここは段落だよ。
<p>ここも段落
<ol>
<li>リストの項目
</ol>
なんて、終了タグどころかタグ自体必要のない<html>のような要素もたくさんあります。
 それどころか、
<p>
<li>項目
<li>項目
<p>
なんて書いても、ブラウザは表示してくれます。プログラム言語のように「Error!!」とつき返すことはないように定められています。
【引用】____________ここから
ブラウザは不正文書であっても何とかレンダリングしてユーザに不満を抱かせないようにと設計されているからである。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[SGML reference information for HTML (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )]より

【引用】____________ここから
HTMLでは、次に挙げる文字だけが空白類文字であると定義される。
 * ASCIIスペース (&#x0020;)
 * 水平タブ (&#x0009;)
 * 書式送り (&#x000C;)
 * ゼロ幅スペース (&#x200B;)
行区切り類もまた、空白類文字である。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Paragraphs, Lines, and Phrases (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )]より

 そのため、著者は改行や水平タブを用いて視覚的にメンテナンスしやすくなっています。
 一行しか書かないコメントは
<!-- ここはコメント -->
 ですみますし、<p>ここは<!-- 訂正 広嶋 -->広島です。</p>途中にも書ける。

 機械に頼ってマークアップすることを非推奨としている。
【引用】____________ここから
* HTMLでページを作らずにプログラムに頼る。
 こうしたテクニックによって、Webページはより複雑化し、限られた環境にしか適応しなくなり、相互運用性問題に悩まされることとなり、障害を持つ人々にアクセス障壁が設けられてしまう。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Style Sheets in HTML documents (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )]より

 HTMLの仕様の全体に流れているコンセプトは、「著者のマークアップの軽減」ですから、複数のコメントアウト手法を提供するよりは、たった一つの方法にしてあるのではないでしょうか?・・・技術的な面も、もちろんありますが・・
 XHTML化が猛反対を受けて、XML5の策定に変更されたのも思えばそういうことですし。

 著者の負担軽減と考えると良いかと・・

この回答への補足

元々この質問の疑問を持ったきっかけはコメントがネストして困ると思ったからなんです、それでjavascriptみたく行コメントがあればいいのにと軽く質問を投稿したわけです。
話が少しずれますが、ネストするような書き方が悪いんでしょうか。

補足日時:2011/06/08 20:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!