Section 9 : 表組の構造記述(3)

 表組の構造記述の最後に解説するのは,“見出しセルを分類すること”である。これにより,3 軸以上を持つ表の構造を表現でき,さらに,求めるデータへのアクセスを容易にする。

AXIS 属性

 表は,行方向の項目と,列方向の項目の“交点”に求めるデータがある。“列方向”の項目,“行方向”の項目は,それぞれあるカテゴリで構成されるものが多い。たとえば,成績表をつくるならば,縦方向の項目は“氏名”,横方向の項目は“教科”であろう。行に対しての見出しは生徒氏名になるだろう。列に対しての見出しは“国語”“英語”“数学”といった教科名になるだろう。

 これらの“カテゴリ”を表現するのが <TD> または <TH> に指定する AXIS 属性である。

AXIS 属性
属性 解説
AXIS 文字列 そのセルの提供する見出し情報が属するカテゴリ(軸)。

AXIS 属性を使うにあたっては,Section 7Section 8 で紹介した方法で見出し情報とデータセルを結びつけておく必要がある。

 AXIS 属性を使って見出しセルを分類してみよう。

<TABLE BORDER>
  <CAPTION>労働時間の国際比較[単位:時間/年](<CITE>「労働白書」1997</CITE> より)</CAPTION>
  <COL><COL SPAN="4" ALIGN="right">
  <THEAD>
    <TR>
      <TD></TD>
      <TH AXIS="year" ID="y92">1992年</TH><TH AXIS="year" ID="y93">1993年</TH><TH AXIS="year" ID="y94">1994年</TH><TH AXIS="year" ID="y95">1995年</TH>
    </TR>
  <TBODY>
    <TR>
      <TH AXIS="nation" ID="jp" >日本</TH>
      <TD HEADERS="y92 jp">2017</TD><TD HEADERS="y93 jp">1966</TD><TD HEADERS="y94 jp">1966</TD><TD HEADERS="y95 jp">1975</TD>
    </TR>
    <TR>
      <TH AXIS="nation" ID="us">アメリカ</TH>
      <TD HEADERS="y92 us">1957</TD><TD HEADERS="y93 us">1976</TD><TD HEADERS="y94 us">2005</TD><TD HEADERS="y95 us">1986</TD>
    </TR>
    <TR>
      <TH AXIS="nation" ID="uk">イギリス</TH>
      <TD HEADERS="y92 uk">1911</TD><TD HEADERS="y93 uk">1902</TD><TD HEADERS="y94 uk">1902</TD><TD HEADERS="y95 uk">1943</TD>
    </TR>
</TABLE>

見出し情報が,“年次”のカテゴリ(year)と“国”のカテゴリ(nation)に分類されている。

 このようにカテゴライズする利点は,UA によるデータ抽出のためである。とりわけ,スピーチデバイスでは,表から条件にあった抽出を行い読ませることがどんなに便利であるか想像できるであろう。

 たとえば,先ほどの表で“イギリスの労働時間の推移は?”“1994 年の各国の労働時間は?”という条件の下で抽出を行わせ,音声で出力されれば,単にデータの羅列よりよくわかるに違いない。

 これだけでは,要するに列または行の抽出で済む話だが,途中に“小計”のセルなどが入る表では,抽出のとき読ませないほうがよい場合もある。そのときは,その列または行がほかの見出しセルと同じカテゴリに“属していない”とすれば,読まれないこともあろう。

 AXIS 属性は,実際には 2 次元で展開しきれない表,つまり 3 つ以上の軸がある表の構造記述に用いると,その効果が実感できよう。

<TABLE BORDER>
  <CAPTION>児童の体格(1996年:<CITE>文部省「学校保健統計調査報告書」</CITE>より)</CAPTION>
  <COLGROUP></COLGROUP>
  <COLGROUP SPAN="2" ALIGN="right"></COLGROUP>
  <COLGROUP SPAN="2" ALIGN="right"></COLGROUP>
  <COLGROUP SPAN="2" ALIGN="right"></COLGROUP>
  <COLGROUP SPAN="2" ALIGN="right"></COLGROUP>
  <THEAD>
    <TR>
      <TD ROWSPAN="2"></TD>
      <TH COLSPAN="2" SCOPE="colgroup" AXIS="age">5 歳</TH>
      <TH COLSPAN="2" SCOPE="colgroup" AXIS="age">6 歳</TH>
      <TH COLSPAN="2" SCOPE="colgroup" AXIS="age">8 歳</TH>
      <TH COLSPAN="2" SCOPE="colgroup" AXIS="age">10 歳</TH>
    </TR>
    <TR>
      <TH SCOPE="col" AXIS="sex">男</TH><TH SCOPE="col" AXIS="sex">女</TH>
      <TH SCOPE="col" AXIS="sex">男</TH><TH SCOPE="col" AXIS="sex">女</TH>
      <TH SCOPE="col" AXIS="sex">男</TH><TH SCOPE="col" AXIS="sex">女</TH>
      <TH SCOPE="col" AXIS="sex">男</TH><TH SCOPE="col" AXIS="sex">女</TH>
    </TR>
  <TBODY>
    <TR>
      <TH SCOPE="row" AXIS="item">身長 [cm]</TH>
      <TD>110.8</TD><TD>110.1</TD>
      <TD>116.7</TD><TD>115.9</TD>
      <TD>128.2</TD><TD>127.6</TD>
      <TD>138.8</TD><TD>140.2</TD>
    </TR>
    <TR>
      <TH SCOPE="row" AXIS="item">体重 [kg]</TH>
      <TD>19.3</TD><TD>19.0</TD>
      <TD>21.8</TD><TD>21.3</TD>
      <TD>27.7</TD><TD>27.1</TD>
      <TD>34.8</TD><TD>34.8</TD>
    </TR>
</TABLE>

AXIS 属性は,表の見出しをカテゴライズし,“軸”の構造を示す。
図 9.1 [D]

この表は,“年齢”“性別”“項目”の 3 軸を持っているが,これを表では 2 次元的に展開している。しかし,AXIS 属性から表が 3 軸を持つことがわかる。

 この表で,たとえば“それぞれの年齢における女子の身長”を抽出するのが,単に行や列を抜き出すのと異なることになるのはおわかりいただけるはずである。