/
486.txt
261 lines (200 loc) · 13.3 KB
/
486.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
* [CODE(DOMi)@en[Comment]] インターフェイス (DOM)
[43] [[DOM]] では、[RUBYB[注釈節] [[CODE(DOM)[Comment]] node]]はどんな種類の子[[節]]も持つことは出来ません。
[44] 注釈節は [[HTML]] ([[SGML]]) 及び [[XML]]
の[[注釈宣言]]に対応しています。
[45] [CODE(DOM)[[[CharacterData]]]] を継承しています。
追加の属性等はありません。
[46] DOM の規定では、「[CODE(XML)[<!--]] で始まり
[CODE(XML)[-->]] で始まるその間が注釈だ、
だけどこれは XML の話で、 HTML 解析器は完全な SGML
の注釈を解釈できるかもねん☆」となっていますが、
その 「SGML の注釈」がどう扱われるのかは書かれていません。
例えば、 [SAMP(HTML)[<!--comment 1-- -- comment 2 -- >]]
はどう解釈されるのでしょう。 [CODE(DOM)[[[nodeValue]]]]
は [SAMP(HTML)[comment 1 comment 2 ]]
でしょうか、それとも [SAMP(HTML)[comment 1-- -- comment 2 ]]
でしょうか。はたまたその他でしょうか。
また、 SGML 的に不正な、
[SAMP(HTML)[<!-- comment1 -- comment2 -->]]
のような注釈を、著者の意図したように解釈する HTML
解析器は少なくありませんが、そのような場合はどうなるのでしょう。
[REFS[
- [DOM1] ''Document Object Model (Core) Level 1'' <http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-1728279322>
- [DOM2] ''Document Object Model Core'' <http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1728279322>
]REFS]
* コメント、コメント宣言 (SGML)
[2]
>
:[RUBYB[注釈宣言][comment declaration]]:
[[注釈]]だけを含む[[マーク宣言]]。
[SRC[[[JIS X 4151]]‐1992 3. (167)]]
- [3] [CODE(ABNF)[[DFN[注釈宣言]] := [CODE(SGML)[[[mdo]]]] '''['''注釈 *([[s]] / 注釈)''']''' [CODE(SGML)[[[mdc]]]] ;; (91)]]
[4] 空の注釈宣言 [CODE(SGML)[<!>]] は、
見易さのために空行を入れたいものの、
[[短縮参照]]を使っているので[[記録開始]]・[[記録終了]]を迂闊に使えない時に有用です。
(JIS X 4151‐1992 参考3 5.2.1 参照。)
[5] [WEAK[規格参照区切子で]]注釈を使うときは、途中で [CODE[--]]
を使わないことにするのはもちろん、一番最後に [CODE[-]]
を使わないようにも注意しないといけません。 ([CODE(SGML)[--->]]
で、最初の [SAMP(SGML)[--]] と謎の [SAMP[->]] に誤認されます。)
[14]
>>3 マーク宣言だけど [CODE(SGML)[[[ps]]]] ではなく [CODE(SGML)[[[s]]]] なんだ。
[23] >>14 [[引数実体参照]]を認めると面倒くさいからでしょうね。
[24] コメント:
> [[文書]]を使う人を補助する説明又は留意事項を含む[[マーク宣言]]の一部。 Comment。 [INS[([[JISX4151]]‐1992 3. (165))]]
- [25] [CODE(ABNF)[[DFN[注釈]] := [CODE(SGML)[[[com]]]] *[[SGML文字]] [CODE(SGML)[com]] ;; (92)]]
[26] 注釈内では、終端区切子 [CODE(SGML)[com]] 以外の[[マーク]]は認知しません。 (9.3 参照。)
** ISO/IEC 10744 Conventional Comment
[27] [[ISO/IEC 10744]]:1997 は [Q@en[conventional comment]]
と称して[[注釈]]中に構文その他の注釈を入れる書式を規定しています。
これはこの仕様書内だけのもので、[[応用]]その他が特別な処理をすることを想定はしていません。
仕様書:
- [[ISO/IEC 10744]]:1997
-- [CSECTION@en[5 Notation]] <http://y12web2.y12.doe.gov/sgml/wg8/docs/n1920/html/clause-5.html>
[28]
[FIG(list)[
- [29] [[マーク宣言]]の[[体系的形式]]の[[名前]]
([[参照具象構文名]]) の後には、
[[注釈]]を書きます。その中には、[[完全名]]、
説明、[[規格]]の[[条項]]番号を順に記述します。
- [30] [[属性形式]]の[[属性定義並び宣言]]
[WEAK[(すなわち、複数の[[要素形式]]や[[記法形式]]で用いられ得る[[属性定義並び宣言]])]]
は、[[鍵語]] [CODE(SGML)@en[[[ATTLIST]]]]
の後に[[注釈]]として[[参照具象構文名]]を書きます。
[WEAK[(1組の[[要素形式]]か[[記法形式]]でしか用いられない[[属性定義並び宣言]]では (それは[[属性形式]]ではないので) こうしません。)]]
- [31] [[属性定義]]それぞれに[[注釈]]として[[完全名]]と説明を書きます。
- [32] [[属性]]や[[データ内容]]の[[字句型]]は
[[HyLex]] により[[注釈]]として記述します。その[[注釈]]の先頭の語は、
[[字句模型]]が[[正規化]]済みのものである場合は
[Q@en[Lextype]], 未[[正規化]]のものである場合は
[Q@en[Ulextype]] とします。
-- [[HyLex]] [[字句模型]]中の [CODE(SGML)@en[[[ATTNAME]]]] と
[CODE(SGML)@en[[[NOTATION]]]]
の解釈についてはそれぞれの項を参照して下さい。
- [33] [Q@en[Constraints]] で始まる[[注釈]]は、
構文上、意味上の追加の制約を説明します。
[[体系的形式]]の[[名前]]の後にある場合はその[[体系的形式]]に関して、
[[マーク宣言]]の構成部品の後にある場合はその構成部品が定義するものに関しての制約を表します。
- [34] [Q@en[Note]] は追加情報で、制約ではありません。
- [35] [[要素形式]]と[[記法形式]]の宣言では、
適用される[[属性形式]]を[[注釈]]として記述しています。
[Q@en[Attributes]] は常に適用される[[属性形式]]、
[Q@en[CommonAttributes]] は[[体系]]共通の[[属性形式]]、
[Q@en[OptionalAttributes]] は特定の[[機能]]が[[支援]]されている時有効な[[属性形式]]を表します。
- [36] [Q@en[Referrer]] にはその[[要素形式]]の[[要素]]を[[参照]]し得る[[要素形式]]の[[名前]]と、
その[[参照]]する[[属性]] ([[内容]]により[[参照]]する場合を除きます。)
を記述します。
- [37] どう[[宣言]]されているかは別として、意味的に[[参照]]である[[属性]]には、
[Q@en[Reference]] と[[注釈]]を付けます。
- [38] [[参照先的属性]]の定義で
[Q@en[Reftype]] の後に[[名前]]または [CODE(SGML)@en[[[or]]]]
[[名前群]]を書くと、その[[要素形式]]の[[要素]]を[[参照]]しなければならないことを表します。
-- [[一般体系]]ではより強力な [CODE(SGML)@en[[[reftype]]]]
という[[機能]]があります。
- [39] [[暗示属性]]や[[内容参照属性]]では
[Q@en[Default]] の後に[[既定値]]を書くことができます。
- [40] [[属性定義]]に [Q@en[Constant]]
を含めると[[定数属性]]であることを表します。
- [41] なお、 [Q@en[Constant]], [Q@en[Lextype]],
[Q@en[Ulextype]], [Q@en[Reference]], [Q@en[Reftype]]
は [[SGML]] 以上の[[検証]]を行うために認識、処理できます。
]FIG]
* 例
- [7] [SAMP(SGML)[<!-- 第3段落 -->]]
(XML でも OK)
- [8] [SAMP(SGML)[<!-- ちょっときわどいので注釈化 <p>しかし、...。</p> -->]]
(XML でも OK)
- [9] [SAMP(SGML)[<!---------------------------------------->]]
- [11] [SAMP(SGML)[<!>]]
- [12] [SAMP(SGML)[<!-- あいうえお -- -- かきくけこ -->]]
[[#comment]]
不正な例:
- [10] [SAMP(SGML)[<!---------->]]
* 参考文献
- [1] ''マニアックな文法論議 - SGML の注釈宣言'' <http://www.ne.jp/asahi/minazuki/bakera/html/sgml/comdeclare>
[[#comment]]
* メモ
[42] [[HTML 4]] 仕様書は、 [[DTD]] の[[注釈]]は[[参考]]としています。
[[XHTML 1.0]] 仕様書にはこのような規定はありません。
[6] [[HTML 4]] では、[[利用者エージェント]]は注釈 (宣言)
を[[レンダリング]]してはなりません。
(<IW:HTML4:conform.html#sgmlconvent> 参照。)
これを厳密に解釈すると、注釈宣言表示機能を実装した UA
は HTML 4 不適合になってしまいますが、あくまで、
通常の表示モードではレンダリングしないというのが HTML 4
の意図でしょう。
[13] 古い HTML UA には、注釈宣言内の [SAMP[>]]
で注釈宣言を終わらせてしまうものがありました。
このため、かつては、 HTML の注釈宣言内に [SAMP[>]]
を入れるのは望ましくないと言う人もいました。
[15]
[[HTML 4]] では注釈宣言に注釈は1つしか入れることができないという説があるようで、
その元凶は
''Another HTML-lint : Explanation : コメント中に `--` を書くことはできません。'' <http://openlab.ring.gr.jp/k16/htmllint/explain.html#excluded-w-hyphens-in-comment>
なのではないかと思われます。
> HTML4.01(J)では、コメント中に 2個以上連なったハイフンは書かないように、とされています。XML(J)でも禁止です。つまり、上の例 [INS[(引用者注: 複数ハイフンの例)]] はすべて誤りです。
と説明していますが、 HTML 4 は [Q[should avoid]] としか言っていません。
ですから、[Q[誤り]]には ([Q[誤り]]が incorrect にせよ error にせよ)
なりません。 (仮に禁止してしまうと、 HTML 4 が SGML に適合しません。)
([[名無しさん]])
[16]
[CITE[Hixie's Natural Log: People who don't realise that they're wrong]]
<http://ln.hixie.ch/?start=1137799947&count=1>
[[Ian Hickson]]は[[Webブラウザ]]が[[標準モード]]で[[HTML]]の[[注釈宣言]]を[[SGML]]の仕様に基づいて[[構文解析]]するように働きかけてきた。
各ブラウザが[[Acid2]]のために修正した。
そしてIanはいま自らの誤りに気づいた。・・・遅過ぎだってww
([[名無しさん]] [WEAK[2006-01-21 04:13:29 +00:00]])
[17]
[CITE[我的春秋: (X)HTML, XML のコメント記述位置]] ([CODE[2007-01-23 08:53:24 +09:00]] 版) <http://my-chunqiu.cocolog-nifty.com/blog/2007/01/xhtml_xml__83b4.html>
([[名無しさん]] [WEAK[2007-01-22 23:59:28 +00:00]])
[18]
[CITE[Netscape Navigator Extensions to HTML]]
<http://web.archive.org/web/20000415023954/http://www.netscape.com/home/services_docs/html-extensions.html>
[[HTML 2.0]] の拡張と称して、 [[Netscape Navigator]]
では[[注釈宣言]]中に[[タグ]]を含むことができなかったのができるようになったことが紹介されています。
[19]
[[PlaceXML]] は [[HTML]] [CODE(HTMLe)@en[[[head]]]]
に埋め込む時に [[HTML]] の[[注釈]]を使います。
[[プロジェクト]]自体が [[Web 2.0]] の影響を受けているようですので、
明らかに [[Trackback Auto Discovery]] の悪習をまねたのでしょう。
([[名無しさん]])
[20]
[CITE[EMail Msg <9306050318.AA10442@wintermute.ncsa.uiuc.edu>]] ([CODE[2007-07-01 05:00:05 +09:00]] 版) <http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q2.messages/436.html>
([[名無しさん]])
[21]
[CITE[hoshikuzu | star_dust の書斎 - 2007-09-18]] ([CODE[2007-09-23 16:39:56 +09:00]] 版) <http://d.hatena.ne.jp/hoshikuzu/20070918#p2>
([[名無しさん]])
[22]
>>21 [[WinIE 6]] で本来の [CODE(HTMLe)@en[[[h2]]]] の下に
[CODE(CSS)@en[[[background-image]]]] が[[レンダリング]]されるのを確認。
<http://suika.fam.cx/gate/2007/cssom/viewer.en.html?c=h2%20*%20%7B%0D%0A%20%20padding%3A%20100px%3B%0D%0A%20%20display%3A%20block%3B%0D%0A%20%20background-image%3A%20url(image)%3B%0D%0A%7D;h=%3Ch2%3EXXX%3C!----%3E%3C%2Fh2%3EYYY;p=q;x=style-element>
[49] [CITE[IRC logs: freenode / #whatwg / 20100607]]
([TIME[2010-06-25 08:55:45 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100607#l-147>
[50] [CITE@en[Web Applications 1.0 r5513 Nuke the comment end space state.Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=10578]]
( ([TIME[2010-09-27 01:50:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5512&to=5513>
[51] [CITE[Bug 570309 – ''''''[''''''HTML5'''''']'''''' CNNMoney unclickable links ("-- >" terminates comment in HTML5)]]
( ([TIME[2010-10-11 11:18:44 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=570309>
[52] [CITE['''['''whatwg''']''' Consecutive hyphen-minus characters in comments/in ACE-strings of IDNs]]
([TIME[2010-11-03 08:43:23 +09:00]] 版)
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-November/028937.html>
[53] [CITE['''['''whatwg''']''' Parse error for "--" in comment end state?]]
([TIME[2010-11-03 09:55:55 +09:00]] 版)
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2006-May/006337.html>
[54] [CITE['''['''whatwg''']''' Consecutive hyphen-minus characters in comments/in ACE-strings of IDNs]]
([TIME[2011-01-07 10:19:39 +09:00]] 版)
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-January/029706.html>
[55] [CITE[''''''[''''''whatwg'''''']'''''' Consecutive hyphen-minus characters in comments/in ACE-strings of IDNs]]
( ([TIME[2011-05-03 11:55:25 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-May/031436.html>
[47] [CITE[IRC logs: freenode / #whatwg / 20100721]]
([TIME[2010-08-08 15:33:20 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100721#l-842>
[48] [CITE[Add constructors for DocumentFragment, Text, and Comment. (DocumentType ... · a2f1e18 · whatwg/dom]]
( ([TIME[2013-02-16 12:38:35 +09:00]] 版))
<https://github.com/whatwg/dom/commit/a2f1e18ff56ecc12643dc54fcf50f0c335beec71>
[56] [CITE@en[XQuery and XPath Data Model 3.0]]
( ([TIME[2014-04-08 07:00:06 +09:00]] 版))
<http://www.w3.org/TR/xpath-datamodel-3/#CommentNode>