11 Tabelas

Índice

  1. Introdución às tabelas
  2. Elementos para construir tabelas
    1. O elemento TABLE
    2. Lexendas nas tabelas: o elemento CAPTION
    3. Grupos de filas: os elementos THEAD, TFOOT e TBODY
    4. Grupos de colunas: os elementos COLGROUP e COL
    5. Filas de tabla: o elemento TR
    6. Celas de tabela: os elementos TH e TD
  3. Formato de tabelas para axentes de usuário visuais
    1. Bordos e liñas
    2. Aliñamento horizontal e vertical
    3. Marxes de cela
  4. Representación de tabelas por axentes de usuário non visuais
    1. Asociación de información de cabezallo con celas de dados
    2. Categorización de celas
    3. Algoritmo para achar información de cabezallo
  5. Tabela de exemplo

11.1 Introdución às tabelas

O modelo de tabelas da HTML permite que os autores distribuan os dados --texto, texto pré-formatado, imaxes, vínculos, formulários, campos de formulários, outras tabelas, etc. -- en filas e colunas de celas.

Cada tabela pode ter unha lexenda asociada (ver o elemento CAPTION ) que fornece unha descrición breve do obxectivo da tabela. Tamén se pode fornecer unha descrición máis longa (mediante o atributo summary ) para que utilice a xente que use axentes de usuário que usen síntese de voz ou braille.

As filas de tabela poden-se agrupar nas seccións cabezallo, pé e corpo (mediante os elementos THEAD , TFOOT e TBODY , respectivamente). Os grupos de filas portan información estrutural adicional e os axentes de usuários poden-na mostrar de modo que se resalte a sua estrutura. Os axentes de usuário poden explotar a división entre cabezallo/corpo/pé para permitir o desprazamento de seccións de corpo independentemente das seccións de cabezallo e pé. Cando se imprimen tabelas longas, a información de cabezallo e pé pode-se repetir en cada unha das páxinas que conteña dados da tabela.

Os autores poden tamén agrupar colunas para fornecer información estrutural adicional que os axentes de usuário poden explotar. Ademáis, os autores poden declarar propriedades de coluna no início dunha definición de tabela (mediante os elementos COLGROUP e COL ) de modo que os axentes de usuário podan mostrar a tabela incrementalmente en vez de teren que esperar a que cheguen todos os dados da tabela antes de mostrá-los.

Dado que as celas de tabela poden conter tanto información de "cabezallo" (ver o elemento TH ) como de "dados" (ver o elemento TD , as celas poden-se extender por várias filas e colunas. O modelo de tabelas da HTML 4 permite que os autores etiqueten cada cela para que os axentes de usuário non visuais lle podan comunicar ao usuário información de cabezallo sobre a cela máis facilmente. Estes mecanismos non só axudan moito aos usuários con dificuldades visuais, fan posíbel que os navegadores inalámbricos multi-modais con capacidades gráficas limitadas (p.ex., "buscas" e telemóbeis que se poden conectar à web) podan usar as tabelas.

As tabelas non deberian ser usadas meramente para dispor o conteúdo do documento, xa que isto pode apresentar problemas ao mostrá-las en médios non visuais. Ademáis, ao se usaren con gráficos, estas tabelas poden obrigar aos usuários a desprazar-se horizontalmente para ver unha tabela deseñada nun sistema cunha pantalla máis grande. Para reducir estes problemas, os autores deberian usar follas de estilo para controlar o deseño en vez de tabelas.

Nota. Esta especificación inclui información máis detallada sobre tabelas nas seccións sobre consideracións sobre o deseño de tabelas e cuestións de implementación .

Velaqui unha tabela simples que ilustra algunhas das características do modelo de tabelas da HTML. A seguinte definición de tabela:

<TABLE border="1"
summary="Esta tabela mostra algunhas estatísticas sobre
moscas da fruta: altura e peso médios e percentaxe
con ollos vermellos (tanto para machos como fémeas).">
<CAPTION><EM>Tabela de proba con celas unidas</EM></CAPTION>
<TR><TH rowspan="2"><TH colspan="2">Média
<TH rowspan="2">Ollos<BR>vermellos
<TR><TH>altura<TH>peso
<TR><TH>Machos<TD>1.9<TD>0.003<TD>40%
<TR><TH>Fémeas<TD>1.7<TD>0.002<TD>43%
</TABLE>

poderia-se mostrar asi nun dispositivo tty:

          Tabela de proba con celas unidas
/-----------------------------------------\
| | Média | Ollos |
| |-------------------| vermellos|
| | altura | peso | |
|-----------------------------------------|
| Machos | 1.9 | 0.003 | 40% |
|-----------------------------------------|
| Fémeass | 1.7 | 0.002 | 43% |
\-----------------------------------------/

ou asi nun axente de usuário gráfico:

A table with merged cells

11.2 Elementos para construir tabelas

11.2.1 O elemento TABLE

<!ELEMENT TABLE - -
(CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ATTLIST TABLE -- elemento de tabela --
%attrs; -- %coreattrs, %i18n, %events --
summary %Text; #IMPLIED -- propósito/estrutura para saída de voz --
width %Length; #IMPLIED -- ancho da tabela --
border %Pixels; #IMPLIED -- controla o ancho da moldura arredor da tabela --
frame %TFrame; #IMPLIED -- que partes mostrar da moldura --
rules %TRules; #IMPLIED -- liñas entre filas e colunas --
cellspacing %Length; #IMPLIED -- espaciado entre as celas --
cellpadding %Length; #IMPLIED -- espaciado dentro das celas --
>

Etiqueta inicial: requerida, Etiqueta final: requerida

Definicións dos atributos

summary = text [CS]
Este atributo fornece un resumo do obxectivo e estrutura da tabela para os axentes de usuário que funcionen en médios non visuais como a voz e o braille.
align = left|center|right [CI]
Desaprovado. Este atributo especifica a posición da tabela con relación ao documento. Valores permitidos:
  • left: A tabela está à esquerda do documento.
  • center: A tabela está no centro do documento.
  • right: A tabela está à direita do documento.
width = length [CN]
Este atributo especifica o ancho desexado da tabela inteira e está dirixida aos axentes de usuário visuais. Cando o valor é un valor en percentaxe, o valor é relativo ao espazo horizontal disponíbel do axente de usuário. En auséncia dunha especificación de ancho, o ancho da tabela determina-o o axente de usuário. 

Atributos que se definen noutro lugar

O elemento TABLE contén todos os outros elementos que especifican lexenda, filas, conteúdo e formato.

A seguinte lista informativa decrebe que operacións poden realizar os axentes de usuário ao mostrar unha tabela:

O modelo de tabela da HTML deseñou-se de xeito que, coa axuda do autor, os axentes de usuário poidan mostrar as tabelas incrementalmente (isto é, segundo van chegando as filas da tabela) en vez de ter que agardar a  que cheguen todos os dados antes de mostrá-los.

Para que un axente de usuário formate unha tabela nunha pasada, os autores deben-lle dicer ao axente de usuário:

Máis en concreto, un axente de usuário pode mostrar unha tabela nunha única pasada cando os anchos das colunas se especifiquen usando unha combinación de elementos COLGROUP e COL . Se algunha das colunas se especifica en termos relativos ou de percentaxes (ver a sección sobre o cálculo do ancho das colunas ), os autores tamén deben especificar o ancho da tabela mesma.

Direccionabilidade da tabela  

A direccionalidade da tabela é, ora a direccionalidade herdada (por omisión é de esquerda a direita), ora a especificada polo atributo dir do elemento TABLE .

Nunha tabela de esquerda a direita, a coluna cero está na parte esquerda e a fila cero está na parte superior. Nunha tabela de direita a esquerda, a coluna cero está na parte direita e a fila cero está na parte superior.

Cando un axente de usuário lle asigna celas extra a unha fila (ver a sección sobre cálculo do número de colunas dunha tabela ), adicionan-se celas de fila extra à direita da tabela en tabelas de esquerda a direita e à esquerda en tabelas de direita a esquerda.

Observe-se que TABLE é o único elemento no que dir invirte a orde visual das colunas; unha fila de tabela única () ou un grupo de colunas  () non se poden invertir independentemente.

Cando se indica para o elemento TABLE , o atributo dir tamén afecta à dirección do texto dentro das celas da tabela (xa que o atributo dir é herdado polos elementos de nível de bloco).

Para especificar unha tabela de direita a esquerda, seleccione o atributo dir como segue:

<TABLE dir="RTL">
...resto da tabela... </TABLE>

A dirección do texto en celas individuais pode-se trocar indicando-o no atributo dir nun elemento que define a cela. Consulte a sección sobre texto bidireccional para máis información sobre cuestións de dirección de texto.

11.2.2 Lexendas de tabelas: o elemento CAPTION

<!ELEMENT CAPTION  - - (%inline;)*     -- lexenda de tabela -->

<!ATTLIST CAPTION
%attrs; -- %coreattrs, %i18n, %events --
>

Etiqueta inicial: requerida, Etiqueta final: requerida

Definicións dos atributos

align = top|bottom|left|right [CI]
Desaprovado. Para axentes visuais, este atributo especifica a posición da lexenda con relación à tabela. Valores posíbeis:
  • top: A lexenda está na parte superior da tabela. É o valor por omisión.
  • bottom: A lexenda está na parte inferior da tabela.
  • left: A lexenda está na parte esquerda da tabela.
  • right: A lexenda está na parte direita da tabela.

Atributos que se definen noutro lugar

Se está presente, o texto do elemento CAPTION deberia descreber a natureza da tabela. O elemento CAPTION só se permite imediatamente depóis da etiqueta inicial TABLE . Un elemento TABLE só pode conter un elemento CAPTION .

Os axentes de usuário visuais permiten que as persoas con visión comprendan rapidamente a estrutura da tabela a partir dos cabezallos, asi como da lexenda. Unha consecuéncia disto é que as lexendas serán con frecuéncia inapropriadas como resumo do obxectivo e estrutura da tabela desde a perspectiva de quen use axentes de usuário non visuais.

Os autores, polo tanto, deberian ter cuidado de fornecer información adicional que resuma o obxectivo e a estrutura da tabela usando o atributo  summary do elemento TABLE . Isto é especialmente importante en tabelas sen lexendas. Os exemplos que se dan máis abaixo ilustran o uso do atributo summary.

Os axentes de usuário visuais deberian evitar recortar calquer parte da tabela, incluída a lexenda, a non ser que fornezan un modo de aceder a todas as partes, p.ex., mediante o desprazamento horizontal ou vertical. Recomendamos que o texto da lexenda se construa co mesmo ancho que a tabela (Ver tamén a sección sobre  algoritmos de representación recomendados .)

11.2.3 Grupos de filas: os elementos THEAD , TFOOT e TBODY

<!ELEMENT THEAD    - O (TR)+           -- cabezallo da tabela -->
<!ELEMENT TFOOT - O (TR)+ -- pé da tabela -->

Etiqueta inicial: requerida, Etiqueta final: opcional

<!ELEMENT TBODY    O O (TR)+           -- corpo da tabela -->

Etiqueta inicial: opcional, Etiqueta final: opcional

<!ATTLIST (THEAD|TBODY|TFOOT)          -- sección de tabela --
%attrs; -- %coreattrs, %i18n, %events --
%cellhalign; -- aliñamento horizonal nas celas --
%cellvalign; -- aliñamento vertical nas celas --
>

Atributos que se definen noutro lugar

As filas das tabelas poden-se agrupar en cabezallo de tabela, pé de tabela e unha ou máis seccións de corpo de tabela usando os elementos  THEAD , TFOOT e TBODY respectivamente. Esta división permite que os axentes de usuário aceiten o deslocamento de corpos de tabela independentemente do cabezallo e o pé da tabela. Cando se impriman tabelas longas, a información  do cabezallo e pé de tabela pode-se repetir en cada páxina que conteña dados de tabela.

O cabezallo e pé de tabela deberian conter información sobre as colunas da tabela. O corpo da tabela deberia conter filas de dados de tabela.

De estaren presentes, cada elemento THEAD , TFOOT e TBODY contén un grupo de filas. Cada grupo debe conter polo menos unha fila, definida co elemento TR .

Este exemplo ilustra a orde e estrutura de cabezallos, pés e corpos de tabelas.

<TABLE>
<THEAD>
<TR> ...información de cabezallo... </THEAD> <TFOOT> <TR> ...información de pé.. </TFOOT> <TBODY> <TR> ...primeira fila de dados do bloco un... <TR> ...segunda fila de dados do bloco un... </TBODY> <TBODY> <TR> ...primeira fila de dados do bloco dous... <TR> ...segunda fila de dados do bloco dous... <TR> ...terceira fila de dados do bloco dous... </TBODY> </TABLE>

TFOOT debe aparecer antes de TBODY dentro dunha definición de TABLE para que os axentes de usuário podan mostrar o pé antes de receberen todas as (potencialmente numerosas) filas de dadas. O que segue resume que etiquetas se requiren e cais se poden omitir:

Os axentes de usuário conformes deben obedecer estas regras por razóns de compatibilidade para trás.

A tabela do exemplo anterior poderia-se abreviar retirando algunhas etiquetas finais, como en:

<TABLE>
<THEAD>
<TR> ...información do cabezallo... <TFOOT> <TR> ...información do pé... <TBODY> <TR> ...primeira fila de dados do bloco un... <TR> ...segunda fila de dados do bloco un... <TBODY> <TR> ...primeira fila de dados do bloco dous... <TR> ...segunda fila de dados do bloco dous... <TR> ...terceira fila de dados do bloco dous... </TABLE>

As seccións THEAD , TFOOT e TBODY deben conter o mesmo número de colunas.

11.2.4 Grupos de colunas: os elementos COLGROUP e COL

Os grupos de colunas permiten que os autores creen  divisións estruturais dentro dunha tabela. Os autores poden resaltar esta estrutura mediante follas de estilo ou atributos HTML (p.ex., o atributo rules do elemento TABLE ). Para un exemplo da apresentación visual de grupos de colunas, consulte a tabela de exemplo .

Unha tabela pode, ben conter un único grupo de colunas implícito (non hai elemento COLGROUP que delimite a coluna), ben calquer número de grupos de colunas explícitos (cada un delimitado por un elemento COLGROUP ).

O elemento COL permite que os autores compartillen aributos entre várias colunas sen implicar nengun agrupamento estrutural. A "extensión" ("span") do elemento COL é o número de colunas que compartillara os atributos do elemento.

O elemento COLGROUP  

<!ELEMENT COLGROUP - O (COL)*          -- grupo de colunas de tabela -->
<!ATTLIST COLGROUP
%attrs; -- %coreattrs, %i18n, %events --
span NUMBER 1 -- número de colunas nun grupo por omisión --
width %MultiLength; #IMPLIED -- ancho por omisión de colunas englobadas --
%cellhalign; -- aliñamento horizontal das celas --
%cellvalign; -- aliñamento vertical das celas --
>

Etiqueta inicial: requerida, Etiqueta final: opcional

Definicións dos atributos

span = number [CN]
Este atributo, que debe ser un inteiro > 0, especifica o número de colunas nun grupo de colunas. Os valores significan o seguinte:
  • En auséncia dun atributo span cada COLGROUP define un grupo de colunas que contén unha coluna.
  • Se o atributo span é N > 0 o elemento COLGROUP actual define un grupo de colunas que contén N colunas.

Os axentes de usuário deben ignorar este atributo se o elemento COLGROUP contén un ou máis elementos COL .

width = multi-length [CN]

Este atributo especifica un ancho por omisión para cada coluna do grupo de colunas actual. Ademáis dos valores en píxeis, percentaxes e valores relativos padróns, este atributo permite a forma especial "0*" (cero asterisco), que significa que o ancho de cada coluna do grupo deberia ser o ancho mínimo para conter os conteúdos da coluna. Isto implica que se deban coñecer os conteúdos inteiros dunha coluna antes de que se poda computar correctamente o seu ancho. Os autores deberian ter en conta que especificar "0*" evitará que os axentes de usuário mostren a tabela incrementalmente.

Este atributo anula-se en calquer coluna no grupo de colunas cuxo ancho se especifique mediante un elemento COL .

Atributos que se definen noutro lugar

O elemento COLGROUP crea un grupo de colunas explícito. O número de colunas no grupo de colunas pode-se especificar de duas maneiras, mutualmente excluíntes:

  1. O atributo span do elemento (valor 1 por omisión) especifica o número de colunas do grupo.
  2. Cada elemento COL do COLGROUP representa unha ou máis colunas do grupo.

A avantaxe de usar o atributo span é que os autores poden agrupar información sobre anchos de colunas. Asi, se unha tabela contén cuarenta colunas, cada unha delas dun ancho de 20 píxeis, é máis fácil escreber:

   <COLGROUP span="40" width="20">
</COLGROUP>

que:

   <COLGROUP>
<COL width="20">
<COL width="20">
...até un total de 40 elementos COL... </COLGROUP>

Cando sexa necesário individualizar unha coluna (p.ex., para información de estilo, para especificar información de ancho.) dentro dun grupo, os autores deben identificar esa coluna cun elemento COL . Asi, para aplicar unha información de estilo especial à última coluna da tabela anterior, individualizamo-la como segue:

   <COLGROUP width="20">
<COL span="39">
<COL id="formata-me-especialmente">
</COLGROUP>

O atributo width do elemento COLGROUP herdan-no as 40 colunas. O primeiro elemento COL refere-se às primeiras 39 colunas (sen lles facer nada especial) e o segundo asinga-lle un valor id à cuadraxéxima coluna para que as follas de estilo se podan referir a ela.

A tabela do exemplo seguinte contén dous grupos de colunas. A primeira coluna contén 10 colunas e o segundo 5 colunas. O ancho por omisión de cada coluna do primeiro grupo de colunas é 50 píxeis. O ancho de cada coluna no segundo grupo de colunas será o mínimo requerido para esa coluna.

<TABLE>
<COLGROUP span="10" width="50">
<COLGROUP span="5" width="0*">
<THEAD>
<TR><TD> ... </TABLE>

O elemento COL

<!ELEMENT COL      - O EMPTY           -- coluna de tabela -->
<!ATTLIST COL -- grupos de colunas e propriedades --
%attrs; -- %coreattrs, %i18n, %events --
span NUMBER 1 -- Os atributos COL afectan N colunas --
width %MultiLength; #IMPLIED -- especificación do ancho de coluna --
%cellhalign; -- aliñamento horizontal en celas --
%cellvalign; -- aliñamento vertical en celas --
>

Etiqueta inicial: requerida , Etiqueta final: proibida

Definicións dos atributos

span = number [CN]
Este atributo, cuxo valor debe ser un inteiro > 0, especifica o número de colunas "expandidas" polo elemento COL ; o elemento COL compartilla os seus atributos con todas as colunas polas que se extende. O valor por omisión deste atributo é 1 (isto é, o elemento COL refire-se a unha única coluna). Se o atributo span se coloca en N > 1, o elemento COL actual compartilla os seus atributos coas seguintes N-1 colunas.
width = multi-length [CN]
Este atributo especifica un ancho por omisión para cada coluna pola que se extende o elemento COL actual. Ten o mesmo significado que o atributo width para o elemento COLGROUP e anula-o.

Atributos que se definen noutro lugar

O elemento COL permite que os autores agrupen as especificacións de atributos das colunas das tabelas. COL non agrupa as colunas xuntas estruturalmente -- ese é o papel do elemento COLGROUP . Os elementos COL están vacios e serven só como apoio para os atributos. Poden aparecer dentro ou fora dun grupo de colunas excplícito (isto é, un elemento COLGROUP ).

O atributo width de COL refere-se ao ancho de cada coluna na extensión do elemento.

Cálculo do número de colunas dunha tabela  

Hai duas maneiras de determinar o número de colunas dunha tabela (en orde de prioridade): 

  1. Se o elemento TABLE contén algun dos elementos COLGROUP ou COL , os axentes de usuário deberian calcular o número de colunas sumando o seguinte:
  2. Doutro modo, se o elemento TABLE non contén elementos COLGROUP ou COL , os axentes de usuário deberian basear o número de colunas no que requiren as filas. O número de colunas é igual ao número de colunas requeridas pola fila con máis colunas, incluindo celas que se extenden por várias colunas. En calquer fila con menos deste número de colunas, o final desa fila deberia-se cobrir con celas vacias. O "final" dunha fila depende da direccionalidade da tabela .

É un erro que unha tabela conteña elementos COLGROUP ou COL e que os dous cálculos non resulten no mesmo número de colunas.

Unha vez que o axente de usuário calcule o número de colunas da tabela, pode-as agrupar en grupos de colunas.

Por exemplo, por cada unha das tabelas seguintes, os dous métodos de cálculo de colunas resultan en tres colunas. As tres primeiras tabelas poden-se mostrar incrementalmente.

<TABLE>
<COLGROUP span="3"></COLGROUP>
<TR><TD> ... ...filas... </TABLE> <TABLE> <COLGROUP> <COL> <COL span="2"> </COLGROUP> <TR><TD> ... ...filas... </TABLE> <TABLE> <COLGROUP> <COL> </COLGROUP> <COLGROUP span="2"> <TR><TD> ... ...filas... </TABLE> <TABLE> <TR> <TD><TD><TD> </TR> </TABLE>

Cálculo do ancho das colunas  

Os autores poden especificar os anchos das colunas de tres maneiras:

Fixos
Unha especificación de ancho fixo dá-se en píxeis (p.ex., width ="30"). Unha especificación de ancho fixo permite a representación incremental.
Percentaxe
Unha especificación con percentaxe (p.ex., width ="20%") basea-se nunha percentaxe do espazo horizontal disponíbel para a tabela (entre as marxes esquerda e direita actual, incluindo flotantes). Observe-se que este espazo non depende da tabela mesma, asi que as especificacións en percentaxes permiten a representación incremental.
Proporcional
As especificacións proporcionais (p.ex., width="3*") referen-se a porcións do espazo horizontal requeridas por unha tabela. Se à trabela se lle dá un ancho fixo mediante o atributo width do elemento TABLE , os axentes de usuário poden mostrar a tabela incrementalmente mesmo con colunas proporcionais.

Porén, se a tabela non ten un ancho fixo, os axentes de usuário deben receber todos os dados da tabela antes de que poidan determinar o espazo horizontal que require a tabela. Só entón se pode asignar ese espazo a colunas proporcionais.

Se un autor non especifica información sobre o ancho dunha coluna, un axente de usuário pode non ser capaz de formatar a tabela incrementalmente dado que debe agardar a que chegue a coluna de dados inteira para poder asignar o ancho apropriado.

Se os anchos das colunas resultan demasiados estreitos para os conteúdos dunha cela de tabela determinada, os axentes de usuário poden escoller redeseñar a tabela.

A tabela deste exemplo contén seis colunas. A primeira non pertence a un grupo de colunas explícito. As tres seguintes pertencen ao primeiro grupo de colunas explícito e as duas últimas pertencen ao segundo grupo de colunas explícito. Esta tabela non se pode formatar incrementalmente dado que contén especificacións de ancho de coluna proporcionais e nengun valor para o atributo width do elemento TABLE .

Unha vez que o axente de usuário (visual) recebeu os dados da tabela, o axente de usuário asignará o espazo como segue: Primeiro, o axente de usuário asignara-lle 30 píxeis às colunas un e dous. Depóis, reservará-se o espazo mínimo requerido pola terceira coluna. O espazo horizontal restante dividirá-se en seis porcións iguais (dado que 2* + 1* + 3* = 6 porcións). A coluna catro (2*) receberá duas desas porcións, a coluna cinco (1*) receberá unha e a coluna seis (3*) receberá tres.

    
<TABLE>
<COLGROUP>
<COL width="30">
<COLGROUP>
<COL width="30">
<COL width="0*">
<COL width="2*">
<COLGROUP align="center">
<COL width="1*">
<COL width="3*" align="char" char=":">
<THEAD>
<TR><TD> ... ...filas... </TABLE>

Indicamos que o atributo align do terceiro grupo de colunas sexa "center" (centrado). Todas as celas de calquer coluna deste grupo herdarán este valor, mais poden-no anular. Con efeito, o COL final é o que fai, ao especificar que cada cela da coluna que governa se aliñe no carácter ":".

Na seguinte tabela, as especificacións de ancho de coluna permiten que o axente de usuário fomate a tabela incrementalmente:

    
<TABLE width="200">
<COLGROUP span="10" width="15">
<COLGROUP width="*">
<COL id="penultima-coluna">
<COL id="ultima-coluna">
<THEAD>
<TR><TD> ... ...filas... </TABLE>

As primeiras dez colunas terán 15 píxeis de ancho cada unha. Cada unha das duas últimas colunas receberá a metade dos 50 píxeis restantes. Observe-se que os elementos COL aparecen só para que se poda especificar un valor id para as duas últimas colunas.

Nota. Ainda que o atributo width no elemento TABLE non está desaprovado, recomenda-se-lles aos autores que usen follas de estilo para especificar anchos de colunas.

11.2.5 Filas de tabelas: o elemento TR

<!ELEMENT TR       - O (TH|TD)+        -- fila de tabela -->
<!ATTLIST TR -- fila de tabela --
%attrs; -- %coreattrs, %i18n, %events --
%cellhalign; -- aliñamento horizontal nas celas --
%cellvalign; -- aliñamento vertical nas celas --
>

Etiqueta inicial: requerida, Etiqueta final: opcional

Atributos que se definen noutro lugar

Os elementos TR actuan como contentores dunha fila de celas de tabela. Pode-se omitir a etiqueta final.

Esta tabela de exemplo contén tres filas, cada unha iniciada co elemento TR :

<TABLE summary="Esta tabela mostra o número de tazas
de café consumidas por cada senador, o tipo
de café (descafeinado ou normal), e se
se tomaron con azúcar.">
<CAPTION>Tazas de café consumidas por cada senador</CAPTION>
<TR> ...Fila de cabezallo... <TR> ...Primeira fila de dados... <TR> ...Segunda fila de dados... ...resto da tabela... </TABLE>

11.2.6 Celas de tabela: os elementos TH e TD

<!ELEMENT (TH|TD)  - O (%flow;)*       -- cela de cabezallo de tabela, cela de dados de tabela -->

<!-- O rango é máis simple que o atributo de cabezallos das tabelas normais -->
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">

<!-- TH é para cabezallos, TD para dados, mais para celas que se usen como ambos, use-se TD -->
<!ATTLIST (TH|TD) -- cela de cabezallo ou de dados --
%attrs; -- %coreattrs, %i18n, %events --
abbr %Text; #IMPLIED -- abreviatura para cela de cabezallo --
axis CDATA #IMPLIED -- lista separada por vírgulas de cabezallos relacionados--
headers IDREFS #IMPLIED -- lista de id para celas de cabezallo --
scope %Scope; #IMPLIED -- rango coberto polas celas de cabezallo --
rowspan NUMBER 1 -- número de filas polas que se extende unha cela --
colspan NUMBER 1 -- número de colunas polas que se extende unha cela --
%cellhalign; -- aliñamento horizontal nas celas --
%cellvalign; -- aliñamento vertical nas celas --
>

Etiqueta incicial: requerida, Etiqueta final: opcional

Definicións dos atributos

headers = idrefs [CS]
Este atributo especifica a lista de celas de cabezallo que fornecen información de cabezallo para a cela de dados actual. O valor deste atributo é unha lista de nomes de cela separada por espazos; as celas deben ter un nome indicado polo seu atributo id . Os autores normalmente usan o atributo headers para axudar os axentes de usuário non visuais a mostrar información de cabezallo sobre as celas de dados (p.ex., a información de cabezallo fala-se antes dos dados da cela), mais o atriuto tamén se pode usar en conxunción con follas de estilo. Vexa-se tamén o atributo scope.
scope = scope-name[CI]
Este atributo especifica o conxunto de celas de dados para o que fornece información a cela de cabezallo actual fornece información de cabezallo. Este atributo pode-se usar en lugar do atributo headers , en particular para as tabelas simples. Cando se especificar, este atributo debe ter un dos valores seguintes:
  • row: A cela actual fornece información de cabezallo para o resto da fila que a contén (vexa-se tamén a sección sobre direccionalidade das tabelas ).
  • col: A cela actual fornece información de cabezallo para o resto da coluna que a contén.
  • rowgroup: A cela de cabezallo fornece información de cabezallo para o resto do grupo de filas que a conteñen.
  • colgroup: A cela de cabezallo fornece información de cabezallo para o resto do grupo de colunas que a conteñen.
abbr = text [CS]
Este atributo deberia ser usado para fornecer unha forma abreviada do conteúdo da cela, e pode ser mostrado polos axentes de usuário cando for apropriado en lugar do conteúdo da cela. Os nomes abreviados deberian ser cortos, dado que os axentes de usuários poden-nos mostrar repetidas veces. Por exemplo, os sintetizadores de voz poden mostrar os cabezallos abreviados relacionados cunha cela determinada antes de mostrar o conteúdo da cela.
axis = cdata [CI]
Este atributo pode-se usar para colocar unha cela en categorias conceituais que se pode considerar que forman eixos nun espazo n-dimensional. Os axentes de usuário poden permitir-lles aos usuários aceder a esas categorias (p.ex., o usuário pode-lle perguntar ao axente de usuário por celas que pertenzan a certas categorias, o axente de usuário pode apresentar unha tabela en forma de índice, etc.). Consulte a sección sobre  categorización de celas para máis información. O valor deste atributo é unha lista de nomes de categorias separada por vírgulas.
rowspan = number [CN]
Este atributo especifica o número de filas polas que se extende a cela actual. O valor por omisión deste atributo é unha ("1"). O valor cero ("0") significa que a cela se extende por todas as filas desde a fila actual à última fila da sección da tabela ( TBODY ou TFOOT ) na que se define a cela.
colspan = number [CN]
Este atributo especifica o número de colunas polas que se extende a cela actual. O valor por omisión deste atributo é unha ("1"). O valor cero ("0") significa que a cela se extende por todas as colunas desde a coluna actual à derradeira coluna do grupo de colunas () na que se define a cela.
nowrap [CI]
Desaprovado. Se está presente, este atributo booleano di-lle aos axentes de usuário visuais que desactiven  o salto de liña automatico nesta cela. Deberian-se usar follas de estilo en lugar deste atributo para conseguir efectos de salto de liña. Nota. se se usa descuidadamente, este atributo pode resultar en celas excesivamente anchas.
width = length [CN]
Desaprovado. Este atributo fornece aos axentes de usuário cun ancho de cela recomendado.
height = length [CN]
Desaprovado. Este atributo fornece aos axentes usuários cun alto de cela recomendado.

Atributos que se definen noutro lugar

As celas de tabelas poden conter dous tipos de información: información de cabezallo e dados. Esta distinción permite que os axentes de usuário mostren as celas de cabezallo e de dados de maneira distinta, mesmo na auséncia de follas de estilo. Por exemplo, os axentes de usuário visuais poden mostrar o texto da cela de cabezallo en negrita. Os sintetizadores de voz poden mostrar a información de cabezallo cunha inflexión do ton de voz distinta

O elemento TH define unha cela que contén información de cabezallo. Os axentes de usuário dispoñen de duas informacións de cabezallo: os conteúdos do elemento TH e o valor do atributo abbr . Os axentes de usuário deben mostrar tanto os conteúdos da cela ou o valor do atributo abbr . Para os médios visuais, este último pode ser apropriado cando non hai espazo dabondo para mostrar os conteúdos inteiros da cela. Para os médios non visuais, pode-se usar abbr para os cabezallos de tabela cando estes se mostran xunto cos conteúdos das celas aos que se aplican.

Os atributos headers e scope tamén permiten que os autores axuden aos axentes de usuário non visuais a procesaren a información de cabezallo. Consulte a sección sobre etiquetaxe de celas para axentes de usuário non visuais para máis información e exemplos.

O elemento TD define unha cela que contén dados.

As celas poden estar vacias (isto é, non conteren dados).

Por exemplo, a tabela seguinte contén catro colunas de tabela, cada unha encabezada por unha descrición da coluna.

<TABLE summary="Esta tabela mostra o número de tazas
de café consumidas por cada senador, o tipo
de café (descafeinado ou normal), e se
se tomaron con azúcar.">
<CAPTION>Tazas de café consumidas por cada senador</CAPTION>
<TR>
<TH>Nome</TH>
<TH>Tazas</TH>
<TH>Tipo de café</TH>
<TH>Azúar?</TH>
<TR>
<TD>T. Sexton</TD>
<TD>10</TD>
<TD>Expreso</TD>
<TD>Non</TD>
<TR>
<TD>J. Dinnen</TD>
<TD>5</TD>
<TD>Descafeinado</TD>
<TD>Si</TD>
</TABLE>

Un axente de usuário nun dispositivo tty poderia-o mostrar asi:

Nome         Tazas      Tipo de café     Azúcar?
T. Sexton    10         Expreso          Si
J. Dinnen    5          Descafeinado     Non

Celas que se extenden por várias filas ou colunas  

As celas poden-se extender por várias filas ou colunas. O número de filas ou colunas polas que se extende unha cela indica-se cos atributos rowspan e colspan dos elementos TH e TD .