HTML5 ではCDATAセクションをコメントノードと解釈する場合がある

Firefox, Google Chrome はCDATAセクションをコメントノードとして解釈する。 Opera はCDATAセクションノードとして解釈する。
1
Atsushi Takayama @edvakf

Firefox とか Chrome では <![CDATA[ ]]> がコメントノードってことになってるんだね。Opera は [object CDATASection] で、内容は出力される。

2010-10-25 16:33:35
テラマコ @teramako

@edvakf いえ、HTMLだとCOMMENT_NODE、XML(XHTML)だとCDATA_SECTION_NODEになると思います > Firefox, Chrome

2010-10-25 16:43:18
テラマコ @teramako

@teramako なんか最初が否定から入っているのは変だな。s/いえ、//

2010-10-25 16:43:54
テラマコ @teramako

@teramako あ、あと、Chrome側は確認してないので本当にそうか分からないや。HTMLとXHTMLとでは扱いが変わったのは覚えがあるが...

2010-10-25 16:45:37
Atsushi Takayama @edvakf

@teramako ほんとですね。どっかに仕様あるのかな?HTML5 では <![CDATA[]]> の中身は出力されることになってた気がしますが。

2010-10-25 17:56:30
think49 @think49

@edvakf HTML5 ではCDATAセクションは "MathML or SVG" のみで使用できる ( http://goo.gl/vywI ) ので、HTMLパーサの説明を読む必要があるかなと。

2010-10-25 18:51:38
think49 @think49

10.2.4.1 Data state ( http://goo.gl/OSqt ) から、[tag open state (U+003C)] -> [markup declaration open state (U+0021)]

2010-10-25 18:52:10
think49 @think49

@think49 -> [comment state (Anything else)] / よって、<![CDATA[ ]]> をコメントノードとして扱う Firefox, Google Chrome の挙動が正しいと思います。

2010-10-25 18:53:10
think49 @think49

Opera はパーサ毎の役割が柔軟 (悪くいえばいい加減) で独自解釈する傾向があるような気がします…。

2010-10-25 18:53:28
Atsushi Takayama @edvakf

追ってみるか。Consume と Emit をまず見る。

2010-10-25 19:02:45
Atsushi Takayama @edvakf

10.2.4.1 で < が来て 10.2.4.8 に移る。! が来て 10.2.4.45 に移る、ここで "in foreign content" mode でないなら、[CDATA[ を見つけても CDATA section に入らずに

2010-10-25 19:19:14
Atsushi Takayama @edvakf

パーサーエラーで bogus comment state に入る。次の > が出てくるまでコメントと。

2010-10-25 19:20:11
Atsushi Takayama @edvakf

なので Firefox と Chrome が正しいらしい。

2010-10-25 19:20:27
Atsushi Takayama @edvakf

@think49 みたいですね。やっと腑に落ちました。

2010-10-25 19:22:48