- 関連プロパティ
表関連の匿名オブジェクトの生成
HTML以外の構造化言語だと、CSS2の表関連要素をすべて含まない事もあり得ます。この場合、表が正しく機能するには、構造化言語が含まない表関連要素もあるものと仮定する必要があります。そういった表関連要素は、以下の規則に従って匿名オブジェクト(匿名ブロックボックスや匿名インラインボックスのような考え方ですね)を生成します。かなり繁雑ですが、熟読すれば分かると思います。端的に言うならば、足らない部分を補えということです。
文中にある「親に表要素を必要とする要素」とは、行要素、行グループ要素、ヘッダグループ要素、フッタグループ要素、列要素、列グループ要素、表題要素の事です。
いかなる表関連要素も、必要なだけの表関連要素の匿名オブジェクトを自身の周囲に自動生成します。つまり、少なくとも表又は行内表要素、行要素、セル要素に相当する3階層のオブジェクト構造を作り出します。
まず、下の階層から祖先要素を探し、足りない要素を匿名オブジェクトとして生成します。
- セル要素(以下T)の親要素(以下P)が行要素では無い場合、行要素に相当する匿名オブジェクトをPとTの間に生成します。このオブジェクトは、Tの兄弟要素のうちTの前後に連続するすべてのセル要素に跨ります。
- 行要素(以下T)の親要素(以下P)が表要素、行内表要素、行グループ要素、ヘッダグループ要素、フッタグループ要素のいずれでも無い場合、表要素に相当する匿名オブジェクトをPとTの間に生成します。このオブジェクトは、Tの兄弟要素のうち、Tの前後に連続し、且つ親に表要素を必要とする要素すべてに跨ります。
- 行グループ要素、ヘッダグループ要素、フッタグループ要素、列要素、列グループ要素、表題要素(以下T)の親要素(以下P)が表要素と行内表要素のどちらでも無い場合、表要素に相当する匿名オブジェクトをPとTの間に生成します。このオブジェクトは、Tの兄弟要素のうち、Tの前後に連続し、且つ親に表要素を必要とする要素すべてに跨ります。
次に、上の階層から子孫要素を探し、足りない要素を匿名オブジェクトとして生成します。
- 表要素、行内表要素(以下P)の子供要素(以下T)が親に表要素を必要とする要素では無い場合、行要素に相当する匿名オブジェクトをPとTの間に生成します。このオブジェクトは、Tの兄弟要素のうち、親に表要素を必要とする要素では無い要素すべてに跨ります。
- 行グループ要素、ヘッダグループ要素、フッタグループ要素(以下P)の子供要素(以下T)が行要素では無い場合、行要素に相当する匿名オブジェクトをPとTの間に生成します。このオブジェクトは、Tの兄弟要素のうち、Tの前後に連続し、且つ行要素ではない要素すべてに跨ります。
- 行要素(以下P)の子供要素(以下T)がセル要素では無い場合、セル要素に相当する匿名オブジェクトをPとTの間に生成します。このオブジェクトは、Tの兄弟要素のうちセル要素では無い全要素に跨ります。
正誤表で行グループ要素、ヘッダグループ要素、フッタグループ要素、列要素、列グループ要素、表題要素周りの匿名要素の生成について、大幅に補填されています。