[1] 挿入モードは、HTML構文解析器の木構築段階における動作モード (構文解析器の状態の一つ) です。 字句化器によって送出された字句は、木構築発送器と挿入モードによって決まる処理が適用され、 DOM木の構築が行われます。
[5] 以前は外来内容の処理も挿入モードの一つ ("in foreign content") でしたが、現在は木構築発送器によって分岐する特別な処理手順となっています。
[12] 仕様上は挿入モードではありませんが、 textarea
など一部の開始タグの直後では U+000A
文字字句を1つ無視することになっています。実装によってはこれを特別な挿入モードとして、
あるいは木構築発送器の分岐として実現しているかもしれません。
[6] 通常のHTML構文解析器の初期状態は、 "initial" 挿入モードです >>2。
[7] 素片構文解析の場合は、文脈要素に合わせた挿入モードとなります。
[9] 挿入モードは、字句の処理に従い適宜変化していきます。 基本的には、開始タグによって次の挿入モードに (必要なら) 切り替えられ、 終了タグによって元の挿入モードに戻ります。
[8] 仕様書上は、ほとんどの挿入モードは、次の挿入モードへと、状態を持たずに変化します。 終了タグによる元の挿入モードへの復元は、 reset the insertion mode appropriately 手順によって要素の種類をチェックすることで行われます。
[10] しかし "text" と "in table text" は特別で、 開始タグでこれらの挿入モードに切り替えられた時に元の挿入モードが original insertion mode として保存され、 終了タグで挿入モードが original insertion mode に切り替えられます。
[11] また template
要素では現在節点だけから挿入モードを決められないので、
stack of template insertion modes に挿入モードが保存されていて、
適宜ここから復元されます。
textarea
のように original insertion mode に挿入モードを保存して "text" 挿入モードに切り替えてからU+000A
が無視される場合と、pre
やlisting
のようにそのままの挿入モードでU+000A
が無視される場合の2パターンあります。