WordprocessingMLのテーブルはHTMLのテーブルとよく似た構造を持ちます。tblをルートとし、行(r要素)が並び、行の子としてセル(tc要素)が並びます。
他にテーブル幅やテーブルの書式、ボーダー指定などのテーブル書式情報を持つtblPr要素、テーブル列の幅などの列単位の書式情報を持つtblGrid要素がtblの子要素として存在します。
tblPr要素はテーブル全体の書式を定義する要素です。子要素に罫線の種類を表すtblBorders要素や、幅を表すtblW要素などがあります。
tblPrの子要素一覧
要素名 |
説明 |
bidiVisual |
Bidi指定 |
jc |
表の配置 |
shd |
塗りつぶし |
tblBorders |
罫線 |
tblCellMar |
セルのマージンの既定値 |
tblCellSpacing |
セルの余白の既定値 |
tblInd |
インデント |
tblLayout |
テーブルレイアウト |
tblLook |
テーブルの表示に関する情報 |
tblOverlap |
他のテーブルとの重なり |
tblpPr |
表の位置情報 |
tblPrChange |
テーブル属性の改定情報 |
tblStyle |
テーブルスタイル参照 |
tblStyleColBandSize |
カラム数 |
tblStyleRowBandSize |
行数 |
tblW |
テーブル幅 |
tblGrid要素はテーブルの列単位の書式プロパティを定義するための要素です。主としてテーブルの列の幅をgridCol要素で示します。
次のようなセル結合の無い表の場合をみてみましょう。
tblGrid要素の内容は、次のようになります。
このように4列の幅がgridCol要素のw属性の値で示されます。
次に、テーブル内でセルの幅が一定ではない特殊な場合を見てみましょう。
テーブルの各行を見る限り、この表は3列の表の一部のセル幅が変化したように思えます。しかし、この場合WordprocessingMLのテーブルでは、次の図のように考えます。
点線の部分を見てください。ここには実際には罫線はありませんが、Wordではこのような場合に、あたかもここに罫線があってセルがあるように考えます。つまり、この表の場合は4列のテーブルであると考えて定義されています。
このとき、tblGrid要素は次のようになっています。
このように4列のテーブルとして、各列の幅を示します。そして、後述のtc要素でセルの情報としてセルが結合していることを示します。
次に、テーブルの構造は、tr要素がテーブル行の数だけ連続します。tr要素はテーブル行の書式属性としてtrPr要素を持つ場合があります。
trPr要素の子要素一覧
要素名 |
説明 |
cantSplit |
行の途中で改ページしない |
cnfStyle |
テーブル行の条件付表示 |
del |
削除された行 |
divId |
HTML div要素への関連付け |
gridAfter |
(変形したテーブルの)最後のセルの後のカラム数 |
gridBefore |
(変形したテーブルの)最初のセルの前のカラム数 |
hidden |
隠された行 |
ins |
挿入された行 |
jc |
行配置 |
tblCellSpacing |
余白 |
tblHeader |
すべてのページにヘッダを表示する |
trHeight |
行高さ |
trPrChange |
行属性の改定情報 |
wAfter |
(変形したテーブルの)gridAfter要素と共に使用され、行の幅を示す |
wBefore |
(変形したテーブルの)gridBefore要素と共に使用され、行の幅を示す |
tr要素の子要素としてtc要素がテーブルセルの数だけ連続します。tc要素はセル単位の罫線や塗りつぶしなどの情報を持つために、tcPr要素があります。テーブルの内容はtc要素の中に段落(p)として保存されています。
tcPr要素の子要素一覧
要素名 |
説明 |
cellDel |
削除されたセル |
cellIns |
挿入されたセル |
cellMerge |
分割/結合されたセル |
cnfStyle |
条件付きテーブルセル表示情報 |
gridSpan |
スパンされたセル数 |
hideMark |
行高さの計算に行マーカを含まない |
hMerge |
横方向に結合されたセル |
noWrap |
セルの途中で文字を折り返さない |
shd |
網掛け |
tcBorders |
罫線 |
tcFitText |
文字列の幅に合わせる |
tcMar |
余白 |
tcW |
幅 |
textDirection |
テキスト方向 |
vAlign |
縦方向の文字揃え |
vMerge |
縦方向に結合されたセル |