| 説明 | テーブルを示す |
|---|---|
| 語源 | TABLE |
| 所属モジュール | Tables |
| 所属コンテントセット | Block |
| 内容 | caption, colgroup, col, thead, tfoot, tbody, tr |
| 内容の書式 | caption?, ( colgroup* | col* ), ( ( thead?, tfoot?, tbody+ ) | ( tr+ ) ) |
| 関連項目 | なし |
| 公式な実装 | DTD |
| 属性 | 属性値の型 | 説明 |
|---|---|---|
| Common | [属性コレクション] |
XHTMLの要素が大抵持っている、一般的な属性を集めたコレクションです。 |
| 属性 | 属性値の型 | 説明 |
|---|---|---|
| summary | Text (CDATA) |
テーブルの要約を記述します。 |
| width | Length (CDATA) |
要素の幅を指定します。 |
| border | Pixels (CDATA) |
ボーダーの太さを指定します。 |
| frame | [選択] |
テーブルのボーダーを表示させる部分を指定します。border属性が1以上なら、既定値はborderになります。
|
| rules | [選択] |
セルのボーダーを表示させる部分を指定します。border属性が1以上なら、既定値はallになります。
|
| cellpadding | Length (CDATA) |
各セルの、外枠と内容の隙間の長さを指定します。 |
| cellspacing | Length (CDATA) |
セル同士の間隔を指定します。 |
まず、用語を確認しておきます。
Table。表の事。table要素で実現される。2次元に限らず、1次元でもテーブルと呼ぶ事がある。例えば本の目次はTable of Contentsである(Indexは索引)。
Row。テーブルを構成する実際の単位。tr要素で作られる。幾つかのセルを子に持ち、普通横に長い。行自体は縦に連なる。
Column。テーブルを構成する概念上の単位。col要素で表される。行と同様幾つかのセルが属するが、セルを子に持つ訳ではない。普通縦に長く、横に連なる。
[プログラムコード開始]
[プログラムコード終了]
| 支部 | 1月 | 2月 | 3月 |
| 東京 | 1304 | 1545 | 1443 |
| 大阪 | 1527 | 1694 | 1335 |
| 福岡 | 1434 | 1665 | 1419 |
[プログラムコード開始]
[プログラムコード終了]
| 支部 | 1月 | 2月 | 3月 |
|---|---|---|---|
| 東京 | 1304 | 1545 | 1443 |
| 大阪 | 1527 | 1694 | 1335 |
| 福岡 | 1434 | 1665 | 1419 |
テーブルには、短い要約をキャプションとして、長めの説明をサマリとしてつける事が強く望まれます。特にグラフィカルブラウザではない場合、自分にとって必要の無いテーブルを飛ばしたり、構造を説明的文章から理解できる為、これらは大いに役に立つ事でしょう。それぞれcaption要素、summary属性で指定します。
[プログラムコード開始]
[プログラムコード終了]
| 支部 | 1月 | 2月 | 3月 |
|---|---|---|---|
| 東京 | 1304 | 1545 | 1443 |
| 大阪 | 1527 | 1694 | 1335 |
| 福岡 | 1434 | 1665 | 1419 |
前述の通り、セルは列には含まれませんが、列に属しています。幅や背景など、列毎に共通のスタイルを適用したい時もあるでしょう。そんな時はcol要素を使うと便利です。また、列に意味上の繋がりがある場合、colgroup要素を使ってグループ化する事ができます。
[プログラムコード開始]
[プログラムコード終了]
| 支部 | 1月 | 2月 | 3月 |
|---|---|---|---|
| 東京 | 1304 | 1545 | 1443 |
| 大阪 | 1527 | 1694 | 1335 |
| 福岡 | 1434 | 1665 | 1419 |
col要素を使ったらcolgroup要素は使えませんし、colgroup要素を使えばcol要素はその子としてしか現れ得ません。何れの場合でも、列の指定は(あれば)caption要素とtr要素などの間で行います。なお、colgroup要素はcol要素を子に持つ事ができますが、一つでも持った場合はそのcolgroup要素のspan属性は無視されます。
col要素やcolgroup要素は、span属性で適用する列の数を指定する事ができます。今回は4列しか無いので大した事は無いですが、数が増えてくるとこの属性が本領を発揮します。
ちなみに、CSSでcol要素、colgroup要素に対して有効なプロパティは、background系、border系、width、visibilityです。
これまでのテーブルではtr要素を直接table要素の子にしてきましたが、行を論理的にグループ化できる場合は、thead要素、tfoot要素、tbody要素を用います。これらの要素(行グループ)を使った場合はtr要素をtable要素の子にする事はできなくなり、孫として(つまりthead要素、tfoot要素、tbody要素の子として)tr要素を書いていく事になります。
thead要素はテーブルのヘッダを、tfoot要素はフッタを、tbody要素は中身を内包します。順序に気を付けて下さい。 tbody要素はtfoot要素よりも後です。これは、フッタも役割としてはヘッダに近く、テーブルの内容が長大な場合、先にユーザーエージェントに知らせた方が良いものだからです。
ちなみに、Mozilla Firefox 2など一部のブラウザでは、印刷する際にテーブルが複数ページにまたがった場合、thead要素とtfoot要素の内容は毎ページ上下に複製してくれます。
[プログラムコード開始]
[プログラムコード終了]
| 要素 | 説明 |
|---|---|
| html | XHTMLのルートエレメントになる |
| head | 文書自身についての情報を記述する |
| title | 文書のタイトルを示す |
| body | 文書の本文を記述する |
| a | ハイパーリンクの目印になる |
| dl | 定義語リストを示す |
| dt | 定義語を示す |
| dd | 定義語の説明を記述する |
| ol | 順序付きリストを示す |
| ul | 箇条書きリストを示す |
| li | リスト項目を示す |
時に、セルを幾つかの行や列にまたがらせたくなる事があります。複数の行や列にまたがったセルを「各行、各列のヘッダセル」のヘッダ情報にしたい時などです。行をまたぐにはrowspan属性を、列をまたぐにはcolspan属性を使います。
[プログラムコード開始]
[プログラムコード終了]
| 基底クラス指定子のアクセス指定子 | ||||
|---|---|---|---|---|
| public | protected | private | ||
| 基底クラスのメンバ | public | public | protected | private |
| protected | protected | protected | private | |
| private | private | private | private | |
ヘッダ情報を持つセルが、適用されるデータセルに対して適切な位置(同じ行、あるいは同じ列)にあれば、scope属性で十分でした。しかし、scope属性では適用できない位置にデータセルがあるような場合、代わりにid属性とheaders属性を使います。
まず、ヘッダ情報を持つセル──th要素とは限りません──にid属性を持たせます。次に、ヘッダ情報の必要なデータセル全てにheaders属性を持たせ、そのセルのヘッダとなるセルのid属性値をIDREFSデータタイプで書き連ねます。
容易に想像できるように、かなり面倒です。できる事なら、構造を明快にしてscope属性を使える所は使った方がいいでしょう。セルのカテゴライズで紹介する場合のように、3次元以上のテーブルを作る場合使う必要が出てきます。
テーブルは普通、2次元の表です。つまり、下に伸びる軸と右に伸びる軸と、二つの軸を持ち(右から左に読む言語の場合はこの通りではないですが)、データセルはそれぞれの位置での値と考える事ができます。例えば、セルのまたがりで出した表で言えば、下に伸びる「基底クラスのメンバ」という軸が一つ、右側に伸びる「基底クラス指定子のアクセス指定子」という軸が一つ、合計二つ軸を持っています。それぞれの軸は、(たまたま同じ)public、protected、privateという位置を持っています。これを使うと、各データセルの内容は、派生クラスでのアクセス( 基底クラスのメンバ, 基底クラス指定子のアクセス指定子 )という2変数関数で表現できます。例えば派生クラスでのアクセス( public, public ) = publicですし、派生クラスでのアクセス( protected, private ) = privateです。
このテーブルに軸を導入し、ヘッダ情報も明示的にしてしてみましょう。ヘッダ情報が所属する軸はaxis属性で与えます。データセルが参照するヘッダ情報は、前述の通りheaders属性を使います。
[プログラムコード開始]
[プログラムコード終了]
先程、これらの軸はpublic、protected、privateの3つの位置を持っていると言いましたが、言葉を換えれば、これらのヘッダ情報を「アクセス指定子」「基底メンバ」というグループに分類したとも言えます。実際、axis属性はその程度の扱われ方しかしておらず、class属性と同じで、XSLTなどを使ってXHTML文書を再利用する時には役に立ちますが、HTMLとしては、仕様書でもaxis属性の扱いについて強制していない為、音声合成ユーザーエージェントなどでも、利用される事があるかも知れない程度です。
一方、headers属性はより実質的です。軸が二つまでなら全てscope属性で代用できますが、三つ以上になるとscope属性だけでは対応しきれない場合が出てきます。例えば、軸が「出張先」「日付」「用途」と三つあり、データセルがそれぞれの出費を持っている場合、データセルに適用すべきヘッダ情報も三つあり、最低一つの軸のヘッダ情報をheaders属性で与える必要があります(二つまではscope属性が使えます)。ヘッダとなるセルはaxis属性を使って「出張先」「日付」「用途」と、それぞれの軸に所属させますが、記述上(及び、グラフィカルブラウザとテキストブラウザでは表示上)の制約から、完全な3次元のテーブルは作れないので、やはりaxis属性は実質分類しかできません。
解説を参照して下さい。
| [table] | ||
|---|---|---|
| Published | : | 2006-03-26T09:00:00+09:00 |
| Last Modified | : | 2007-03-10T01:19:13+09:00 |
| Table of Contents | : | 要素目次 |
| Index | : | 要素索引 |
| Verified with | : |
|