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

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>

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

試験日程
法・経済学部
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>要素に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時限目
選択

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

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

その他の実装について。

注意事項。

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

ソフトバンク非パケット機では、<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>

ページ外へのご案内。