WAP 2.0及びソフトバンクではベーシックテーブルが扱えます。
しかしながら、iモードなど他の端末ではテーブルを取扱う事が出来ません。
また、ソフトバンクの非パケット機では、テーブルの実装に制約があります。
このためしらぎくモバイルシステムでは、テーブルを組めない環境でもテーブルの内容を理解出来るように変換する機能を搭載しております。
以下のテーブル非対応環境では、テーブルを音声で読上げるような形のリストに変換します。
具体的には、テーブルの論理行(セルの並びを行に見立てたもので、通常は横方向のセルの並びを一つの論理行として扱いますが、必要に応じて変更出来ます)の初めに指定された見出しを付け、その後に論理行内の各セルの内容を見出しを付けて列挙する形になります。
例えば、以下のようなテーブルが与えられたとします。
1時限目 | 2時限目 | 3時限目 | |
---|---|---|---|
法・経済学部 | 外国語 | 国語 | 選択 |
理工学部 | 外国語 | 数学 | 選択 |
このテーブルは以下のようにマークアップされております(一部実際と異なる箇所もあります)。
<table border="1">
<caption>試験日程</caption>
<tr>
<td></td>
<th>1時限目</th>
<th>2時限目</th>
<th>3時限目</th>
</tr>
<tr>
<th>法・経済学部</th>
<td>外国語</td>
<td>国語</td>
<td>選択</td>
</tr>
<tr>
<th>理工学部</th>
<td>外国語</td>
<td>数学</td>
<td>選択</td>
</tr>
</table>
これは、以下のように変換されます。
HTMLとしては、以下のようになります(実際には字下げされません。また、この変換されたリストを更に端末に合わせて再変換します)。
<dl>
<dt>試験日程</dt>
<dd>
<dl>
<dt>法・経済学部</dt>
<dd>
<dl>
<dt>1時限目</dt>
<dd>外国語</dd>
<dt>2時限目</dt>
<dd>国語</dd>
<dt>3時限目</dt>
<dd>選択</dd>
</dl>
</dd>
<dt>理工学部</dt>
<dd>
<dl>
<dt>1時限目</dt>
<dd>外国語</dd>
<dt>2時限目</dt>
<dd>数学</dd>
<dt>3時限目</dt>
<dd>選択</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
このように、<caption>要素と<th>要素が適宜<dt>要素になり、各<td>要素が<dd>要素に置き換えられているのが分かります。
加えて、<dl>要素によるリストは論理行ごとに入れ子にされております。
<th>要素は特に指定が無い場合は以下のように扱われます。
尚、<th>要素の扱いを変更するには、以下の方法があります。
尚、headers属性が与えられた<td>属性が一つでも含まれている場合、各<td>要素のheaders属性で指定された<th>要素とscope属性を与えられた<th>要素以外の<th>要素は全て無効になります。
通常、横方向のセルの並びを論理行として扱いますが、テーブルの構成によっては縦方向のセルの並びを論理行として扱う必要もあるでしょう。
このため、しらぎくモバイルシステムでは論理行の切替をコメント宣言で実現します。
<!-- logicalrow: h -->
<!-- logicalrow: v -->
例えば、
法・経済学部 | 理工学部 | |
---|---|---|
1時限目 | 外国語 | 外国語 |
2時限目 | 国語 | 数学 |
3時限目 | 選択 | 選択 |
と言うテーブルは、デフォルトでは、左から右への横方向に論理行を取るため、
と言う形に変換されますが、<table>要素開始タグの直前に「<!-- logicalrow: v -->
」宣言をつけると、上から下へと縦方向に論理行を取るようになり、その結果、
と言う形に変換されます。
このように、しらぎくモバイルシステムではテーブルの縦方向と横方向のどちらを論理行にして処理するのが自然かを考慮して撰べるようになっております。
値が0で無いcolspan属性及びrowspan属性でセルが複数領域に跨る場合、それに配慮した変換となります。
空で無いabbr属性を与えた<td>要素及び<th>要素は、二度目以降はabbr属性値が出力されます。
現状では、以下の論理属性のサポートは省略されております。
ベーシックテーブルの仕様に従い、以下の要素は省略されております。
<dt> </dt>
」が出力されます。すなわち、一行の空白が開けられます。ソフトバンク非パケット機では、<td>要素にcolspan属性及びrowspan属性が適用出来ません。
このため、ソフトバンク非パケット機では、colspan属性及びrowspan属性で複数セルに亘るセルに関して各セルに同じ内容を与えるようにテーブルを再編します。
例えば、以下のようなテーブルが与えられたとします。
<table border="1">
<caption>理工学部試験日程</caption>
<tr>
<td></td>
<th>1時限目</th>
<th>2時限目</th>
<th>3時限目</th>
</tr>
<tr>
<th>数学科</th>
<td>外国語</td>
<td rowspan="2">数学</td>
</tr>
<tr>
<th>その他</th>
<td>外国語</td>
<td>数学</td>
<td>選択</td>
</tr>
</table>
これは、以下のように変換されます。
<table border="1">
<caption>理工学部試験日程</caption>
<tr>
<td></td>
<th>1時限目</th>
<th>2時限目</th>
<th>3時限目</th>
</tr>
<tr>
<th>数学科</th>
<td>外国語</td>
<td>数学</td>
<td>数学</td>
</tr>
<tr>
<th>その他</th>
<td>外国語</td>
<td>数学</td>
<td>選択</td>
</tr>
</table>