• 締切済み

行コメントが無い理由

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

  • wsp
  • お礼率13% (9/68)
  • HTML
  • 回答数15
  • ありがとう数0

みんなの回答

回答No.15

>No.14 補足 少し日が経ちましたが。 慣れてくると、書き方はたくさんある方が、選択肢は多い方が良いです。 コメントの入れ子もそうですね。 ですが、そういう書き方が(ルール上、ブラウザの実装上で)出来なければどうしようもありません。 <ruby>などはHTML4やXHTML1.0でも使ってますが、それはFirefoxなどでは「表示上は問題ない」だけで、 コメントの入れ子などは表示上に問題があるため、使っていません。 ルール(HTMLの文法、およびブラウザ仕様)を変えるのは私ではなく、 ルールを制定しているW3CやWHATWG、Microsoft社、Webkit org.、Mozilla Foundation、Opera Software(社?)などです。 ルールを変えられるのであれば、ルールを変えれば使えるようになりますが、そうでなければそのルールに従うしか有りません。 WHATWGにはHTML5のタグ(コメントではありませんが)のことでいくつか提案はしましたが、 すべて却下されました。

回答No.14

>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的にも自然だと思います。

wsp
質問者

補足

script 要素ではエディタの色分けでコメント色にできないのがちょっと。 HTMLのコメントには不便を感じます。 まだ自分がHTMLを書き慣れてないからかもしれません。慣れてる人は不便を感じないものですか?

  • Chaire
  • ベストアンサー率60% (79/130)
回答No.13

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-work/multipage/scripting-1.html#inline-documentation-for-external-scripts
回答No.12

要するに、行コメントがないというルールだから行コメントがありません。 ルールを変えれば良いだけですが、ルールを決めている人が変えないだけです。 (ルールが変わったら、たとえばHTML4はHTML4.01に、XHTML1.0はXHTML1.1などとして、ちょっとだけ変わりましたよと知らせてきます。)

  • Chaire
  • ベストアンサー率60% (79/130)
回答No.11

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 の新版を作ろうという動きもあります。その中では、注釈の入れ子を許すべき、という意見が出ています。まあ、どうなるかは何とも。

  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.10

すでに話は展開しているようですが。 >例えばjavascriptも行の概念がないけど行コメントはあります。 行の概念の有無と、改行が意味を持たないのとはまた違うように思います。 ちなみに、JavaScriptは行の概念があり、改行が意味を持ちます。行末の ; は、省略しても意味が変わらない限り省略出来ます。 もちろん、行コメントありで、それ以外では構文上改行が意味を持たない言語はありますけどね。

wsp
質問者

補足

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

回答No.9

連続失礼。脊髄反射ダメですね。 コメントの入れ子にしたい場合、 行コメントと言うよりも、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'); } */

回答No.8

昔のブラウザはネストしたコメントも書けましたよ。 <!--- コメント <!-- ここも <!- コメント -> --> ここまでコメント---> セクション1つ全部をコメントにしたい、 -> でも、セクション中の段落ごとにコメントが使われている -> どうする? なんていうときに、ハイフンの数を増やすことで入れ子に出来たんですが、今はもう無理ですね。

回答No.7

文法的な話をすると。 HTMLタグ、XHTMLタグと、それらの元になっているSGMLタグ、XMLタグは、 <(小なり記号)から>(大なり記号)までが1つの命令です。 <の直後に命令の種類が書かれ、命令の種類が/であれば、終了タグとして扱います。 <p>段落開始から段落終了</p> コメントタグも同様、<という命令開始で始まり、タグの種類を示す!--が続き、>で終了します。(コメントタグの場合は--(ハイフン2つ)が必要。 内容無し(<img>などと同じ)ですので、終了タグはありません。 分解すると。 <!--コメント本文--> <  : 命令開始 !  : 命令の種類 --  : コメント開始 (コメント本文) --  : コメント終了 >  : 命令終了 と分解されます。 つまり、<、>という2つの文字がセットになっていなければなりません。 ですので、「行コメント」を作るのであれば、 <行コメント開始命令> この部分をコメントとする というルールになるはずです。 「HTMLタグの外側にHTMLコメントをつくることが出来るか」というルールについて。 <p>段落1 <p>段落2 終了タグが省略できるわけですから、 「行コメント」というよりも、「次のタグまでをコメントとするタグ」というのはつくれると思います。 では、なぜこういうルールを作らなかったのか。 知らんがな(´・ω・`) 、、、先の回答へ続く。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.6

>マークアップ言語としてはマーク以外(つまり改行文字)を利用した文法を認めたくないと言うことですかね。  そんな高慢なものじゃなくて、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-html401j/sgml/intro.html#h-19.1 )]より 【引用】____________ここから HTMLでは、次に挙げる文字だけが空白類文字であると定義される。  * ASCIIスペース (&#x0020;)  * 水平タブ (&#x0009;)  * 書式送り (&#x000C;)  * ゼロ幅スペース (&#x200B;) 行区切り類もまた、空白類文字である。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Paragraphs, Lines, and Phrases (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/text.html#h-9.1 )]より  そのため、著者は改行や水平タブを用いて視覚的にメンテナンスしやすくなっています。  一行しか書かないコメントは <!-- ここはコメント -->  ですみますし、<p>ここは<!-- 訂正 広嶋 -->広島です。</p>途中にも書ける。  機械に頼ってマークアップすることを非推奨としている。 【引用】____________ここから * HTMLでページを作らずにプログラムに頼る。  こうしたテクニックによって、Webページはより複雑化し、限られた環境にしか適応しなくなり、相互運用性問題に悩まされることとなり、障害を持つ人々にアクセス障壁が設けられてしまう。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Style Sheets in HTML documents (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/present/styles.html#h-14.1 )]より  HTMLの仕様の全体に流れているコンセプトは、「著者のマークアップの軽減」ですから、複数のコメントアウト手法を提供するよりは、たった一つの方法にしてあるのではないでしょうか?・・・技術的な面も、もちろんありますが・・  XHTML化が猛反対を受けて、XML5の策定に変更されたのも思えばそういうことですし。  著者の負担軽減と考えると良いかと・・

wsp
質問者

補足

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

関連するQ&A

  • alertのコメントを複数行にしたい。

    こんばんは,よろしくお願いします。 alert("コメント"); のコメントを任意の位置で改行して,複数行にすることはできるのでしょうか? その方法について教えていただきたいです。よろしくお願いします。

  • 「ニコニコ動画」で一度に2行以上のコメントをするには?

    「ニコニコ動画」では通常、コメントの長さに関わらず、 一度に1行までしかコメントできませんが、 一度に2行以上、コメントする方法はないのでしょうか? 実際にやっていた方がいらしたので、方法があるように思います。 方法があれば、教えてください!

  • Perlでの複数行にわたるコメント

    Perlにおいて複数行コメントを記述するには =for comment コメントを記述 =cut と書けるとのことですが =for commentと=cutの間に 以下のように1行のコメントが記述されていても問題ありませんか? =for comment #名前をチェック if ($FORM{'name'} eq "") { $error .= "「名前」が入力されていません。$br"; } #タイトルをチェック if ($FORM{'title'} eq "") { $error .= "「タイトル」が入力されていません。$br"; } #コメントをチェック if ($FORM{'comment'} eq "") { $error .= "「コメント」が入力されていません。$br"; } =cut

    • ベストアンサー
    • Perl
  • JSONのコメント行の書き方について

    いつもお世話になります。 JSONでコメント行を書くにはどうしたらよろしいのでしょうか。 {"title":"sample data", "person":[ {"id":"1","nameFirst":"太郎","nameLast":"鈴木","age":"24","birth":"1234-12-22"}, {"id":"1","nameFirst":"花子","nameLast":"鈴木","age":"24","birth":"3456-12-22"} ]} などというデータを javascriptと同じ要領で以下のようにコメントアウトすると {"title":"sample data", "person":[ // {"id":"1","nameFirst":"太郎","nameLast":"鈴木","age":"24","birth":"1234-12-22"}, {"id":"1","nameFirst":"花子","nameLast":"鈴木","age":"24","birth":"3456-12-22"} ]} $.getJSON(jsonDataUrl,function(json) { successFunc(json); return; }); で、読み取れなくなってしまいます。 JSONは、そもそもコメント行の記載ができないのでしょうか。 よろしくお願いいたします。

  • pythonでファイルのコメント行を削除したい

    pythonを勉強し始めたばかりなのですが、ちょっと困っています。 pythonでデータファイルのコメント行を削除して、データだけ後の計算に回したいのですが、コメント行を削除する方法がわからなくて困っています。 データファイルは以下のようになっています。 #test1 #test2 test2 #test3 teset3 test3 0, 10 1, 2 2, 9 3, 3 4, 4 5, 7 コメント行は頭に#が付くようになっていますが、この例のように3行ではなく、他の行数になった場合でも対処できるようにしたいです。

  • VB.NETで数十行のプログラムをコメントするには?

    VB.NET2005を使用しています。 サブプロシージャ内のプログラムのうち 一部の数十行のプログラムをコメントとして扱いたい のですがわざわざ全ての行を ' でコメントするのも面倒ですので 何かいい方法があればご教示いただけないでしょうか?

  • コメント行を検索対象から除外する方法

    C/C++のソースコードを普通にテキスト検索やGREPを実行すると、当然コメントも検索結果に表示されます。コメント部分が検索結果に表示されないようにする手段やツールはあるでしょうか?つまり、"//"以降改行文字までと"/* */"に囲まれたコードを検索対象から除外するということです。#if 0 ~ #endifも適切に解釈して除外してくれるとより助かります。 Visual Studioのテキストエディタで実現出来れば一番都合が良いのですが、それらしいオプションが見当たりません。 秀丸エディタのGREPのオプションに「追加の条件」の設定があり、ここでコメントを除く指定をすればコメント行が検索対象から除外されます。ただ、この方法だと通常の検索の何倍もの時間がかかってしまい非現実的です。恐らく全ての文字をコメント文字かどうか判定しているのでしょう。 検索対象のソースは2万ファイルに上り、100万行を超えています。10文字の検索文字列で、普通に全ソースGREPすると25秒程度、コメントを除くオプション指定だと315秒(5分以上)かかりました。もちろん検索文字の長さやその他オプションにも依存するでしょうが、さすがに普段使いとしては現実的ではない所要時間です。 除外したいコメント行はたいてい行頭にコメント文字"//"がありますので、行頭の"//"のチェックに限定したいです。ただ空白スキップくらいはあると良いです。これにより現実的な検索時間に収まるかどうかはやってみないと分かりませんが・・ なお、検索結果からコメント行を削除する秀丸のマクロはありました。ただ、この方法ではコメント行も検索対象となるため、余分な検索時間がかかっていますし、何しろ二度手間です。普段のソース検索でコメント行も含む検索はあまり行わないと思います。 なぜこれが問題になるかと言いますと、ソースに修正前のコードをコメントとして残してあるため、コメント行が膨大になっているのです。Javaの標準ライブラリほどではありませんが、ざっと調べたところソースの40%はコメント行です。 同一箇所の複数の変更履歴が全部コメントとして残っているため、実質1か所のヒットでも検索結果に2つも3つも重複して表示されてしまいます。もちろん、このように修正履歴をコメントとして残すこと自体が問題なのは分かっていますが、自前のソースではないので手を出せないのです。

  • 秀丸エディタでコメント行に色をつけたい

    VBのコードを秀丸で編集しています。 VBのように「'」で始まるコメント行の色を変えたいのですが、 どのようにすればいいでしょうか? よろしくお願いします。

  • seesaaブログのコメント欄を削除するには

    seesaaブログのカスタマイズについて質問です。 seesaaブログをホームページとして使いたいので コメント欄を非表示(もしくは削除)したいと考えています。 seesaaに問い合わせたところ、以下の回答がありました。 http://blog-help.seesaa.net/article/32923241.html しかし、この方法を試したところ、再構築はやっているにも かかわらず、コメント欄もそのままで、入力もできます。 どうしたものでしょうか。 ちなみにHTMLを編集してもいいので、欄自体をなくしてしまいたいのです。 HTMLには<%~といったseesaa独自の文法になっているので どこをどういじればいいのかわかりません。 おわかりになる方、ぜひ教えていただければと思います。 よろしくお願いいたします。

  • 数IIIの積分法のところですが2行目から3行目になる理由が分かりません。何

    数IIIの積分法のところですが2行目から3行目になる理由が分かりません。何か公式みたいなのがあれば教えて欲しいです。出来れば3行目から4行目の解説もよろしくお願いします

専門家に質問してみよう