4.9. ~table状の~data

【この訳に固有の表記規約】

この訳の,~algoの記述に利用されている各種記号(此れ, ~LET, ~IF, ~RET, 等々)の意味や定義の詳細は、~SYMBOL_DEF_REFを~~参照されたし。

要素の 同胞 とは、要素と同じ親を共有している~nodeを指す。

4.9.1. `table^e 要素

`分類$
`~flow内容$ / `可触~内容$ ◎ Flow content. ◎ Palpable content.
`この要素を利用できる文脈$
`~flow内容$が期待される所。 ◎ Where flow content is expected.
`内容~model$

次の要素からなる挙げられる順による並び:

  1. 0 〜 1 個の `caption$e 要素
  2. 0 個~以上の `colgroup$e 要素
  3. 0 〜 1 個の `thead$e 要素
  4. [ 0 個~以上の `tbody$e 要素 ]または[ 1 個~以上の `tr$e 要素† ]
  5. 0 〜 1 個の `tfoot$e 要素

加えて、これらの要素の前後には,任意個数の`~scriptを~supportする要素$があってよい。

◎ In this order: optionally a caption element, followed by zero or more colgroup elements, followed optionally by a thead element, followed by either zero or more tbody elements or one or more tr elements, followed optionally by a tfoot element, optionally intermixed with one or more script-supporting elements.
【† ~HTML~markup内で `table^e の子として記された `tr^e の連なりは、構文解析-時に暗黙的に生成される `tbody^e により包装され, `table^e の子にはならない。 一方で,~scriptにより `table^e の子として挿入された `tr^e は、そのまま `table^e の子になる。 いずれにせよ、そのような `tr^e は, `~table$内の`~row$に対応する。 】
`text/html における~tag省略$
両~tagとも省略不可。 ◎ Neither tag is omissible.
`内容~属性$
`大域~属性$ ◎ Global attributes
`~DOM~interface$
[Exposed=Window,
 `HTMLConstructor$]
interface `HTMLTableElement@I : `HTMLElement$I {
  [`CEReactions$] attribute `HTMLTableCaptionElement$I? `caption$m;
  `HTMLTableCaptionElement$I `createCaption$m();
  [`CEReactions$] void `deleteCaption$m();

  [`CEReactions$] attribute `HTMLTableSectionElement$I? `tHead$m;
  `HTMLTableSectionElement$I `createTHead$m();
  [`CEReactions$] void `deleteTHead$m();

  [`CEReactions$] attribute `HTMLTableSectionElement$I? `tFoot$m;
  `HTMLTableSectionElement$I `createTFoot$m();
  [`CEReactions$] void `deleteTFoot$m();

  [SameObject] readonly attribute `HTMLCollection$I `tBodies$m;
  `HTMLTableSectionElement$I `createTBody$m();

  [SameObject] readonly attribute `HTMLCollection$I `rows$m;
  `HTMLTableRowElement$I `insertRow$m(optional long %index = -1);
  [`CEReactions$] void `deleteRow$m(long %index);
};

`table$e 要素は、`~table$の形による,複数~次元の~dataを`表現-$する。 ◎ The table element represents data with more than one dimension, in the form of a table.

`table$e 要素は、`~table~model$の一部を成す。 各~tableは、[ ~row, ~col ]たち, および それらの子孫により与えられる~cellたちからなる。 一連の ~row/~col は、格子を形成する — ~tableの~cellたちは,重合することなく その格子を完全に占めてい~MUST。 ◎ The table element takes part in the table model. Tables have rows, columns, and cells given by their descendants. The rows and columns form a grid; a table's cells must completely cover that grid without overlap.

注記: この適合性~要件が満たされるかどうかを決定するための精確な規則は、`~table~model$にて述べる。 ◎ Precise rules for determining whether this conformance requirement is met are described in the description of the table model.

作者には、~~複雑な~tableに対しては,それをどう解釈するか述べる情報を提供することが奨励される。 そのような情報を提供する 方法の手引きは下に与えられる。 ◎ Authors are encouraged to provide information describing how to interpret complex tables. Guidance on how to provide such information is given below.

~tableは、~layout援助として利用されては~MUST_NOT。 歴史的に,一部の~Web作者は、~tableを自身の~HTML頁の~layoutを制御する仕方として誤用していたが、そのような用法は不適合である — そのような文書から~table状の~dataを抽出しようと試みる~toolは、見当はずれの結果を得ることになるので。 特に,~screen-readerの様な~accessibility~toolの利用者にとっては、頁~内に~layout用に利用された~tableがあると,とても~navigateし難くなる可能性が高い。 ◎ Tables must not be used as layout aids. Historically, some Web authors have misused tables in HTML as a way to control their page layout. This usage is non-conforming, because tools attempting to extract tabular data from such documents would obtain very confusing results. In particular, users of accessibility tools like screen readers are likely to find it very difficult to navigate pages with tables used for layout.

注記: ~HTML~tableを用いる~layout方法に対する代替には、主に,[ ~CSSによる位置決め, ~CSS~table~model ]を用いる様々な方法がある。 `CSS$r ◎ There are a variety of alternatives to using HTML tables for layout, primarily using CSS positioning and the CSS table model. [CSS]


~tableは、読解する/~navigateするのが複雑にもなり得る。 これについて利用者を補助するため、~UAは,その~tableを(不適合な)~layout用に類別したのでない限り、~table内の~cellどうしを明瞭に描き分けるべきである。 ◎ Tables can be complicated to understand and navigate. To help users with this, user agents should clearly delineate cells in a table from each other, unless the user agent has classified the table as a (non-conforming) layout table.

注記: 作者/実装者には、下に記述される ~table設計-技法 のいくつかを用いて,~tableを 利用者にとって~navigateし易くすることを考慮することが奨励される。 ◎ Authors and implementors are encouraged to consider using some of the table design techniques described below to make tables easier to navigate for users.

~UA — とりわけ,任意の内容に対する~table解析を行うもの — には、各~tableのうち どれが実際に~dataを包含し, どれが単なる~layout用に利用されているかを決定する経験則を見出すことが奨励される。 この仕様は,精確な経験則は定義しないが、あり得る指標としては,次のものが示唆される: ◎ User agents, especially those that do table analysis on arbitrary content, are encouraged to find heuristics to determine which tables actually contain data and which are merely being used for layout. This specification does not define a precise heuristic, but the following are suggested as possible indicators:

特色機能◎Feature 指示◎Indication
値 `presentation$v を伴う `role$a 属性が利用されている ◎ The use of the role attribute with the value presentation おそらく~layout用の~table ◎ Probably a layout table
不適合な値 0 を伴う不適合な `border$a 属性が利用されている ◎ The use of the non-conforming border attribute with the non-conforming value 0 おそらく~layout用の~table ◎ Probably a layout table
値 0 を伴う,不適合な[ `cellspacing$a / `cellpadding$a ]属性が利用されている ◎ The use of the non-conforming cellspacing and cellpadding attributes with the value 0 おそらく~layout用の~table ◎ Probably a layout table
[ `caption$e / `thead$e / `th$e ]要素が利用されている ◎ The use of caption, thead, or th elements おそらく~layout用でない~table ◎ Probably a non-layout table
[ `headers$a / `scope$a ]属性が利用されている ◎ The use of the headers and scope attributes おそらく~layout用でない~table ◎ Probably a non-layout table
0 以外の値を伴う不適合な `border$a 属性が利用されている ◎ The use of the non-conforming border attribute with a value other than 0 おそらく~layout用でない~table ◎ Probably a non-layout table
明示的に可視の~borderを設定するような~CSSが用いられている ◎ Explicit visible borders set using CSS おそらく~layout用でない~table ◎ Probably a non-layout table
`summary$a 属性が利用されている ◎ The use of the summary attribute 良い指標でない(この属性は、歴史的に,~layout用の~tableにも そうでない~tableにも与えられている) ◎ Not a good indicator (both layout and non-layout tables have historically been given this attribute)

注記: 上の示唆が誤っていることも十分あり得る。 実装者には、~layout用の~tableを検出する経験則を作成して,その試行-結果を詳しく調べた上で、その経験から~feedbackを提供することが督促される。 ◎ It is quite possible that the above suggestions are wrong. Implementors are urged to provide feedback elaborating on their experiences with trying to create a layout table detection heuristic.

(不適合な) `summary$a 属性を有するような `table$e 要素に対しては、~UAは,それを~layout用の~tableに類別しないならば,その属性の内容を利用者に報告してよい。 ◎ If a table element has a (non-conforming) summary attribute, and the user agent has not classified the table as a layout table, the user agent may report the contents of that attribute to the user.


%table . `caption$m [ = %value ]
この~tableの `caption$e 要素を返す。 ◎ Returns the table's caption element.
設定して, `caption$e 要素を置換できる。 ◎ Can be set, to replace the caption element.
%caption = %table . `createCaption()$m
この~tableは `caption$e 要素を持つようにした上で、それを返す。 ◎ Ensures the table has a caption element, and returns it.
%table . `deleteCaption()$m
この~tableは `caption$e 要素を持たないようにする。 ◎ Ensures the table does not have a caption element.
%table . `tHead$m [ = %value ]
この~tableの `thead$e 要素を返す。 ◎ Returns the table's thead element.
設定して `thead$e 要素を置換できる。 %value が `thead$e 要素でない場合、 `HierarchyRequestError$E が投出される。 ◎ Can be set, to replace the thead element. If the new value is not a thead element, throws a "HierarchyRequestError" DOMException.
%thead = %table . `createTHead()$m
この~tableが `thead$e 要素を持つようにした上で、それを返す。 ◎ Ensures the table has a thead element, and returns it.
%table . `deleteTHead()$m
この~tableが `thead$e 要素を持たないようにする。 ◎ Ensures the table does not have a thead element.
%table . `tFoot$m [ = %value ]
この~tableの `tfoot$e 要素を返す。 ◎ Returns the table's tfoot element.
設定して `tfoot$e 要素を置換できる。 %value が `tfoot$e 要素でない場合、 `HierarchyRequestError$E が投出される。 ◎ Can be set, to replace the tfoot element. If the new value is not a tfoot element, throws a "HierarchyRequestError" DOMException.
%tfoot = %table . `createTFoot()$m
この~tableは `tfoot$e 要素を持つようにした上で、それを返す。 ◎ Ensures the table has a tfoot element, and returns it.
%table . `deleteTFoot()$m
この~tableは `tfoot$e 要素を持たないようにする。 ◎ Ensures the table does not have a tfoot element.
%table . `tBodies$m
この~tableの `tbody$e 要素たちからなる `HTMLCollection$I を返す。 ◎ Returns an HTMLCollection of the tbody elements of the table.
%tbody = %table . `createTBody()$m
新たな `tbody$e 要素を、この~tableの中に挿入した上で,返す。 ◎ Creates a tbody element, inserts it into the table, and returns it.
%table . `rows$m
この~tableの `tr$e 要素たちからなる `HTMLCollection$I を返す。 ◎ Returns an HTMLCollection of the tr elements of the table.
%tr = %table . `insertRow( [ index ] )$m
`tr$e 要素を作成し、それに伴い必要なら `tbody$e も作成し、それらを~tableの中の %index 番の~rowとして挿入した上で、作成した `tr$e を返す。 ◎ Creates a tr element, along with a tbody if required, inserts them into the table at the position given by the argument, and returns the tr.
%index に対する値 −1 は、その引数の省略-時の既定でもあり,この~tableの終端に挿入することに等価になる。 ◎ The position is relative to the rows in the table. The index −1, which is the default if the argument is omitted, is equivalent to inserting at the end of the table.
[ −1 ~LTE %index ~LTE ~rowの本数 ]でない場合、 `IndexSizeError$E が投出される。 ◎ If the given position is less than −1 or greater than the number of rows, throws an "IndexSizeError" DOMException.
%table . `deleteRow(index)$m
この~table内の %index 番の~rowである `tr$e 要素を除去する。 ◎ Removes the tr element with the given position in the table.
%index に対する値 −1 は、この~tableの最後の~rowを削除することに等価になる。 ◎ The position is relative to the rows in the table. The index −1 is equivalent to deleting the last row of the table.
%index ~NEQ −1 であって,[ 0 ~LTE %index ~LT ~rowの本数 ]でない場合、 `IndexSizeError$E が投出される。 ◎ If the given position is less than −1 or greater than the index of the last row, or if there are no rows, throws an "IndexSizeError" DOMException.

以下における `table$e 要素 %~table 上の 属性/~method定義において、 `新たな~table内~要素@( %局所~名 ) と記された所では、次を与える下で,`要素を作成-$する ⇒ ( %~table の`~node文書$, %局所~名, `~HTML名前空間$ ) ◎ In all of the following attribute and method definitions, when an element is to be table-created, that means to create an element given the table element's node document, the given local name, and the HTML namespace.

`caption@m
取得子は、[ 此れの子に `caption$e 要素が あれば それらのうち最初のもの / なければ ~NULL ]を返さ~MUST。 ◎ ↓

設定子は、次を走らせ~MUST:

  1. ~IF[ 此れの子に `caption$e 要素はある ] ⇒ それらのうち最初のものを除去する
  2. ~IF[ 所与の値 ~NEQ ~NULL ] ⇒ 所与の値を此れ内の最初の~nodeとして挿入する
◎ The caption IDL attribute must return, on getting, the first caption element child of the table element, if any, or null otherwise. On setting, the first caption element child of the table element, if any, must be removed, and the new value, if not null, must be inserted as the first node of the table element.
`createCaption()@m

被呼出時には、次を走らせ~MUST:

  1. ~IF[ 此れの子に `caption$e 要素はある ] ⇒ ~RET それらのうち最初のもの
  2. %caption ~LET `新たな~table内~要素$( `caption$e )
  3. %caption を此れ内の最初の~nodeとして挿入する
  4. ~RET %caption
◎ The createCaption() method must return the first caption element child of the table element, if any; otherwise a new caption element must be table-created, inserted as the first node of the table element, and then returned.
`deleteCaption()@m
被呼出時には、此れの子に `caption$e 要素があれば それらのうち最初のものを除去し~MUST。 ◎ The deleteCaption() method must remove the first caption element child of the table element, if any.
`tHead@m
取得子は、[ 此れの子に `thead$e 要素があれば それらのうち最初のもの / なければ ~NULL ]を返さ~MUST。 ◎ The tHead IDL attribute must return, on getting, the first thead element child of the table element, if any, or null otherwise.\

設定子は、次を走らせ~MUST:

  1. %thead ~LET 所与の値
  2. ~IF[ %thead ~NEQ ~NULL ]~AND[ %thead は `thead$e 要素でない ] ⇒ ~THROW `HierarchyRequestError$E
  3. 此れの子に `thead$e 要素があれば それらのうち最初のものを除去する
  4. ~IF[ %thead ~EQ ~NULL ] ⇒ ~RET
  5. ~IF[ 此れの子に[ `caption$e / `colgroup$e ]でない要素はある ] ⇒ それらのうち最初のものの直前に %thead を挿入する
  6. ~ELSE ⇒ 此れの終端に %thead を挿入する
◎ On setting, if the new value is null or a thead element, the first thead element child of the table element, if any, must be removed, and the new value, if not null, must be inserted immediately before the first element in the table element that is neither a caption element nor a colgroup element, if any, or at the end of the table if there are no such elements. If the new value is neither null nor a thead element, then a "HierarchyRequestError" DOMException must be thrown instead.
`createTHead()@m

被呼出時には、次を走らせ~MUST:

  1. ~IF[ 此れの子に `thead$e 要素はある ] ⇒ ~RET それらのうち最初のもの
  2. %thead ~LET `新たな~table内~要素$( `thead$e )
  3. ~IF[ 此れの子に[ `caption$e / `colgroup$e ]でない要素はある ] ⇒ それらのうち最初のものの直前に %thead を挿入する
  4. ~ELSE ⇒ 此れの終端に %thead を挿入する
  5. ~RET %thead
◎ The createTHead() method must return the first thead element child of the table element, if any; otherwise a new thead element must be table-created and inserted immediately before the first element in the table element that is neither a caption element nor a colgroup element, if any, or at the end of the table if there are no such elements, and then that new element must be returned.
`deleteTHead()@m
被呼出時には、此れの子に `thead$e 要素があれば それらのうち最初のものを除去し~MUST。 ◎ The deleteTHead() method must remove the first thead element child of the table element, if any.
`tFoot@m
取得子は、 此れの子に `tfoot$e 要素が[ あれば それらのうち最初のもの / なければ ~NULL ]を返さ~MUST。 ◎ The tFoot IDL attribute must return, on getting, the first tfoot element child of the table element, if any, or null otherwise.\

設定子は、次を走らせ~MUST:

  1. %tfoot ~LET 所与の値
  2. ~IF[ %tfoot ~NEQ ~NULL ]~AND[ %tfoot は `tfoot$e 要素でない ] ⇒ ~THROW `HierarchyRequestError$E
  3. 此れの子に `tfoot$e 要素があれば それらのうち最初のものを除去する
  4. ~IF[ %tfoot ~EQ ~NULL ] ⇒ ~RET
  5. ~IF[ 此れの子に[ `caption$e / `colgroup$e ]でない要素はある ] ⇒ それらのうち最初のものの直前に %tfoot を挿入する
  6. ~ELSE ⇒ 此れの終端に %tfoot を挿入する
◎ On setting, if the new value is null or a tfoot element, the first tfoot element child of the table element, if any, must be removed, and the new value, if not null, must be inserted at the end of the table. If the new value is neither null nor a tfoot element, then a "HierarchyRequestError" DOMException must be thrown instead.
`createTFoot()@m

被呼出時には、次を走らせ~MUST:

  1. ~IF[ 此れの子に `tfoot$e 要素はある ] ⇒ ~RET それらのうち最初のもの
  2. %tfoot ~LET `新たな~table内~要素$( `tfoot$e )
  3. 此れの終端に %tfoot を挿入する
  4. ~RET %tfoot
◎ The createTFoot() method must return the first tfoot element child of the table element, if any; otherwise a new tfoot element must be table-created and inserted at the end of the table, and then that new element must be returned.
`deleteTFoot()@m
被呼出時には、此れの子に `tfoot$e 要素があれば それらのうち最初のものを除去し~MUST。 ◎ The deleteTFoot() method must remove the first tfoot element child of the table element, if any.
`tBodies@m
取得子は、次のようにされた `HTMLCollection$I を返さ~MUST ⇒# 根 ~SET 此れ, ~filterは 此れの子である `tbody$e 要素のみに合致する ◎ The tBodies attribute must return an HTMLCollection rooted at the table node, whose filter matches only tbody elements that are children of the table element.
`createTBody()@m

被呼出時には、次を走らせ~MUST:

  1. %tbody ~LET `新たな~table内~要素$( `tbody$e )
  2. 此れの子に `tbody$e 要素が[ あれば それらのうち最後ののものの直後 / なければ 此れの終端 ]に %tbody を挿入する
  3. ~RET %tbody
◎ The createTBody() method must table-create a new tbody element, insert it immediately after the last tbody element child in the table element, if any, or at the end of the table element if the table element has no tbody element children, and then must return the new tbody element.
`rows@m

取得子は、次のようにされた `HTMLCollection$I を返さ~MUST ⇒# 根 ~SET 此れ, ~filterは 次のいずれかに該当する `tr$e 要素のみに合致する:

  1. 此れの子である `thead$e 要素の子である
  2. 此れの子であるか, 此れの子である `tbody$e 要素の子である
  3. 此れの子である `tfoot$e 要素の子である

返される~collection内の要素たちの順序は、上に挙げた順に, かつ 各項ごとに`木~順序$とする

◎ The rows attribute must return an HTMLCollection rooted at the table node, whose filter matches only tr elements that are either children of the table element, or children of thead, tbody, or tfoot elements that are themselves children of the table element. The elements in the collection must be ordered such that those elements whose parent is a thead are included first, in tree order, followed by those elements whose parent is either a table or tbody element, again in tree order, followed finally by those elements whose parent is a tfoot element, still in tree order.
`insertRow(index)@m

挙動は、この~tableの状態に依存する — 被呼出時には、次を走らせ~MUST: ◎ The behavior of the insertRow(index) method depends on the state of the table. When it is called, the method must act as required by the first item in the following list of conditions that describes the state of the table and the index argument:

  1. %rows ~LET 此れの `rows$m ~collection ◎ ↓
  2. %N ~LET %rows 内の要素~数 ◎ ↓
  3. ~IF[ %index ~NIN { −1 〜 %N } ] ⇒ ~THROW `IndexSizeError$E ◎ If index is less than −1 or greater than the number of elements in rows collection: • The method must throw an "IndexSizeError" DOMException.
  4. %tr ~LET `新たな~table内~要素$( `tr$e ) ◎ ↓
  5. ~IF[ %N ~EQ 0 ]~AND[ 此れの子である `tbody$e 要素はない ]:

    1. %tbody ~LET `新たな~table内~要素$( `tbody$e )
    2. %tbody に %tr を付加する
    3. 此れに %tbody を付加する
    ◎ If the rows collection has zero elements in it, and the table has no tbody elements in it: • The method must table-create a tbody element, then table-create a tr element, then append the tr element to the tbody element, then append the tbody element to the table element, and finally return the tr element.
  6. ~ELIF[ %N ~EQ 0 ]:

    1. %tbody ~LET 此れ内の最後の `tbody$e 要素
    2. %tbody に %tr を付加する
    ◎ If the rows collection has zero elements in it: • The method must table-create a tr element, append it to the last tbody element in the table, and return the tr element.
  7. ~ELIF[ %index ~IN { −1, %N } ] ⇒ %rows 内の最後の `tr$e 要素の親に %tr を付加する ◎ If index is −1 or equal to the number of items in rows collection: • The method must table-create a tr element, and append it to the parent of the last tr element in the rows collection. Then, the newly created tr element must be returned.
  8. ~ELSE ⇒ %rows 内の %index 番の `tr$e 要素 %E の親の中で %E の直前に %tr を挿入する ◎ Otherwise: • The method must table-create a tr element, insert it immediately before the indexth tr element in the rows collection, in the same parent, and finally must return the newly created tr element.
  9. ~RET %tr ◎ ↑
`deleteRow(index)@m

被呼出時には、次を走らせ~MUST:

  1. %rows ~LET 此れの `rows$m ~collection
  2. %最大 ~LET %rows 内の要素~数 − 1
  3. ~IF[ %index ~EQ −1 ]:

    1. ~IF[ %最大 ~EQ −1 ] ⇒ ~RET
    2. %index ~SET %最大
  4. ~ELIF[ %index ~NIN { 0 〜 %最大 } ] ⇒ ~THROW `IndexSizeError$E
  5. %rows 内の %index 番の要素を その親から`除去-$する
◎ When the deleteRow(index) method is called, the user agent must run the following steps: • If index is less than −1 or greater than or equal to the number of elements in the rows collection, then throw an "IndexSizeError" DOMException. • If index is −1, then remove the last element in the rows collection from its parent, or do nothing if the rows collection is empty. • Otherwise, remove the indexth element in the rows collection from its parent.

次の例では、数独パズルを~mark-upするために~tableが利用されている。 ~headerを欠いていることが見て取れるが、この種の~tableには必要とされない。 ◎ Here is an example of a table being used to mark up a Sudoku puzzle. Observe the lack of headers, which are not necessary in such a table.

4.9.1.1. ~tableを記述するための技法

単に[ 最初の~row, 最初の~col ]内に一連の~headerを伴う,いくつかの~cellからなる格子 ]を超えるような~tableや,読者が内容を読解するのは一般に難がありそうな~tableに対しては、作者は,導入-用の説明的な情報を含めるべきある。 そのような情報は,どの利用者にも有用になるが、~screen-readerの利用者など,~tableを見れない利用者には とりわけ有用になる。 ◎ For tables that consist of more than just a grid of cells with headers in the first row and headers in the first column, and for any table in general where the reader might have difficulty understanding the content, authors should include explanatory information introducing the table. This information is useful for all users, but is especially useful for users who cannot see the table, e.g. users of screen readers.

そのような説明的な情報は、次を導入するべきである:

  • 当の~tableの目的
  • 基本的な~cell構造の概要
  • 傾向や~patternがあれば,それを強調する
  • ~tableを利用する一般的な方法を利用者に教える
◎ Such explanatory information should introduce the purpose of the table, outline its basic cell structure, highlight any trends or patterns, and generally teach the user how to use the table.

具体例として、次の~tableでは: ◎ For instance, the following table:

`table-explain-0^xView

この~tableの~layoutについて説明する記述から便益を得られる — 例えば次の様に ⇒ “`table-explain-info^xView” ◎ ...might benefit from a description explaining the way the table is laid out, something like "Characteristics are given in the second column, with the negative side in the left column and the positive side in the right column".

この情報は、次に挙げるような種々の仕方で含ませれる: ◎ There are a variety of ways to include this information, such as:

~tableの周囲の注釈文にて: ◎ In prose, surrounding the table
<p>次の~tableにおいては、`table-explain-info^xView</p>
<table>
 <caption>`table-explain-caption^xView</caption>
`table-explain^xCode
</table>
~table内の `caption$e 内に: ◎ In the table's caption
<table>
 <caption>
  <strong>`table-explain-caption^xView。</strong>
  <p>`table-explain-info^xView</p>
 </caption>
`table-explain^xCode
</table>
~table内の `caption$e 内の `details$e 要素~内に: ◎ In the table's caption, in a details element
<table>
 <caption>
  <strong>`table-explain-caption^xView。</strong>
  <details>
   <summary>Help</summary>
   <p>`table-explain-info^xView</p>
  </details>
 </caption>
`table-explain^xCode
</table>
同じ `figure$e 内の,~tableの隣に: ◎ Next to the table, in the same figure
<figure>
 <figcaption>`table-explain-caption^xView</figcaption>
 <p>`table-explain-info^xView</p>
<table>
`table-explain^xCode
</table>
</figure>
`figure$e 内の,~tableの隣にある `figcaption$e 内に: ◎ Next to the table, in a figure's figcaption
<figure>
 <figcaption>
  <strong>`table-explain-caption^xView</strong>
  <p>`table-explain-info^xView</p>
 </figcaption>
<table>
`table-explain^xCode
</table>
</figure>

作者は、上の技法との組合せも含め,他の技法を適宜~利用してもよい。 ◎ Authors may also use other techniques, or combinations of the above techniques, as appropriate.

もちろん,~tableの~layoutについて説明する記述を書くより、説明が不要になるよう~tableを調整できれば最善である。 ◎ The best option, of course, rather than writing a description explaining the way the table is laid out, is to adjust the table such that no explanation is needed.

上の各~例で利用された~tableの事例では、単純に,上端~側と左端~側に~headerが来るように~tableを再配列すれば、説明も `headers$a 属性も不要になる: ◎ In the case of the table used in the examples above, a simple rearrangement of the table so that the headers are on the top and left sides removes the need for an explanation as well as removing the need for the use of headers attributes:

<table>
 <caption>`table-explain-caption^xView</caption>
`table-explain1^xCode
</table>

4.9.1.2. ~tableを設計するための技法

良い~table設計は、~tableをより読易く かつ利用し易くするための要点になる。 ◎ Good table design is key to making tables more readable and usable.

視覚的~媒体においては、各 ~col, ~rowに~borderを提供した上で, 各~row背景も交替的に色分けすれば、複雑な~tableもごく効果的に読易くできる。 ◎ In visual media, providing column and row borders and alternating row backgrounds can be very effective to make complicated tables more readable.

巨大で数的な内容を伴う~tableに対しては、等幅~fontを用いれば — とりわけ~UAが~borderを描画しない所では — 利用者は~patternを見分け易くなり得る。 (あいにく,歴史的~理由から、~tableに対しては~borderは描画しないことが共通の既定になっている。) ◎ For tables with large volumes of numeric content, using monospaced fonts can help users see patterns, especially in situations where a user agent does not render the borders. (Unfortunately, for historical reasons, not rendering borders on tables is a common default.)

発話~媒体においては、~tableの内容~全体を~source順に直列化するよりも,[ ~cellの内容を読取る前に,対応する~headerを報告する / ~tableの格子をなぞるように~navigate可能にする ]方が、利用者は各~table~cellを判別し易い。 ◎ In speech media, table cells can be distinguished by reporting the corresponding headers before reading the cell's contents, and by allowing users to navigate the table in a grid fashion, rather than serializing the entire contents of the table in source order.

作者には、~CSSを利用して これらの効果を達成することが奨励される。 ◎ Authors are encouraged to use CSS to achieve these effects.

頁が~CSSを利用していない場合、~UAには,~layout用に類別されない~tableに対しては,これらの技法を用いて~tableを描画することが奨励される。 ◎ User agents are encouraged to render tables using these techniques whenever the page does not use CSS and the table is not classified as a layout table.

4.9.2. `caption^e 要素

`分類$
なし。 ◎ None.
`この要素を利用できる文脈$
`table$e 要素の最初の子~要素として。 ◎ As the first element child of a table element.
`内容~model$
`~flow内容$ — ただし、子孫に `table$e 要素は含まない。 ◎ Flow content, but with no descendant table elements.
`text/html における~tag省略$
次が満たされるならば、`終了tag$を省略できる ⇒ 直後に[ `~ASCII空白$/`~comment$ ]が続かない ◎ A caption element's end tag can be omitted if the caption element is not immediately followed by ASCII whitespace or a comment.
`内容~属性$
`大域~属性$ ◎ Global attributes
`~DOM~interface$
[Exposed=Window,
 `HTMLConstructor$]
interface `HTMLTableCaptionElement@I : `HTMLElement$I {};

`caption$e 要素 は、その親が `table$e であるならば,その~titleを`表現-$する。 ◎ The caption element represents the title of the table that is its parent, if it has a parent and that is a table element.

`caption$e 要素は、`~table~model$の一部を成す。 ◎ The caption element takes part in the table model.

`table$e 要素が `figure$e 要素~内の`figcaption$e 以外の唯一の内容である場合、 `caption$e 要素は省略されるべきである — `figcaption$e がそれに代るものになるので。 ◎ When a table element is the only content in a figure element other than the figcaption, the caption element should be omitted in favor of the figcaption.

~captionは,~tableに対する文脈を導入でき、読解するのも有意に容易くなる。 ◎ A caption can introduce context for a table, making it significantly easier to understand.

具体例として、次の~tableを考える: ◎ Consider, for instance, the following table:

`table-dice^xView

この~tableは、抽象的で明瞭でない。 しかしながら,次のような、(本文から`参照-$するための)~table番号を与える~captionと, 説明を伴っていれば,もっとはっきりする: ◎ In the abstract, this table is not clear. However, with a caption giving the table's number (for reference in the main prose) and explaining its use, it makes more sense:

<caption>
<p>表 1.
<p>`table-dice-info^xView
</caption>

次のものは、利用者に もっと文脈を提供する: ◎ This provides the user with more context:

表 1.

`table-dice-info^xView

123456
1234567
2345678
3456789
45678910
567891011
6789101112

4.9.3. `colgroup^e 要素

`分類$
なし。 ◎ None.
`この要素を利用できる文脈$
`table$e 要素の子として — ただし、同胞に `caption$e 要素があればそれより後, かつ 同胞に[ `thead$e / `tbody$e / `tfoot$e / `tr$e ]要素があれば それらより前に限る。 ◎ As a child of a table element, after any caption elements and before any thead, tbody, tfoot, and tr elements.
`内容~model$

この要素が `~span0$a 属性を

  • 有するならば、`なし$。
  • 有さないならば、 0 個~以上の[ `col$e / `template$e ]要素。
◎ If the span attribute is present: Nothing. ◎ If the span attribute is absent: Zero or more col and template elements.
`text/html における~tag省略$

次が満たされるならば、`開始tag$を省略できる ⇒ [ この要素の内側にある最初のものは `col$e 要素である ]~AND[ この要素の直前に[ `終了tag$が省略されている別の `colgroup$e 要素 ]は無い ]

(この要素が空の場合は省略できない。)

◎ A colgroup element's start tag can be omitted if the first thing inside the colgroup element is a col element, and if the element is not immediately preceded by another colgroup element whose end tag has been omitted. (It can't be omitted if the element is empty.)
次が満たされるならば、`終了tag$を省略できる ⇒ 直後に[ `~ASCII空白$/`~comment$ ]が続かない ◎ A colgroup element's end tag can be omitted if the colgroup element is not immediately followed by ASCII whitespace or a comment.
`内容~属性$
`大域~属性$ ◎ Global attributes
`~span0$a — この要素が~spanする~col数 ◎ span — Number of columns spanned by the element
`~DOM~interface$
[Exposed=Window,
 `HTMLConstructor$]
interface `HTMLTableColElement@I : `HTMLElement$I {
  [`CEReactions$] attribute unsigned long `~span0$m;
};

`colgroup$e 要素は、その親が `table$e であるならば,それ内の 1 個~以上の`~col$からなる`~col~group$を`表現-$する。 ◎ The colgroup element represents a group of one or more columns in the table that is its parent, if it has a parent and that is a table element.

`col$e 要素を包含しない `colgroup$e 要素には、 `~span0@a 内容~属性が指定されてよい — 指定する値は、 1 以上 1000 以下の`妥当な非負~整数$で~MUST。 ◎ If the colgroup element contains no col elements, then the element may have a span content attribute specified, whose value must be a valid non-negative integer greater than zero and less than or equal to 1000.

`colgroup$e 要素, および その `~span0$a 属性は、`~table~model$の一部を成す。 ◎ The colgroup element and its span attribute take part in the table model.

`~span0@m
[ 1 以上 1000 以下に`切詰められ$,既定の値は 1 とする ]下で,同じ名前の内容~属性を`反映-$し~MUST。 ◎ The span IDL attribute must reflect the content attribute of the same name. It is clamped to the range [1, 1000], and its default value is 1.

4.9.4. `col^e 要素

`分類$
なし。 ◎ None.
`この要素を利用できる文脈$
`span$a 属性を有さない `colgroup$e 要素の子として。 ◎ As a child of a colgroup element that doesn't have a span attribute.
`内容~model$
`なし$。 ◎ Nothing.
`text/html における~tag省略$
`終了tag$はない。 ◎ No end tag.
`内容~属性$
`大域~属性$ ◎ Global attributes
`span$a — この要素が~spanする~col数 ◎ span — Number of columns spanned by the element
`~DOM~interface$
`HTMLTableColElement$I を利用する。 — `colgroup$e 要素に定義されるそれと同じく。 ◎ Uses HTMLTableColElement, as defined for colgroup elements.

`col$e 要素は、[ その親は `colgroup$e 要素である, かつ そのまた親は `table$e 要素である ]ならば、親の `colgroup$e により表現される`~col~group$内の 1 本~以上の`~col$を`表現-$する。 ◎ If a col element has a parent and that is a colgroup element that itself has a parent that is a table element, then the col element represents one or more columns in the column group represented by that colgroup.

この要素には `span@a 内容~属性が指定されてよい — 指定する値は、 1 以上 1000 以下の`妥当な非負~整数$で~MUST。 ◎ The element may have a span content attribute specified, whose value must be a valid non-negative integer greater than zero and less than or equal to 1000.

`col$e 要素とその `span$a 属性は、`~table~model$の一部を成す。 ◎ The col element and its span attribute take part in the table model.

`span@m
[ 1 以上 1000 以下に`切詰められ$,既定の値は 1 とする ]下で,同じ名前の内容~属性を`反映-$し~MUST。 ◎ The span IDL attribute must reflect the content attribute of the same name. It is clamped to the range [1, 1000], and its default value is 1.

4.9.5. `tbody^e 要素

`分類$
なし。 ◎ None.
`この要素を利用できる文脈$
`table$e 要素の子として — ただし、同胞に[ `caption$e / `colgroup$e / `thead$e ]要素があれば それらより後, かつ[ 同胞の `tr$e 要素は他に無い ]場合に限る。 ◎ As a child of a table element, after any caption, colgroup, and thead elements, but only if there are no tr elements that are children of the table element.
`内容~model$
0 個~以上の[ `tr$e 要素/ `~scriptを~supportする要素$ ]。 ◎ Zero or more tr and script-supporting elements.
`text/html における~tag省略$
次が満たされるならば、`開始tag$を省略できる ⇒ [ この要素の内側にある最初のものは `tr$e 要素である ]~AND[ この要素の直前に,`終了tag$が省略されている[ `tbody$e / `thead$e / `tfoot$e ]要素はない ] ◎ A tbody element's start tag can be omitted if the first thing inside the tbody element is a tr element, and if the element is not immediately preceded by a tbody, thead, or tfoot element whose end tag has been omitted. (It can't be omitted if the element is empty.)
次が満たされるならば、`終了tag$を省略できる ⇒ [ この要素の直後に[ `tbody$e / `tfoot$e ]要素はある ]~OR[ この要素の親~要素~内に,この要素に後続する内容は無い ] ◎ A tbody element's end tag can be omitted if the tbody element is immediately followed by a tbody or tfoot element, or if there is no more content in the parent element.
`内容~属性$
`大域~属性$ ◎ Global attributes
`~DOM~interface$
[Exposed=Window,
 `HTMLConstructor$]
interface `HTMLTableSectionElement@I : `HTMLElement$I {
  [SameObject] readonly attribute `HTMLCollection$I `rows$rG;
  `HTMLElement$I `insertRow$rG(optional long index = -1);
  [`CEReactions$] void `deleteRow$rG(long index);
};

`HTMLTableSectionElement$I ~interfaceも[ `thead$e / `tfoot$e ]要素に対し利用される。 ◎ The HTMLTableSectionElement interface is also used for thead and tfoot elements.

`tbody$e 要素は、その親が `table$e 要素であるならば,その~dataの本体を成す一連の`~row$からなる`~block$を`表現-$する。 ◎ The tbody element represents a block of rows that consist of a body of data for the parent table element, if the tbody element has a parent and it is a table.

`tbody$e 要素は、`~table~model$の一部を成す。 ◎ The tbody element takes part in the table model.

%tbody . `rows$rG
この~table~row~groupを成す一連の `tr$e 要素からなる `HTMLCollection$I を返す。 ◎ Returns an HTMLCollection of the tr elements of the table section.
%tr = %tbody . `insertRow( [ index ] )$rG
新たな `tr$e 要素を、この~table~row~groupの中の %index 番の~rowとして挿入した上で,返す。 ◎ Creates a tr element, inserts it into the table section at the position given by the argument, and returns the tr.
%index に対する値 −1 は、その引数の省略-時の既定でもあり,この~table~row~groupの終端に挿入することに等価になる。 ◎ The position is relative to the rows in the table section. The index −1, which is the default if the argument is omitted, is equivalent to inserting at the end of the table section.
[ −1 ~LTE %index ~LTE ~rowの本数 ]でない場合、 `IndexSizeError$E が投出される。 ◎ If the given position is less than −1 or greater than the number of rows, throws an "IndexSizeError" DOMException.
%tbody . `deleteRow(index)$rG
この~table~row~group内の %index 番の~rowである `tr$e 要素を除去する。 ◎ Removes the tr element with the given position in the table section.
%index に対する値 −1 は、この~table~row~groupの最後の~rowを削除することに等価になる。 ◎ The position is relative to the rows in the table section. The index −1 is equivalent to deleting the last row of the table section.
%index ~NEQ −1 であって,[ 0 ~LTE %index ~LT ~rowの本数 ]でない場合、 `IndexSizeError$E が投出される。 ◎ If the given position is less than −1 or greater than the index of the last row, or if there are no rows, throws an "IndexSizeError" DOMException.
`rows@rG
取得子は、次のようにされた `HTMLCollection$I を返さ~MUST ⇒# 根 ~SET 此れ, ~filterは 此れの子である `tr$e 要素のみに合致する ◎ The rows attribute must return an HTMLCollection rooted at this element, whose filter matches only tr elements that are children of this element.
`insertRow(index)@rG

被呼出時には、次を走らせ~MUST: ◎ The insertRow(index) method must act as follows:

  1. %rows ~LET 此れの `rows$rG ~collection ◎ ↓
  2. %N ~LET %rows 内の要素~数 ◎ ↓
  3. ~IF[ %index ~NIN { −1 〜 %N } ] ⇒ ~THROW `IndexSizeError$E ◎ If index is less than −1 or greater than the number of elements in the rows collection, throw an "IndexSizeError" DOMException.
  4. %~row ~LET 次を与える下で`要素を作成-$した結果 ⇒ ( ~この要素の`~node文書$, `tr$e, `~HTML名前空間$ ) ◎ Let table row be the result of creating an element given this element's node document, tr, and the HTML namespace.
  5. ~IF[ %index ~IN { −1 , %N } ] ⇒ %~row を此れに`付加-$する ◎ If index is −1 or equal to the number of items in the rows collection, then append table row to this element.
  6. ~ELSE ⇒ %~row を,此れの子として %rows 内の %index 番の `tr$e 要素の直前に`挿入-$する ◎ Otherwise, insert table row as a child of this element, immediately before the indexth tr element in the rows collection.
  7. ~RET %~row ◎ Return table row.
`deleteRow(index)@rG

被呼出時には、次を走らせ~MUST:

  1. %rows ~LET 此れの `rows$rG ~collection
  2. %最大 ~LET %rows 内の要素~数 − 1
  3. ~IF[ %index ~EQ −1 ]:

    1. ~IF[ %最大 ~EQ −1 ] ⇒ ~RET
    2. %index ~SET %最大
  4. ~ELIF[ %index ~NIN { 0 〜 %最大 } ] ⇒ ~THROW `IndexSizeError$E
  5. %rows 内の %index 番の要素を 此れから`除去-$する
◎ The deleteRow(index) method must, when invoked, act as follows: • If index is less than −1 or greater than or equal to the number of elements in the rows collection, then throw an "IndexSizeError" DOMException. • If index is −1, then remove the last element in the rows collection from this element, or do nothing if the rows collection is empty. • Otherwise, remove the indexth element in the rows collection from this element.

4.9.6. `thead^e 要素

`分類$
なし。 ◎ None.
`この要素を利用できる文脈$
`table$e 要素の子として — ただし、同胞に[ `caption$e/`colgroup$e ]要素があれば それらより後, かつ 同胞に[ `tbody$e / `tfoot$e / `tr$e ]要素があれば それらより前, かつ[ 同胞の `thead$e 要素は他に無い ]場合に限る。 ◎ As a child of a table element, after any caption, and colgroup elements and before any tbody, tfoot, and tr elements, but only if there are no other thead elements that are children of the table element.
`内容~model$
0 個~以上の[ `tr$e 要素 / `~scriptを~supportする要素$ ]。 ◎ Zero or more tr and script-supporting elements.
`text/html における~tag省略$
次が満たされるならば、`終了tag$を省略できる ⇒ 直後に[ `tbody$e / `tfoot$e ]要素が続く ◎ A thead element's end tag can be omitted if the thead element is immediately followed by a tbody or tfoot element.
`内容~属性$
`大域~属性$ ◎ Global attributes
`~DOM~interface$
`HTMLTableSectionElement$I を利用する。 — `tbody$e 要素に定義されるそれと同じく。 ◎ Uses HTMLTableSectionElement, as defined for tbody elements.

`thead$e 要素は、親が `table$e 要素であるならば,その一連の~colに対する~label(~header)を成す 一連の`~row$からなる`~block$を`表現-$する。 ◎ The thead element represents the block of rows that consist of the column labels (headers) for the parent table element, if the thead element has a parent and it is a table.

`thead$e 要素は、`~table~model$の一部を成す。 ◎ The thead element takes part in the table model.

`thead$e 要素の用例を次に示す。 `thead$e 要素~内に[ `th$e, `td$e ]両~要素とも利用していることに着目されたし: 1 本目の~rowは,一連の~headerを成し、 2 本目の~rowは,~table内の各~欄をどう埋めるかの説明を与えている: ◎ This example shows a thead element being used. Notice the use of both th and td elements in the thead element: the first row is the headers, and the second row is an explanation of how to fill in the table.

`thead-1^xCode
`thead-2^xCode
`thead-3^xCode

4.9.7. `tfoot^e 要素

`分類$
なし。 ◎ None.
`この要素を利用できる文脈$
`table$e 要素の子として — ただし、同胞に[ `caption$e / `colgroup$e / `thead$e / `tbody$e / `tr$e ]要素があれば それらより後, かつ[ 同胞の `tfoot$e 要素は他に無い ]場合に限る。 ◎ As a child of a table element, after any caption, colgroup, thead, tbody, and tr elements, but only if there are no other tfoot elements that are children of the table element.
`内容~model$
0 個~以上の[ `tr$e 要素 / `~scriptを~supportする要素$ ]。 ◎ Zero or more tr and script-supporting elements.
`text/html における~tag省略$
次が満たされるならば、`終了tag$を省略できる ⇒ 親~要素~内に,この要素に後続する内容は無い ◎ A tfoot element's end tag can be omitted if there is no more content in the parent element.
`内容~属性$
`大域~属性$ ◎ Global attributes
`~DOM~interface$
`HTMLTableSectionElement$I を利用する。 — `tbody$e 要素に定義されるそれと同じく。 ◎ Uses HTMLTableSectionElement, as defined for tbody elements.

`tfoot$e 要素は、親が `table$e 要素であるならば,その一連の~colに対する要約(~footer)を成す 一連の`~row$からなる`~block$を`表現-$する。 ◎ The tfoot element represents the block of rows that consist of the column summaries (footers) for the parent table element, if the tfoot element has a parent and it is a table.

`tfoot$e 要素は、`~table~model$の一部を成す。 ◎ The tfoot element takes part in the table model.

4.9.8. `tr^e 要素

`分類$
なし。 ◎ None.
`この要素を利用できる文脈$
`thead$e 要素の子として。 ◎ As a child of a thead element.
`tbody$e 要素の子として。 ◎ As a child of a tbody element.
`tfoot$e 要素の子として。 ◎ As a child of a tfoot element.
`table$e 要素の子として — ただし、同胞に[ `caption$e / `colgroup$e / `thead$e ]要素があれば それらより後, かつ[ 同胞の `tbody$e 要素は他に無い ]場合に限る。 ◎ As a child of a table element, after any caption, colgroup, and thead elements, but only if there are no tbody elements that are children of the table element.
`内容~model$
0 個~以上の[ `td$e 要素 / `th$e 要素 / `~scriptを~supportする要素$ ]。 ◎ Zero or more td, th, and script-supporting elements.
`text/html における~tag省略$
次が満たされるならば、`終了tag$を省略できる ⇒ [ 直後に[ 別の `tr$e ]要素が続く ]~OR[ 親~要素~内に,この要素に後続する内容は無い ] ◎ A tr element's end tag can be omitted if the tr element is immediately followed by another tr element, or if there is no more content in the parent element.
`内容~属性$
`大域~属性$ ◎ Global attributes
`~DOM~interface$
[Exposed=Window,
 `HTMLConstructor$]
interface `HTMLTableRowElement@I : `HTMLElement$I {
  readonly attribute long `rowIndex$m;
  readonly attribute long `sectionRowIndex$m;
  [SameObject] readonly attribute `HTMLCollection$I `cells$m;
  `HTMLTableCellElement$I `insertCell$m(optional long %index = -1);
  [`CEReactions$] void `deleteCell$m(long %index);
};

`tr$e 要素は、`~table$内の`~row$内の一連の`~cell$を`表現-$する。 ◎ The tr element represents a row of cells in a table.

`tr$e 要素は、`~table~model$の一部を成す。 ◎ The tr element takes part in the table model.

%tr . `rowIndex$m
この~rowが属する~tableの `rows$m ~collectionにおける,この~rowの~indexを返す。 ◎ Returns the position of the row in the table's rows list.
この要素が~table内にない場合は −1 を返す。 ◎ Returns −1 if the element isn't in a table.
%tr . `sectionRowIndex$m
この~rowが属する~table~row~groupの `rows$rG ~collectionにおける この~rowの~indexを返す。 ◎ Returns the position of the row in the table section's rows list.
この要素が~table~row~group内にない場合は −1 を返す。 ◎ Returns −1 if the element isn't in a table section.
%tr . `cells$m
この~row内の[ `td$e / `th$e ]要素からなる `HTMLCollection$I を返す。 ◎ Returns an HTMLCollection of the td and th elements of the row.
%cell = %tr . `insertCell( [ index ] )$m
新たな `td$e 要素を、この~table~rowの中の %index 番の~cellとして挿入した上で,返す。 ◎ Creates a td element, inserts it into the table row at the position given by the argument, and returns the td.
%index に対する値 −1 は、その引数の省略-時の既定でもあり,この~rowの終端に挿入することに等価になる。 ◎ The position is relative to the cells in the row. The index −1, which is the default if the argument is omitted, is equivalent to inserting at the end of the row.
[ −1 ~LTE %index ~LTE ~cellの個数 ]でない場合、 `IndexSizeError$E が投出される。 ◎ If the given position is less than −1 or greater than the number of cells, throws an "IndexSizeError" DOMException.
%tr . `deleteCell(index)$m
この~row内の %index 番の~cellである[ `td$e / `th$e ]要素を除去する。 ◎ Removes the td or th element with the given position in the row.
%index に対する値 −1 は、この~row内の最後の~cellを削除することに等価になる。 ◎ The position is relative to the cells in the row. The index −1 is equivalent to deleting the last cell of the row.
%index ~NEQ −1 であって,[ 0 ~LTE %index ~LT ~cellの個数 ]でない場合、 `IndexSizeError$E が投出される。 ◎ If the given position is less than −1 or greater than the index of the last cell, or if there are no cells, throws an "IndexSizeError" DOMException.
`rowIndex@m

取得子は、次を走らせ~MUST:

  1. %親 ~LET 此れの親
  2. ~IF[ %親 は[ `tbody$e / `thead$e / `tfoot$e ]要素である ] ⇒ %親 ~LET %親 の親
  3. ~IF[ %親 は `table$e 要素である ] ⇒ ~RET %親 の`rows$m ~collectionにおける 此れの~index
  4. ~RET −1
◎ The rowIndex attribute must, if this element has a parent table element, or a parent tbody, thead, or tfoot element and a grandparent table element, return the index of this tr element in that table element's rows collection. If there is no such table element, then the attribute must return −1.
`sectionRowIndex@m

取得子は、次を走らせ~MUST:

  1. %親 ~LET 此れの親
  2. ~IF[ %親 は `table$e 要素である ] ⇒ ~RET %親 ( `HTMLTableElement$I) の`rows$m ~collectionにおける 此れの~index
  3. ~IF[ %親 は[ `tbody$e / `thead$e / `tfoot$e ]要素である ] ⇒ ~RET %親 ( `HTMLTableSectionElement$I) の`rows$rG ~collectionにおける 此れの~index
  4. ~RET −1
◎ The sectionRowIndex attribute must, if this element has a parent table, tbody, thead, or tfoot element, return the index of the tr element in the parent element's rows collection (for tables, that's HTMLTableElement's rows collection; for table sections, that's HTMLTableSectionElement's rows collection). If there is no such parent element, then the attribute must return −1.
`cells@m
取得子は、次のようにされた `HTMLCollection$I を返さ~MUST ⇒# 根 ~SET 此れ, ~filterは 此れの子である[ `td$e / `th$e ]要素のみに合致する ◎ The cells attribute must return an HTMLCollection rooted at this tr element, whose filter matches only td and th elements that are children of the tr element.
`insertCell(index)@m

被呼出時には、次を走らせ~MUST: ◎ The insertCell(index) method must act as follows:

  1. %cells ~LET 此れの `cells$m ~collection ◎ ↓
  2. %N ~LET %cells 内の要素~数 ◎ ↓
  3. ~IF[ %index ~NIN { −1 〜 %N } ] ⇒ ~THROW `IndexSizeError$E ◎ If index is less than −1 or greater than the number of elements in the cells collection, then throw an "IndexSizeError" DOMException.
  4. %~table~cell ~LET 次を与える下で`要素を作成-$した結果 ⇒ ( 此れの`~node文書$, `td$e, `~HTML名前空間$ ) ◎ Let table cell be the result of creating an element given this tr element's node document, td, and the HTML namespace.
  5. ~IF[ %index ~IN { −1, %N } ] ⇒ %~table~cell を `tr$e 要素に`付加-$する ◎ If index is equal to −1 or equal to the number of items in cells collection, then append table cell to this tr element.
  6. ~ELSE ⇒ %~table~cell を,此れの子として %cells 内の %index 番の [ `td$e / `th$e ]要素の直前に`挿入-$する ◎ Otherwise, insert table cell as a child of this tr element, immediately before the indexth td or th element in the cells collection.
  7. ~RET %~table~cell ◎ Return table cell.
`deleteCell(index)@m

被呼出時には、次を走らせ~MUST:

  1. %cells ~LET 此れの `cells$m ~collection
  2. %最大 ~LET %cells 内の要素~数 − 1
  3. ~IF[ %index ~EQ −1 ]:

    1. ~IF[ %最大 ~EQ −1 ] ⇒ ~RET
    2. %index ~SET %最大
  4. ~ELIF[ %index ~NIN { 0 〜 %最大 } ] ⇒ ~THROW `IndexSizeError$E
  5. %cells 内の %index 番の要素を その親から`除去-$する
◎ The deleteCell(index) method must act as follows: • If index is less than −1 or greater than or equal to the number of elements in the cells collection, then throw an "IndexSizeError" DOMException. • If index is −1, then remove the last element in the cells collection from its parent, or do nothing if the cells collection is empty. • Otherwise, remove the indexth element in the cells collection from its parent.

4.9.9. `td^e 要素

`分類$
`~sectioning根$ ◎ Sectioning root.
`この要素を利用できる文脈$
`tr$e 要素の子として。 ◎ As a child of a tr element.
`内容~model$
`~flow内容$ 。 ◎ Flow content.
`text/html における~tag省略$
次が満たされるならば、`終了tag$を省略できる ⇒ [ 直後に[ `td$e / `th$e ]要素が続く ]~OR[ 親~要素~内に,この要素に後続する内容は無い ] ◎ A td element's end tag can be omitted if the td element is immediately followed by a td or th element, or if there is no more content in the parent element.
`内容~属性$
`大域~属性$ ◎ Global attributes
`colspan$a — この~cellが~spanする~col数 ◎ colspan — Number of columns that the cell is to span
`rowspan$a — この~cellが~spanする~row数 ◎ rowspan — Number of rows that the cell is to span
`headers$a — この~cellに対する~header~cellたち ◎ headers — The header cells for this cell
`~DOM~interface$
[Exposed=Window,
 `HTMLConstructor$]
interface `HTMLTableCellElement@I : `HTMLElement$I {
  [`CEReactions$] attribute unsigned long `colSpan$m;
  [`CEReactions$] attribute unsigned long `rowSpan$m;
  [`CEReactions$] attribute DOMString `headers$m;
  readonly attribute long `cellIndex$m;

  [`CEReactions$] attribute DOMString `scope$m; // only conforming for th elements
  [`CEReactions$] attribute DOMString `abbr$m;  // only conforming for th elements
};

`HTMLTableCellElement$I ~interfaceは `th$e 要素にも利用される。 ◎ The HTMLTableCellElement interface is also used for th elements.

`td$e 要素は、~table内の~data `~cell$を`表現-$する。 ◎ The td element represents a data cell in a table.

`td$e 要素とその[ `colspan$a, `rowspan$a, `headers$a ]属性は、`~table~model$の一部を成す。 ◎ The td element and its colspan, rowspan, and headers attributes take part in the table model.

~UAは、とりわけ視覚的でない環境においては, あるいは ~tableを2D格子として表示するのは実用的にならない所では、~cellの内容を描画するときに その~cell用の利用者~文脈を与えてよい。 具体例として、`~table~model$におけるその位置を与えたり, (`~header~cellたちをあてがう$~algoにより決定される)~cellに対する~header~cellたちを挙げるなど。 ~UAは、~cellに対する~header~cellがあって `abbr$a 属性を有する場合には、~header~cellの内容に代えて その属性~値を利用してもよい。 ◎ User agents, especially in non-visual environments or where displaying the table as a 2D grid is impractical, may give the user context for the cell when rendering the contents of a cell; for instance, giving its position in the table model, or listing the cell's header cells (as determined by the algorithm for assigning header cells). When a cell's header cells are being listed, user agents may use the value of abbr attributes on those header cells, if any, instead of the contents of the header cells themselves.

次の例では、ある~Web~appの~code片を見てみる。 それは、編集可能な一連の~cellが成す格子である(本質的には単純な~spreadsheet)。 最初の 2 個と最後の方の 1 個の~cellは、 `td$e 要素の代わりに `th$e 要素を利用して,見出しとして~markされている。 最後の~cellは、その上にある一連の~cellたちの総和を示すように環境設定されている — ~scriptは、その合計を保守するために,これらの要素に~event~handlerを~~登録することになろう。 ◎ In this example, we see a snippet of a Web application consisting of a grid of editable cells (essentially a simple spreadsheet). One of the cells has been configured to show the sum of the cells above it. Three have been marked as headings, which use th elements instead of td elements. A script would attach event handlers to these elements to maintain the total.

`td-1^xCode

4.9.10. `th^e 要素

`分類$
なし。 ◎ None.
`この要素を利用できる文脈$
`tr$e 要素の子として。 ◎ As a child of a tr element.
`内容~model$
`~flow内容$ — ただし、子孫には[ `header$e / `footer$e / `~sectioning内容$ / `~header内容$ ]は含まない。 ◎ Flow content, but with no header, footer, sectioning content, or heading content descendants.
`text/html における~tag省略$
次が満たされるならば、`終了tag$を省略できる ⇒ [ 直後に[ `td$e / `th$e ]要素が続く ]~OR[ 親~要素~内に,この要素に後続する内容は無い ] ◎ A th element's end tag can be omitted if the th element is immediately followed by a td or th element, or if there is no more content in the parent element.
`内容~属性$
`大域~属性$ ◎ Global attributes
`colspan$a — この~cellが~spanする~col数 ◎ colspan — Number of columns that the cell is to span
`rowspan$a — この~cellが~spanする~row数 ◎ rowspan — Number of rows that the cell is to span
`headers$a — この~cellに対する~header~cellたち ◎ headers — The header cells for this cell
`scope$a — この~header~cellをどの~cellたちに適用するかを指定する ◎ scope — Specifies which cells the header cell applies to
`abbr$a — 他の文脈にて この~header~cellを参照するときに,~headerとして利用する代替~labelを与える。 ◎ abbr — Alternative label to use for the header cell when referencing the cell in other contexts
`~DOM~interface$
`HTMLTableCellElement$I を利用する — `td$e 要素に定義されるそれと同じく。 ◎ Uses HTMLTableCellElement, as defined for td elements.

`th$e 要素は、~table内の~header`~cell$を`表現-$する。 ◎ The th element represents a header cell in a table.

`th$e 要素には `scope@a 内容~属性が指定されてよい。 `scope$a 属性は、`列挙ed属性$であり,指定する~keywordに応じて次の 5 種の状態をとり得る: ◎ The th element may have a scope content attribute specified. The scope attribute is an enumerated attribute with five states, four of which have explicit keywords:

【 ~keywordと状態との対応関係を簡明にするため、この訳では,状態~名を単に~keywordの先頭の文字を大文字にしただけの名前で表すことにする。 】

`row@v
`Row^st 状態に対応付けられる。 ◎ The row keyword, which maps to the row state
この状態は、この~header~cellが,同じ~row(たち)内の後続する~cellたちの一部に適用されることを意味する。 ◎ The row state means the header cell applies to some of the subsequent cells in the same row(s).
`column@v
`Column^st 状態に対応付けられる。 ◎ The col keyword, which maps to the column state
この状態は、この~header~cellが,同じ~col(たち)内の後続する~cellたちの一部に適用されることを意味する。 ◎ The column state means the header cell applies to some of the subsequent cells in the same column(s).
`rowgroup@v
`Rowgroup^st 状態に対応付けられる。 ◎ The rowgroup keyword, which maps to the row group state
この状態は、この~header~cellが,この~cellの起点がある`~row~group$内の以降の~cellすべてに適用されることを意味する。 `th$e 要素の起点が`~row~group$内にない場合、この状態にされては~MUST_NOT。 ◎ The row group state means the header cell applies to all the remaining cells in the row group. A th element's scope attribute must not be in the row group state if the element is not anchored in a row group.
`colgroup@v
`Colgroup^st 状態に対応付けられる。 ◎ The colgroup keyword, which maps to the column group state
この状態は、この~header~cellが,この~cellの起点が属する`~col~group$内の以降の~cellすべてに適用されることを意味する。 `th$e 要素の起点が`~col~group$内にない場合、この状態にされては~MUST_NOT。 ◎ The column group state means the header cell applies to all the remaining cells in the column group. A th element's scope attribute must not be in the column group state if the element is not anchored in a column group.
`auto@v
`値なしに対する既定の状態$
`Auto^st 状態に対応付けられる。 ◎ The auto state
この状態は、この~header~cellが[ 文脈に基づいて選定される~cellたちの集合 ]に適用されるようにする。 ◎ The auto state makes the header cell apply to a set of cells selected based on context. ◎ The scope attribute's missing value default is the auto state.

`th$e 要素には `abbr@a 内容~属性が指定されてもよい。 指定する値は、[ 他の文脈にて この~cellを参照するときに~headerに利用するための,この~header~cell用の代替~label ]で~MUST(例: ある~data~cellに適用される~header~cellたちを記述するとき)。 概して、~header~cellの全部的な内容の略称-形であるが、追記, あるいは単なる言い換えにもなり得る。 ◎ The th element may have an abbr content attribute specified. Its value must be an alternative label for the header cell, to be used when referencing the cell in other contexts (e.g. when describing the header cells that apply to a data cell). It is typically an abbreviated form of the full header cell, but can also be an expansion, or merely a different phrasing.

`th$e 要素と その[ `colspan$a, `rowspan$a, `headers$a, `scope$a ]属性は、`~table~model$の一部を成す。 ◎ The th element and its colspan, rowspan, headers, and scope attributes take part in the table model.

次の例に、[ どの~data~cellたちに~header~cellが適用されるか ]に, `scope$a 属性の `rowgroup$v 値がどう影響するかを示す: ◎ The following example shows how the scope attribute's rowgroup value affects which data cells a header cell applies to.

まずは、~tableの~markup片を示す: ◎ Here is a markup fragment showing a table:

`th-1^xCode

結果は、次のようになる: ◎ This would result in the following table:

`th-1^xView
  • 最初の~row内の~headerは、以降の~rowにある, かつ同じ~col内にある すべての~cellに適用される。 ◎ The headers in the first row all apply directly down to the rows in their column.
  • `scope$a 属性に値 `rowgroup^v を伴う~headerは、最初の~col内にはない, かつ同じ~row~group内にある すべての~cellに適用される。 ◎ The headers with the explicit scope attributes apply to all the cells in their row group other than the cells in the first column.
  • 他の~header( `scope$a 属性は `row^v )は、単に,同じ~row内にある以降の~cellに適用される。 ◎ The remaining headers apply just to the cells to the right of them.

4.9.11. `td^e, `th^e 要素に共通する属性

[ `td$e / `th$e ]要素には、 `colspan@a 内容~属性が指定されてよい — 指定する値は、 1 以上 1000 以下の`妥当な非負~整数$で~MUST。 この属性は、この~cellが~spanする~col数を与える。 ◎ The td and th elements may have a colspan content attribute specified, whose value must be a valid non-negative integer greater than zero and less than or equal to 1000.

[ `td$e / `th$e ]要素には、 `rowspan@a 内容~属性も指定されてよい — 指定する値は、 65534 以下の`妥当な非負~整数$で~MUST。 この属性は、この~cellが~spanする~row数を与える。 この属性に対する値 0 は、この~cellが[ この~cellが~spanする~col内, かつ この~cellが属する~row~group内の,以降の~row ]すべてに~spanすることを意味する。 ◎ The td and th elements may also have a rowspan content attribute specified, whose value must be a valid non-negative integer less than or equal to 65534. For this attribute, the value zero means that the cell is to span all the remaining rows in the row group.

これらの属性を利用するときは、`~table~model$に述べるように,~cellどうしが重合しては~MUST_NOT。 ◎ These attributes give the number of columns and rows respectively that the cell is to span. These attributes must not be used to overlap cells, as described in the description of the table model.


[ `td$e / `th$e ]要素には `headers@a 内容~属性が指定されてよい。 `headers$a 属性に指定する値は、`空白区切りの一意な~tokenからなる無順序~集合$を成してい~MUST — その各~tokenは、`文字大小区別$であり,当の要素と同じ`~table$の一部を成している ある `th$e 要素の`~ID$の値を与えてい~MUST ( `~table$は`~table~model$にて定義される)。 ◎ The td and th element may have a headers content attribute specified. The headers attribute, if specified, must contain a string consisting of an unordered set of unique space-separated tokens that are case-sensitive, each of which must have the value of an ID of a th element taking part in the same table as the td or th element (as defined by the table model).

`th$e 要素は自身から`指されて^iいては~MUST_NOT — ここで、 %A は %B から`指されて^iいるとは、 ( %A, %B ) が次のいずれかを満たすことを意味する:

  • %A は %B から `直接的に指されて^i いる
  • ある %C が存在して、[ %A は %C から`直接的に指されて^iいる ]~AND[ %C は %B から`指されて^iいる ]

ここで、 %A は %B から `直接的に指されて^iいるとは、 ( %A, %B ) が次をすべて満たすことを意味する:

  • %A は `th$e 要素である
  • %B は[ `th$e / `td$e ]要素である
  • %A, %B は同じ `~table$内にある
  • %A は`~ID$を有する
  • %B は `headers$a 属性を有する
  • %A の`~ID$ ~IN { %B の `headers$a 属性の値を成す~tokenたち }

【 %A, %B は、互いに異なることは必要とされない。 】

◎ A th element with ID id is said to be directly targeted by all td and th elements in the same table that have headers attributes whose values include as one of their tokens the ID id. A th element A is said to be targeted by a th or td element B if either A is directly targeted by B or if there exists an element C that is itself targeted by the element B and A is directly targeted by C. ◎ A th element must not be targeted by itself.

[ `colspan$a, `rowspan$a, `headers$a ]属性は、`~table~model$の一部を成す。 ◎ The colspan, rowspan, and headers attributes take part in the table model.


%cell . `cellIndex$m
この~cellが属する~rowの `cells$m ~collectionにおける,この~cellの~indexを返す。 これは、この~cellの[ ~tableにおける %~x 座標 ]に対応するとは限らない — 先にある~cellが 複数の~row/~colを占めることもあるので。 ◎ Returns the position of the cell in the row's cells list. This does not necessarily correspond to the x-position of the cell in the table, since earlier cells might cover multiple rows or columns.
要素が~rowに属さない場合、 −1 を返す。 ◎ Returns −1 if the element isn't in a row.
`colSpan@m
[ 1 以上 1000 以下に`切詰められ$,既定の値は 1 とする ]下で, `colspan$a 内容~属性を`反映-$し~MUST。 ◎ The colSpan IDL attribute must reflect the colspan content attribute. It is clamped to the range [1, 1000], and its default value is 1.
`rowSpan@m
[ 0 以上 65534 以下に`切詰められ$,既定の値は 1 とする ]下で, `rowspan$a 内容~属性を`反映-$し~MUST。 ◎ The rowSpan IDL attribute must reflect the rowspan content attribute. It is clamped to the range [0, 65534], and its default value is 1.
`headers@m
同じ名前の内容~属性を`反映-$し~MUST。 ◎ The headers IDL attribute must reflect the content attribute of the same name.
`cellIndex@m
取得子は、[ 此れの親 %親 は `tr$e 要素であるならば %親 の `cells$m ~collectionにおける,此れの~index / ~ELSE_ −1 ]を返さ~MUST。 ◎ The cellIndex IDL attribute must, if the element has a parent tr element, return the index of the cell's element in the parent element's cells collection. If there is no such parent element, then the attribute must return −1.
`scope@m
`既知の値のみに制限され$る下で,同じ名前の内容~属性を`反映-$し~MUST。 ◎ The scope IDL attribute must reflect the content attribute of the same name, limited to only known values.
`abbr@m
同じ名前の内容~属性を`反映-$し~MUST。 ◎ The abbr IDL attribute must reflect the content attribute of the same name.

4.9.12. 処理~model

【 以下を簡潔に記述するため、この訳では次の表記を導入する: 】

  • 整数 %N, %S に対する “{ %N +〜 %S }” という表記は、 %N 以上 ( %N + %S ) 未満の整数~範囲を表す。 特に, %S が 0 以下の場合、範囲は空になる。
  • 整数~範囲 %X, %Y に対する “ 区画 %X × %Y ” という表記は、[ ~x座標 ~IN %X ]~AND[ ~y座標 ~IN %Y ]なる整数~座標の範囲(すなわち直積~集合)を表すとする。
  • 区画 %X × %Y に対する座標 ( %X の最小~値, %Y の最小~値 ) は、その区画の起点と称される。

種々の~table要素, および それらの内容~属性は、共に `~table~model@ を定義する: ◎ The various table elements and their content attributes together define the table model.

  • `~table@ は、それぞれが座標 ( %~x, %~y ) を伴う `~slotたち@ が成す二次元の格子に整列された,一連の~cellからなる。 格子は有限であり、 0 個~以上の~slotからなる。 格子~内の どの~slotも、その座標は常に,~~一定の区画 { 0 +〜 %~x全幅 } × { 0 +〜 %~y全幅 } に入る。 %~x全幅, %~y全幅 のいずれかが 0 の場合、~tableは空になる(~slotは 0 個)。 各~tableは `table$e 要素に対応する。 ◎ A table consists of cells aligned on a two-dimensional grid of slots with coordinates (x, y). The grid is finite, and is either empty or has one or more slots. If the grid has one or more slots, then the x coordinates are always in the range 0 ≤ x < xwidth, and the y coordinates are always in the range 0 ≤ y < yheight. If one or both of xwidth and yheight are zero, then the table is empty (has no slots). Tables correspond to table elements.
  • `~cell@ は、ある区画 { %~x +〜 %~x幅 } × { %~y +〜 %~y幅 } に入る~slotからなる集合である。 各~cellは、[ ~data~cellと呼ばれる `td$e 要素に対応するもの, ~header~cellと呼ばれる `th$e 要素に対応するもの ]に分けられる。 いずれにせよ、各~cellには, 0 個~以上の~header~cellが結付けられる。 ◎ A cell is a set of slots anchored at a slot (cellx, celly), and with a particular width and height such that the cell covers all the slots with coordinates (x, y) where cellx ≤ x < cellx+width and celly ≤ y < celly+height. Cells can either be data cells or header cells. Data cells correspond to td elements, and header cells correspond to th elements. Cells of both types can have zero or more associated header cells.

    ある種の~error事例では、複数の~cellが同じ~slotを占めることもあり得る。 ◎ It is possible, in certain error cases, for two cells to occupy the same slot.

  • `~row@ は、特定0の値 %~y に対し,区画 { 0 +〜 %~x全幅 } × { %~y } に入る~slotすべてを占める。 各~rowは通例的に `tr$e 要素に対応する — 複数の~rowに~spanしている`~cell$を孕んでいるような一部の事例では、`~row~group$の終端には,何本かの暗黙の`~row$が加えられ得るが。 ◎ A row is a complete set of slots from x=0 to x=xwidth-1, for a particular value of y. Rows usually correspond to tr elements, though a row group can have some implied rows at the end in some cases involving cells spanning multiple rows.
  • `~col@ は、特定0の値 %~x に対し,区画 { %~x } × { 0 +〜 %~y全幅 } に入る~slotすべてを占める。 各~colは、ある `col$e 要素に対応し得る — 対応する `col$e 要素が不在の場合、暗黙の~colになる。 ◎ A column is a complete set of slots from y=0 to y=yheight-1, for a particular value of x. Columns can correspond to col elements. In the absence of col elements, columns are implied.
  • `~row~group@ は、一連の`~row$からなる集合であり、特定0の %~y, %~y幅 に対し,区画 { 0 +〜 %~x全幅 } × { %~y +〜 %~y幅 } に入る~slotすべてを占める。 各~row~groupは、ある[ `tbody$e / `thead$e / `tfoot$e ]要素に対応する。 ~rowは、~row~groupに属するとは限らない。 ◎ A row group is a set of rows anchored at a slot (0, groupy) with a particular height such that the row group covers all the slots with coordinates (x, y) where 0 ≤ x < xwidth and groupy ≤ y < groupy+height. Row groups correspond to tbody, thead, and tfoot elements. Not every row is necessarily in a row group.
  • `~col~group@ は、一連の`~col$からなる集合であり、特定0の %~x, %~x幅 に対し,区画 { %~x +〜 %~x幅 } × { 0 +〜 %~y全幅 } に入る~slotすべてを占める。 各~col~groupは、ある `colgroup$e 要素に対応する。 ~colは、~col~groupに属するとは限らない。 ◎ A column group is a set of columns anchored at a slot (groupx, 0) with a particular width such that the column group covers all the slots with coordinates (x, y) where groupx ≤ x < groupx+width and 0 ≤ y < yheight. Column groups correspond to colgroup elements. Not every column is necessarily in a column group.

[ `~row~group$どうし / `~col~group$どうし ]が重合することはない。 ◎ Row groups cannot overlap each other. Similarly, column groups cannot overlap each other.

同じ`~cell$が,異なる`~row~group$に属する~slotたちを占めることはない一方で、複数の`~col~group$に属する~slotたちを占めることはあり得る。 ある~cellの一部を形成するような,どの~slotも、 0 〜 1 個の`~row~group$の一部を成し, また 0 個~以上の`~col~group$の一部を成す。 ◎ A cell cannot cover slots that are from two or more row groups. It is, however, possible for a cell to be in multiple column groups. All the slots that form part of one cell are part of zero or one row groups and zero or more column groups.

`~cell$, `~col$, `~row$, `~row~group$, `~col~group$ に加えて、`~table$には, `caption$e 要素も結付けられ得る。 これは、~tableに対する見出しや凡例を与える。 ◎ In addition to cells, columns, rows, row groups, and column groups, tables can have a caption element associated with them. This gives the table a heading, or legend.

`~table~model~error@ とは、 `table$e 要素や その子孫により表現される~dataにおける~errorである。 文書には、~table~model~errorがあっては~MUST_NOT。 ◎ A table model error is an error with the data represented by table elements and their descendants. Documents must not have table model errors.

4.9.12.1. ~tableの形成-法

[[ `table$e 要素に結付けらている`~table$ ]内の どの~slotに どの要素が対応するか / 当の~tableの寸法 ( %~x全幅, %~y全幅 ) / `~table~model~error$があるかどうか ]を決定するときは、~UAは,次の~algoを利用し~MUST: ◎ To determine which elements correspond to which slots in a table associated with a table element, to determine the dimensions of the table (xwidth and yheight), and to determine if there are any table model errors, user agents must use the following algorithm:

  1. ( %~x全幅, %~y全幅 ) ~LET ( 0, 0 ) — これらの変数が~tableの寸法を与える。

    【 加えて,以下の手続きにおいて作成される各[ ~row/~col ]が占める区画は、[ %~x全幅 / %~y全幅 ]が増大されるに伴い,自動的に伸長されると見なされる。 】

    ◎ Let xwidth be zero. ◎ Let yheight be zero.
  2. %処理待ち~tfoot要素~list ~LET 空~list ◎ Let pending tfoot elements be a list of tfoot elements, initially empty.
  3. %~table要素 ~LET 当の `table$e 要素 ◎ ↓
  4. %~table ~LET 新たな空の`~table$ ◎ ↓
  5. %~table要素 により表現される`~table$ ~SET %~table ◎ Let the table be the table represented by the table element. The xwidth and yheight variables give the table's dimensions. The table is initially empty.
  6. ~IF[ %~table要素 内に子~要素はない ] ⇒ ~RET %~table ◎ If the table element has no children elements, then return the table (which will be empty), and abort these steps.
  7. ~IF[ %~table要素 の子に `caption$e 要素はある ] ⇒ それらのうち最初のものを %~table に結付ける — そのような子が無ければ、結付けられる `caption$e 要素は無い。 ◎ Associate the first caption element child of the table element with the table. If there are no such children, then it has no associated caption element.

  8. %現~要素 ~LET %~table要素 の子である最初の要素 ◎ Let the current element be the first element child of the table element.

    以下において、 `次の要素へ進む@ と記された所では、次を走らすとする:

    1. ~IF[ %現~要素 に後続する同胞~要素はない ] ⇒ ~GOTO `終端^i
    2. %現~要素 ~SET %現~要素 の次の同胞~要素
    ◎ If a step in this algorithm ever requires the current element to be advanced to the next child of the table when there is no such next child, then the user agent must jump to the step labeled end, near the end of this algorithm.
  9. ~WHILE 無条件 (この段は、各~col~group/~colを処理する) ◎ ↓

    1. ~WHILE %現~要素 ~NIN { `colgroup$e, `thead$e, `tbody$e, `tfoot$e, `tr$e } ⇒ `次の要素へ進む$ ◎ While the current element is not one of the following elements, advance the current element to the next child of the table: • colgroup • thead • tbody • tfoot • tr
    2. ~IF[ %現~要素 は `colgroup$e でない ] ⇒ ~BREAK ◎ If the current element is a colgroup, follow these substeps: ◎ Column groups: Process the current element according to the appropriate case below:
    3. %元の~x全幅 ~LET %~x全幅 ◎ ↓
    4. ~IF[ %現~要素 の子に `col$e 要素はある ]: ◎ If the current element has any col element children • Follow these steps:

      1. ~FOR %現~要素 の子である~EACH( `col$e 要素 %col ) に対し:

        1. %span ~LET [[ %col は `span$a 属性を有する ]~AND[ その値を`非負~整数として構文解析-$した結果 ~NIN { ~error, 0 } ]ならば max( その結果, 1000 ) / ~ELSE_ 1
        2. %~x全幅 ~INCBY %span
        3. %col に対応する`~col$たち ~SET %~table 内の最後の %span 本の`~col$
        ◎ Let xstart have the value of xwidth. ◎ Let the current column be the first col element child of the colgroup element. ◎ Columns: If the current column col element has a span attribute, then parse its value using the rules for parsing non-negative integers. ◎ If the result of parsing the value is not an error or zero, then let span be that value. ◎ Otherwise, if the col element has no span attribute, or if trying to parse the attribute's value resulted in an error or zero, then let span be 1. ◎ If span is greater than 1000, let it be 1000 instead. ◎ Increase xwidth by span. ◎ Let the last span columns in the table correspond to the current column col element. ◎ If current column is not the last col element child of the colgroup element, then let the current column be the next col element child of the colgroup element, and return to the step labeled columns. ◎ Let all the last columns in the table from x=xstart to x=xwidth-1 form a new column group, anchored at the slot (xstart, 0), with width xwidth-xstart, corresponding to the colgroup element.
    5. ~ELSE: ◎ If the current element has no col element children

      1. %~x全幅 ~INCBY [ %現~要素 は `~span0$a 属性を有する ]~AND[ その値を`非負~整数として構文解析-$した結果 ~NIN { ~error, 0 } ]ならば max( その結果, 1000 ) / ~ELSE_ 1 ] ◎ If the colgroup element has a span attribute, then parse its value using the rules for parsing non-negative integers. ◎ If the result of parsing the value is not an error or zero, then let span be that value. ◎ Otherwise, if the colgroup element has no span attribute, or if trying to parse the attribute's value resulted in an error or zero, then let span be 1. ◎ If span is greater than 1000, let it be 1000 instead. ◎ Increase xwidth by span. ◎ Let the last span columns in the table form a new column group, anchored at the slot (xwidth-span, 0), with width span, corresponding to the colgroup element.
    6. %現~要素 に対応する`~col~group$ ~SET %~table 内の最後の[ %~x全幅 − %元の~x全幅 ]本の`~col$が形成する新たな `~col~group$ ◎ ↑
    7. `次の要素へ進む$ ◎ Advance the current element to the next child of the table. ◎ While the current element is not one of the following elements, advance the current element to the next child of the table: • colgroup • thead • tbody • tfoot • tr ◎ If the current element is a colgroup element, jump to the step labeled column groups above.
  10. %現~y ~LET 0 ◎ Let ycurrent be zero.
  11. %~y方向に延びる~cellたち ~LET 空~list ◎ Let the list of downward-growing cells be an empty list.
  12. ~WHILE 無条件 (この段は、各~row~groupを処理する) ◎ ↓

    1. ~WHILE %現~要素 ~NIN { `thead$e, `tbody$e, `tfoot$e, `tr$e } ⇒ `次の要素へ進む$ ◎ Rows: While the current element is not one of the following elements, advance the current element to the next child of the table: • thead • tbody • tfoot • tr

    2. ~IF[ %現~要素 は `tr$e である ]:

      1. %現~要素 を成す`~rowを処理する$
      2. `次の要素へ進む$
      3. ~CONTINUE
      ◎ If the current element is a tr, then run the algorithm for processing rows, advance the current element to the next child of the table, and return to the step labeled rows.
    3. `~row~groupを終端する$ ◎ Run the algorithm for ending a row group.
    4. ~IF[ %現~要素 は `tfoot$e である ]:

      1. %現~要素 を %処理待ち~tfoot要素~list に追加する
      2. `次の要素へ進む$
      3. ~CONTINUE
      ◎ If the current element is a tfoot, then add that element to the list of pending tfoot elements, advance the current element to the next child of the table, and return to the step labeled rows.
    5. %現~要素 を成す`~row~groupを処理する$ ◎ The current element is either a thead or a tbody. ◎ Run the algorithm for processing row groups.
    6. `次の要素へ進む$ ◎ Advance the current element to the next child of the table. ◎ Return to the step labeled rows.
  13. `終端^i:
    %処理待ち~tfoot要素~list 内の ~EACH( `tfoot$e 要素 %要素 ) に対し,`木~順序$で ⇒ %要素 を成す`~row~groupを処理する$ ◎ End: For each tfoot element in the list of pending tfoot elements, in tree order, run the algorithm for processing row groups.
  14. %~table 内の ある[ `~row$ / `~col$ ]に対し,その区画~内の~slotを起点にしている`~cell$はない場合、 `~table~model~error$とする ◎ If there exists a row or column in the table containing only slots that do not have a cell anchored to them, then this is a table model error.
  15. ~RET %~table ◎ Return the table.

上の手続きにて[ `thead$e / `tbody$e / `tfoot$e ]要素 %要素 を成す `~row~groupを処理する@ ときは、次を走らす: ◎ The algorithm for processing row groups, which is invoked by the set of steps above for processing thead, tbody, and tfoot elements, is:

  1. %元の~y全幅 ~LET %~y全幅 の値 ◎ Let ystart have the value of yheight.
  2. %要素 の子である ~EACH ( `tr$e 要素 %tr ) に対し,木~順序で ⇒ %tr を成す`~rowを処理する$ ◎ For each tr element that is a child of the element being processed, in tree order, run the algorithm for processing rows.
  3. ~IF[ %~y全幅 ~GT %元の~y全幅 ] ⇒ %要素 に対応する`~row~group$ ~SET %~table 内の最後の[ %~y全幅 ~MINUS %元の~y全幅 ]本の`~row$で形成される新たな`~row~group$ ◎ If yheight > ystart, then let all the last rows in the table from y=ystart to y=yheight-1 form a new row group, anchored at the slot with coordinate (0, ystart), with height yheight-ystart, corresponding to the element being processed.
  4. `~row~groupを終端する$ ◎ Run the algorithm for ending a row group.

上のいずれかの手続きにて,一連の~rowが成す~blockの[ 開始-時/終端-時 ]に `~row~groupを終端する@ ときは、次を走らす: ◎ The algorithm for ending a row group, which is invoked by the set of steps above when starting and ending a block of rows, is:

  1. %~y方向に延びる~cellたち 内の~EACH ( `~cell$ %cell ) に対し ⇒ %cell の区画を,その~x座標の範囲はそのままに,[ ~y座標の範囲が ( %~y全幅 − 1 ) をちょうど含む ]まで拡張する ◎ While ycurrent is less than yheight, follow these steps: • Run the algorithm for growing downward-growing cells. • Increase ycurrent by 1.
  2. %~y方向に延びる~cellたち を空にする ◎ Empty the list of downward-growing cells.
  3. %現~y ~SET %~y全幅 ◎ ↑

上のいずれかの手続きにて `tr$e 要素 %tr を成す `~rowを処理する@ ときは、次を走らす: ◎ The algorithm for processing rows, which is invoked by the set of steps above for processing tr elements, is:

  1. %~y全幅 ~SET max( %~y全幅, %現~y ~PLUS 1 ) ◎ If yheight is equal to ycurrent, then increase yheight by 1. (ycurrent is never greater than yheight.)
  2. %~y方向に延びる~cellたち 内の~EACH ( `~cell$ %cell ) に対し ⇒ %cell の区画を,その~x座標の範囲はそのままに,[ ~y座標の範囲が ( %~y全幅 − 1 ) をちょうど含む ]まで拡張する ◎ ↓
  3. %現~x ~LET 0 ◎ Let xcurrent be 0. ◎ Run the algorithm for growing downward-growing cells.
  4. ~FOR %tr の子である ~EACH ([ `td$e / `th$e ]要素 %~cell要素 ) に対し,木~順序で: ◎ If the tr element being processed has no td or th element children, then increase ycurrent by 1, abort this set of steps, and return to the algorithm above. ◎ Let current cell be the first td or th element child in the tr element being processed.

    1. ~WHILE[ %現~x ~LT %~x全幅 ]~AND[ ~slot ( %現~x, %現~y ) を占めている~cellがすでにある ] ⇒ %現~x ~INCBY 1 ◎ Cells: While xcurrent is less than xwidth and the slot with coordinate (xcurrent, ycurrent) already has a cell assigned to it, increase xcurrent by 1.
    2. %~x全幅 ~SET max( %~x全幅, %現~x ) ◎ If xcurrent is equal to xwidth, increase xwidth by 1. (xcurrent is never greater than xwidth.)
    3. ( %~x幅, %~y幅 ) ~LET ( 1, 1 ) ◎ ↓
    4. ~IF[ %~cell要素 は `colspan$a 属性を有する ]~AND[ その値を`非負~整数として構文解析-$した結果 ~NIN { ~error, 0 } ] ⇒ %~x幅 ~SET max( その結果, 1000 ) ◎ If the current cell has a colspan attribute, then parse that attribute's value, and let colspan be the result. ◎ If parsing that value failed, or returned zero, or if the attribute is absent, then let colspan be 1, instead. ◎ If colspan is greater than 1000, let it be 1000 instead.
    5. ~IF[ %~cell要素 は `rowspan$a 属性を有する ]~AND[ その値を`非負~整数として構文解析-$した結果 ~NEQ ~error ] ⇒ %~y幅 ~SET max( その結果, 65534 ) ◎ If the current cell has a rowspan attribute, then parse that attribute's value, and let rowspan be the result. ◎ If parsing that value failed or if the attribute is absent, then let rowspan be 1, instead. ◎ If rowspan is greater than 65534, let it be 65534 instead.
    6. %~cellは~y方向に延びる ~LET ~F ◎ ↓
    7. ~IF[ %~y幅 ~EQ 0 ]:

      1. ~IF[ %~table要素 の`~node文書$は`過去互換~mode$でない ] ⇒ %~cellは~y方向に延びる ~SET ~T
      2. %~y幅 ~SET 1

      【 原文のこの段の記述は、過去互換~modeである場合には,何もせず %~y幅 は 0 のままにされるように読めるが、そうすると 以下で空の区画を占める~cellを作成することになり、おかしいので修正を加えている。 】

      ◎ If rowspan is zero and the table element's node document is not set to quirks mode, then let cell grows downward be true, and set rowspan to 1. Otherwise, let cell grows downward be false.
    8. %~x全幅 ~SET max( %~x全幅, %現~x ~PLUS %~x幅 ) ◎ If xwidth < xcurrent+colspan, then let xwidth be xcurrent+colspan.
    9. %~y全幅 ~SET max( %~y全幅, %現~y ~PLUS %~y幅 ) ◎ If yheight < ycurrent+rowspan, then let yheight be ycurrent+rowspan.
    10. %新~cell ~LET 次のようにされた新たな`~cell$

      • 区画 { %現~x +〜 %~x幅 } × { %現~y +〜 %~y幅 } を占める
      • %~cell要素 に応じて ⇒ `th$e 要素であるならば ~header~cellとする / `td$e 要素であるならば ~data~cellとする
      ◎ Let the slots with coordinates (x, y) such that xcurrent ≤ x < xcurrent+colspan and ycurrent ≤ y < ycurrent+rowspan be covered by a new cell c, anchored at (xcurrent, ycurrent), which has width colspan and height rowspan, corresponding to the current cell element. ◎ If the current cell element is a th element, let this new cell c be a header cell; otherwise, let it be a data cell.
    11. %~cell要素 に対応する`~cell$ ~SET %新~cell:

      • %~cell要素 に どの~header~cellたちが適用されるかを確立するためには、次~節に述べる`~header~cellたちをあてがう$~algoを利用すること。
      • %新~cell が占める区画~内に,すでに他のある`~cell$が占めている~slotがある場合、`~table~model~error$とされる — そのような~slotには複数の~cellが重合している。
      ◎ To establish which header cells apply to the current cell element, use the algorithm for assigning header cells described in the next section. ◎ If any of the slots involved already had a cell covering them, then this is a table model error. Those slots now have two cells overlapping.
    12. ~IF[ %~cellは~y方向に延びる ~EQ ~T ] ⇒ %新~cell を %~y方向に延びる~cellたち に追加する ◎ If cell grows downward is true, then add the tuple {c, xcurrent, colspan} to the list of downward-growing cells.
    13. %現~x ~INCBY %~x幅 ◎ Increase xcurrent by colspan.
  5. %現~y ~INCBY 1 ◎ If current cell is the last td or th element child in the tr element being processed, then increase ycurrent by 1, abort this set of steps, and return to the algorithm above. ◎ Let current cell be the next td or th element child in the tr element being processed. ◎ Return to the step labeled cells. ◎ When the algorithms above require the user agent to run the algorithm for growing downward-growing cells, the user agent must, for each {cell, cellx, width} tuple in the list of downward-growing cells, if any, extend the cell cell so that it also covers the slots with coordinates (x, ycurrent), where cellx ≤ x < cellx+width.

4.9.12.2. ~data~cellたちと~header~cellたちとの関係性の形成-法

各 ~cellには 0 個~以上の~header~cellがあてがわれる — それは、次の `~header~cellたちをあてがう@ ~algoの結果で与えられる: ◎ Each cell can be assigned zero or more header cells. The algorithm for assigning header cells to a cell principal cell is as follows.

  1. %主~cell ~SET 当の~cell ◎ ↑
  2. %~header~list ~LET ~cellたちの空~list ◎ Let header list be an empty list of cells. ◎ Let (principalx, principaly) be the coordinate of the slot to which the principal cell is anchored.
  3. ~IF[ %主~cell は `headers$a 属性を有する ] ⇒ %主~cell の `headers$a 属性の値を`~ASCII空白で分割-$した結果 内の ~EACH( %~token ) に対し ⇒ 次の両者を満たす`~cell$があれば それを %~header~list に追加する:

    • ~cellは %主~cell と同じ `~table$内にある
    • ~cellに対応する要素は、同じ `Document$I 内にある[ `~ID$ ~EQ %~token ]なる要素のうち,最初のものである
    ◎ If the principal cell has a headers attribute specified • Take the value of the principal cell's headers attribute and split it on ASCII whitespace, letting id list be the list of tokens obtained. • For each token in the id list, if the first element in the Document with an ID equal to the token is a cell in the same table, and that cell is not the principal cell, then add that cell to header list.
  4. ~ELSE: ◎ If principal cell does not have a headers attribute specified

    1. ( %主~起点, %主~区画 ) ~LET %主~cell の ( 起点, 区画 ) ◎ Let principalwidth be the width of the principal cell. ◎ Let principalheight be the height of the principal cell.
    2. %主~区画 の~y座標の範囲~内の ~EACH ( %~y ) に対し,昇順に ⇒ 次を与える下で `内部的に~header~cellを走査してあてがう$ ⇒ ( %主~cell, %~header~list , 座標 ( %主~起点 の~x座標, %~y ), `~row方向^i ) ◎ For each value of y from principaly to principaly+principalheight-1, run the internal algorithm for scanning and assigning header cells, with the principal cell, the header list, the initial coordinate (principalx,y), and the increments Δx=−1 and Δy=0.
    3. %主~区画 の~x座標の範囲~内の ~EACH ( %~x ) に対し,昇順に ⇒ 次を与える下で `内部的に~header~cellを走査してあてがう$ ⇒ ( %主~cell, %~header~list, 座標 ( %~x, %主~起点 の~y座標 ), `~col方向^i ) ◎ For each value of x from principalx to principalx+principalwidth-1, run the internal algorithm for scanning and assigning header cells, with the principal cell, the header list, the initial coordinate (x,principaly), and the increments Δx=0 and Δy=−1.
    4. %区画 ~LET 区画 { 0 〜 %主~区画 の最大の~x座標 } × { 0 〜 %主~区画 の最大の~y座標 } ◎ ↓
    5. ~IF[ %主~起点 ~IN ある`~row~group$の区画 %A ] ⇒ [ 次を満たすような すべての~header~cell ]を %~header~list に追加する ⇒ `~row~group~header$である ~AND その起点 ~IN %A ~AND その起点 ~IN %区画 ◎ If the principal cell is anchored in a row group, then add all header cells that are row group headers and are anchored in the same row group with an x-coordinate less than or equal to principalx+principalwidth-1 and a y-coordinate less than or equal to principaly+principalheight-1 to header list.
    6. ~IF[ %主~起点 ~IN ある`~col~group$ の区画 %A ] ⇒ [ 次を満たすような すべての~header~cell ]を %~header~list に追加する ⇒ `~col~group~header$である ~AND その起点 ~IN %A ~AND その起点 ~IN %区画 ◎ If the principal cell is anchored in a column group, then add all header cells that are column group headers and are anchored in the same column group with an x-coordinate less than or equal to principalx+principalwidth-1 and a y-coordinate less than or equal to principaly+principalheight-1 to header list.
  5. %~header~list 内に[ `空~cell$ / %主~cell ]があれば それらを除去する ◎ Remove all the empty cells from the header list.
  6. %~header~list 内に重複する~cellがあれば,一つを残して除去する ◎ Remove any duplicates from the header list. ◎ Remove principal cell from the header list if it is there.
  7. ~RET %~header~list ◎ Assign the headers in the header list to the principal cell.

`内部的に~header~cellを走査してあてがう@ ときは、所与の ( %主~cell, %~header~list, 座標 ( %~x, %~y ), %方向 ) に対し、次を走らす: ◎ The internal algorithm for scanning and assigning header cells, given a principal cell, a header list, an initial coordinate (initialx, initialy), and Δx and Δy increments, is as follows:

  1. %行止まり~header~list ~LET ~cellたちの空~list ◎ Let x equal initialx. ◎ Let y equal initialy. ◎ Let opaque headers be an empty list of cells.
  2. %~header~block内 ~LET ~F ◎ ↓
  3. %現~header~blockに属する~header ~LET ~cellたちの空~list ◎ ↓
  4. ~IF[ %主~cell は~header~cellである ]:
    1. %~header~block内 ~SET ~T
    2. %主~cell を %現~header~blockに属する~header に追加する
    ◎ If principal cell is a header cell • Let in header block be true, and let headers from current header block be a list of cells containing just the principal cell. ◎ Otherwise • Let in header block be false and let headers from current header block be an empty list of cells.
  5. %~slot~list ~LET %方向 に応じて,次で与えられる~list:

    `~row方向^i
    区画 { 0 +〜 %~x } × { %~y } 内の~slotたちからなる~x座標の降順による~list
    `~col方向^i
    区画 { %~x } × { 0 +〜 %~y } 内の~slotたちからなる~y座標の降順による~list
    ◎ Loop: Increment x by Δx; increment y by Δy. ◎ For each invocation of this algorithm, one of Δx and Δy will be −1, and the other will be 0.
  6. %~slot~list 内の~EACH( %~slot ) に対し: ◎ If either x or y are less than 0, then abort this internal algorithm.

    1. ~IF[ %~slot を占めている~cellの個数 ~NEQ 1 ] ⇒ ~CONTINUE ◎ If there is no cell covering slot (x, y), or if there is more than one cell covering slot (x, y), return to the substep labeled loop.
    2. %現~cell ~LET %~slot を占めている~cell ◎ Let current cell be the cell covering slot (x, y).
    3. %現~cell に応じて: ◎ ↓

      ~header~cellである ◎ If current cell is a header cell
      1. %~header~block内 ~SET ~T ◎ Set in header block to true.
      2. %現~cell を %現~header~blockに属する~header に追加する ◎ Add current cell to headers from current header block.
      3. ~IF[ 次のいずれかが満たされる ]…:

        • [ %方向 ~EQ `~col方向^i ]~AND[ %現~cell は`~col~header$である ]~AND[ %行止まり~header~list 内の どの~cellに対しても,その区画の~x座標の範囲は %現~cell のそれに一致しない ]
        • [ %方向 ~EQ `~row方向^i ]~AND[ %現~cell は`~row~header$である ]~AND[ %行止まり~header~list 内の どの~cellに対しても,その区画の~y座標の範囲は %現~cell のそれに一致しない ]

        …ならば ⇒ %現~cell を %~header~list に追加する

        ◎ Let blocked be false. ◎ If Δx is 0 • If there are any cells in the opaque headers list anchored with the same x-coordinate as the current cell, and with the same width as current cell, then let blocked be true. • If the current cell is not a column header, then let blocked be true. ◎ If Δy is 0 • If there are any cells in the opaque headers list anchored with the same y-coordinate as the current cell, and with the same height as current cell, then let blocked be true. • If the current cell is not a row header, then let blocked be true. ◎ If blocked is false, then add the current cell to the headers list.
      ~data~cellである ◎ If current cell is a data cell and in header block is true
      1. ~IF[ %~header~block内 ~EQ ~F ] ⇒ ~CONTINUE
      2. %~header~block内 ~SET ~F
      3. %行止まり~header~list に %現~header~blockに属する~header 内のすべての~cellを追加する
      4. %現~header~blockに属する~header を空にする
      ◎ Set in header block to false. Add all the cells in headers from current header block to the opaque headers list, and empty the headers from current header block list. ◎ Return to the step labeled loop.

~header~cell %~cell は、対応する要素の `scope$a 属性の状態を %状態 とするとき: ◎ ↓

  • 次のいずれかを満たすならば `~col~header@ とされる: ◎ A header cell anchored at the slot with coordinate (x, y) with width width and height height is said to be a column header if any of the following conditions are true:

    • %状態 ~EQ `Column$st ◎ The cell's scope attribute is in the column state, or
    • %状態 ~EQ `Auto$st ~AND 次を満たす ⇒ どの~data~cellも[ ~y座標 ~IN %~cell が占める区画の~y座標の範囲† ]なる~slotを占めていない ◎ The cell's scope attribute is in the auto state, and there are no data cells in any of the cells covering slots with y-coordinates y .. y+height-1.

    【† 不可解な条件。 おそらく、[ 座標 ~IN 区画 { %~cell が占める区画の~x座標の範囲 } × { 0 +〜 %~cell の起点の~y座標 } ]に改められるべきに思われる。 次項についても同様。 】

  • 次のいずれかを満たすならば `~row~header@ とされる: ◎ A header cell anchored at the slot with coordinate (x, y) with width width and height height is said to be a row header if any of the following conditions are true:

    • %状態 ~EQ `Row$st ◎ The cell's scope attribute is in the row state, or
    • %状態 ~EQ `Auto$st ~AND 次の両~条件を満たす:

      • %~cell は`~col~header$でない
      • どの~data~cellも[ ~x座標 ~IN %~cell が占める区画の~x座標の範囲† ]なる~slotを占めていない
      ◎ The cell's scope attribute is in the auto state, the cell is not a column header, and there are no data cells in any of the cells covering slots with x-coordinates x .. x+width-1.
  • 次を満たすならば `~col~group~header@ とされる ⇒ %状態 ~EQ `Colgroup$st ◎ A header cell is said to be a column group header if its scope attribute is in the column group state.
  • 次を満たすならば `~row~group~header@ とされる ⇒ %状態 ~EQ `Rowgroup$st ◎ A header cell is said to be a row group header if its scope attribute is in the row group state.

~cellは、対応する要素が次を満たすならば `空~cell@ とされる ⇒ 要素を包含しない~AND ~text内容は空または `White_Space$ 文字のみからなる ◎ A cell is said to be an empty cell if it contains no elements and its text content, if any, consists only of White_Space characters.

4.9.13. 例

~INFORMATIVE

【 この節は未訳。 】