テーブルの処理について。

WAP 2.0及びソフトバンクではベーシックテーブルが扱えます。

しかしながら、iモードなど他の端末ではテーブルを取扱う事が出来ません。

また、ソフトバンクの非パケット機では、テーブルの実装に制約があります。

このためしらぎくモバイルシステムでは、テーブルを組めない環境でもテーブルの内容を理解出来るように変換する機能を搭載しております。

テーブル非対応環境での処理。

以下のテーブル非対応環境では、テーブルを音声で読上げるような形のリストに変換します。

  • iモード及びLモード
  • WAP 1.0端末
  • H"リンク

具体的には、テーブルの論理行(セルの並びを行に見立てたもので、通常は横方向のセルの並びを一つの論理行として扱いますが、必要に応じて変更出来ます)の初めに指定された見出しを付け、その後に論理行内の各セルの内容を見出しを付けて列挙する形になります。

例えば、以下のようなテーブルが与えられたとします。

試験日程
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>

これは、以下のように変換されます。

試験日程
法・経済学部
1時限目
外国語
2時限目
国語
3時限目
選択
理工学部
1時限目
外国語
2時限目
数学
3時限目
選択

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>要素は特に指定が無い場合は以下のように扱われます。

  • 論理行内の<th>要素は、論理行に掛かる見出しとして扱われます。
  • 論理行内の各セルに対応する、直前論理行までの<th>要素は、各セルに掛かる見出しとして扱われます。

尚、<th>要素の扱いを変更するには、以下の方法があります。

<th>要素にscope属性を当てる
scope属性を当てられた<th>要素は、scope属性の仕様に従った位置付けとして扱われます。
<th>要素にid属性を当て、<td>要素にはheaders属性を当てる
headers属性を当てられた<td>要素に対しては、その属性値で指定された<th>要素を見出しとして付与します。

尚、headers属性が与えられた<td>属性が一つでも含まれている場合、各<td>要素のheaders属性で指定された<th>要素とscope属性を与えられた<th>要素以外の<th>要素は全て無効になります。

論理行の変更。

通常、横方向のセルの並びを論理行として扱いますが、テーブルの構成によっては縦方向のセルの並びを論理行として扱う必要もあるでしょう。

このため、しらぎくモバイルシステムでは論理行の切替をコメント宣言で実現します。

<!-- logicalrow: h -->
  • この後に出てくるテーブルについて、横方向のセルの並びを論理行として扱います(デフォルト)。
  • この場合、論理行内では左端のセルから順に処理され、表全体としては上端の論理行から順番に処理されます。
<!-- logicalrow: v -->
  • この後に出てくるテーブルについて、縦方向のセルの並びを論理行として扱います。
  • この場合、論理行内では上端のセルから順に処理され、表全体としては左端の論理行から順番に処理されます。

例えば、

試験日程
法・経済学部 理工学部
1時限目 外国語 外国語
2時限目 国語 数学
3時限目 選択 選択

と言うテーブルは、デフォルトでは、左から右への横方向に論理行を取るため、

試験日程
1時限目
法・経済学部
外国語
理工学部
外国語
2時限目
法・経済学部
国語
理工学部
数学
3時限目
法・経済学部
選択
理工学部
選択

と言う形に変換されますが、<table>要素開始タグの直前に「<!-- logicalrow: v -->」宣言をつけると、上から下へと縦方向に論理行を取るようになり、その結果、

試験日程
法・経済学部
1時限目
外国語
2時限目
国語
3時限目
選択
理工学部
1時限目
外国語
2時限目
数学
3時限目
選択

と言う形に変換されます。

このように、しらぎくモバイルシステムではテーブルの縦方向と横方向のどちらを論理行にして処理するのが自然かを考慮して撰べるようになっております。

その他の実装について。

  • <tr>, <td>及び<th>の各要素は終了タグを省略しても適宜補われます(HTML 4.01仕様に基づく)。
  • 値が0で無いcolspan属性及びrowspan属性でセルが複数領域に跨る場合、それに配慮した変換となります。
    • <th>要素に関しては、colspan/rowspan属性で指定された全てのセルに亘って同じ内容が出力されます。
    • <td>要素に関しては、論理行内では一番最後のセルにのみ出力されます。複数の論理行に亘る場合は各論理行ごとに出力されます。
  • 空で無いabbr属性を与えた<td>要素及び<th>要素は、二度目以降はabbr属性値が出力されます。
    • <td>要素及び<th>要素内に<a>要素などが含まれている場合、初めからabbr属性値に置き換えてしまうと<a>が消えてアンカーが無くなってしまうため、二度目以降からabbr属性値に置換えるようにしております。
  • 現状では、以下の論理属性のサポートは省略されております。
    • colspan="0"属性及びrowspan="0"属性
    • <td>及び<th>要素のaxis属性
    • <table>要素のsummary属性
  • ベーシックテーブルの仕様に従い、以下の要素は省略されております。
    • <colgroup>要素
    • <col>要素
    • <thead>, <tbody>及び<tfoot>の各要素
  • border属性などの物理属性は一律に削除されます(表とは異なる形式に変換されるため対応するものが無いからです)。

注意事項。

  • 論理行に掛かる見出しが存在しない場合は第一論理行を除いて冒頭に「<dt>&nbsp;</dt>」が出力されます。すなわち、一行の空白が開けられます。
  • レイアウト目的で用いられたテーブルに関しては、適切に変換されない可能性があります。
  • <table>要素の入れ子は、ベーシックテーブルの仕様に従い禁止されております。入れ子構造にした場合、内部の<table>要素開始・終了タグ及び<caption>要素が無効となり、内部の<tr>要素は外側の<table>要素直下にあるものと見なされます。

ソフトバンク非パケット機での処理。

ソフトバンク非パケット機では、<td>要素にcolspan属性及びrowspan属性が適用出来ません。

このため、ソフトバンク非パケット機では、colspan属性及びrowspan属性で複数セルに亘るセルに関して各セルに同じ内容を与えるようにテーブルを再編します。

  • <th>要素に関しては上記の制限が無いため、colspan属性及びrowspan属性を処理しません。
  • <td>要素にabbr属性が与えられている場合、二度目からはabbr属性値が与えられます。

例えば、以下のようなテーブルが与えられたとします。

<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>