# Connexions

You are here: Home » Content » Exhaustive Figure and Table Combinations

### Recently Viewed

This feature requires Javascript to be enabled.

# Exhaustive Figure and Table Combinations

Module by: Max Starkenburg. E-mail the author

Summary: This module provides examples of figures, subfigures, and captions in varying in shapes and sizes. It also provides examples of CALS tables in many different variations and attribute permutations for style testing purposes.

## No Subfigures, Stretched Caption

Figure 3: The codeblock above is inside a figure which likely will have a center alignment, yet it retains its natural left alignment because of the way it is styled. It also stretches out this caption, which normally would have a width of 50%
Codeblock in a Centered Table Cell

this is some               pretend codeblock

just use
your
imagination
this last line is longer than the rest to see how well the caption stretches


## Vertical Subfigures, Stretched Figure

Figure 10
name and caption on table
one tgroupmore than one tgroup
(a) (b)
 1 2 3 4
table name text
table caption text
 1 2 3 4
 a b c d

## TABLE attributes

### frame

Figure 11: These, like the borders of the cells themselves, are done with inline CSS declarations.
frame="sides"frame="top"frame="bottom"frame="topbot"frame="all"frame="none"
(a) (b) (c) (d) (e) (f)
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2

### colsep, rowsep

Figure 12
colsep="0"colsep="1"rowsep="0"rowsep="1"rowsep="0" (no tfoot)rowsep="0" (no thead or tfoot)
(a) (b) (c) (d) (e) (f)
a1a2a3
b1b2b3
a1a2a3
b1b2b3
a1a2a3
b1b2b3
a1a2a3
b1b2b3
a1a2a3
b1b2b3
a1a2a3
b1b2b3
a1a2
b1b2
c1c2
a1a2
b1b2
c1c2
a1a2
b1b2
c1c2
a1a2
b1b2
c1c2
a1a2
b1b2
c1c2
a1a2
b1b2
c1c2
a1a2
b1b2
c1c2
a1a2
b1b2
c1c2
 a1 a2 b1 b2 c1 c2

### orient, pgwide

Figure 13
orient="port"orient="land"pgwide="0"pgwide="1"
(a) (b) This should be impossible in HTML, as far as I know.(c) (d) I'm not exactly sure how this should work inside a figure.
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
Table 1: pgwide="0" outside figure
This should take only the space needed.
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
Table 2: pgwide="1" outside figure
This should extend to the edges of the page.
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2

## TGROUP attributes

### colsep, rowsep

Figure 14: Remember, the column separator is to the right of the cell, and the row separator is to the bottom of the cell. The last cells' right and bottom separator, respectively, are ignored and instead dictated by the table's frame attribute.
colsep="0"colsep="1"rowsep="0"rowsep="1"rowsep="0" (no tfoot)rowsep="0" (no thead or tfoot)
(a) (b) (c) (d) (e) (f)
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
a1a2
b1b2
 a1 a2 b1 b2

### align, char, charoff

Figure 15
align="left"align="right"align="center"align="justify"
(a) (b) (c) (d)
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. a nother string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. a nother string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. a nother string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. a nother string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. a nother string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. a nother string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. a nother string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. a nother string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. a nother string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. a nother string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. a nother string, but not as long as the last.
Figure 16: There are char and charoff attributes in HTML, but I don't believe they are supported by browsers yet.
align="char", char="."align="char", char=".", charoff="25"align="char", char=".", charoff="75"
(a) (b) (c)
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah

## COLSPEC attributes

### colwidth

Figure 17
colwidth="72pt"colwidth="1.5in"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 18
colwidth="100px"colwidth="10em"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 19
colwidth="50%"colwidth="150%"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 20
colwidth="10pc"colwidth="10pi"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 21
colwidth="15ex"colwidth="3cm"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 22
colwidth="50mm"
a1a2
a1a2
a1a2
Figure 23
colwidth="3*"colwidth="3*+100px"
(a) This seems to have varying success in HTML.(b) This is probably impossible in HTML.
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2

### colsep, rowsep

Figure 24
(a) There should be no line separating the 1st and 2nd columns' cells, but there should be a line separating the 2nd and 3rd columns' cells.(b) There should be a line separating the 1st and 2nd columns' cells, but no line separating the 2nd and 3rd columns' cells.(c) There first column's cells should have no border on the bottom (excluding the last one), but the 2nd and 3rd columns' cells should.(d) The 1st and 3rd columns' cells should have a border on the bottom, but the 2nd columns' cells should have none (excluding the last cell).(e) There first column's cells should have no border on the bottom (excluding the last one), but the 2nd and 3rd columns' cells should.(f) The 1st and 3rd columns' cells should have a border on the bottom, but the 2nd columns' cells should have none (excluding the last cell).
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
 a1 a2 a3 b1 b2 b3 c1 c2 c3

### align

Figure 25
tgroup: right; 2nd column colspec: lefttgroup: left; 2nd column colspec: righttgroup: left; 2nd column colspec: centertgroup: left; 2nd column colspec: justify
(a) The tgroup is align="right", but the 2nd column should be aligned to the left.(b) The tgroup is align="left", but the 2nd column should be aligned to the right.(c) The tgroup is align="left", but the 2nd column should be aligned to the center.(d) The tgroup is align="left", but the 2nd column should be justified.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.

### char, charoff

Figure 26
1st colspec: align="char", char="."; 2nd colspec: nothing1st colspec: align="char", char=".", charoff="25"; 2nd colspec: nothing1st colspec: align="char", char=".", charoff="75"; 2nd colspec: nothing
(a) (b) (c)
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah

## COLSPEC attributes (without using the colnum attribute)

### colwidth

Figure 27
colwidth="72pt"colwidth="1.5in"
(a) (b)
a1a2a3
a1a2a3
a1a2a3
a1a2a3
a1a2a3
a1a2a3
Figure 28
colwidth="100px"colwidth="10em"
(a) (b)
a1a2a3
a1a2a3
a1a2a3
a1a2a3
a1a2a3
a1a2a3
Figure 29
colwidth="50%"colwidth="150%"
(a) (b)
a1a2a3
a1a2a3
a1a2a3
a1a2a3
a1a2a3
a1a2a3
Figure 30
colwidth="10pc"colwidth="10pi"
(a) (b)
a1a2a3
a1a2a3
a1a2a3
a1a2a3
a1a2a3
a1a2a3
Figure 31
colwidth="15ex"colwidth="3cm"
(a) (b)
a1a2a3
a1a2a3
a1a2a3
a1a2a3
a1a2a3
a1a2a3
Figure 32
colwidth="50mm"
a1a2a3
a1a2a3
a1a2a3
Figure 33
colwidth="3*"colwidth="3*+100px"
(a) This seems to have varying success in HTML.(b) This is probably impossible in HTML.
a1a2a3
a1a2a3
a1a2a3
a1a2a3
a1a2a3
a1a2a3

### colsep, rowsep

Figure 34
(a) There should be no line separating the 1st and 2nd columns' cells, but there should be a line separating the 2nd and 3rd columns' cells. (b) There should be a line separating the 1st and 2nd columns' cells, but no line separating the 2nd and 3rd columns' cells. (c) There first column's cells should have no border on the bottom (excluding the last one), but the 2nd and 3rd columns' cells should. (d) The 1st and 3rd columns' cells should have a border on the bottom, but the 2nd columns' cells should have none (excluding the last cell). (e) There first column's cells should have no border on the bottom (excluding the last one), but the 2nd and 3rd columns' cells should. (f) The 1st and 3rd columns' cells should have a border on the bottom, but the 2nd columns' cells should have none (excluding the last cell).
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
 a1 a2 a3 b1 b2 b3 c1 c2 c3

### align

Figure 35
tgroup: right; 2nd column colspec: lefttgroup: left; 2nd column colspec: righttgroup: left; 2nd column colspec: centertgroup: left; 2nd column colspec: justify
(a) The tgroup is align="right", but the 2nd column should be aligned to the left.(b) The tgroup is align="left", but the 2nd column should be aligned to the right.(c) The tgroup is align="left", but the 2nd column should be aligned to the center.(d) The tgroup is align="left", but the 2nd column should be justified.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test the attribute. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.

### char, charoff

Figure 36
1st colspec: align="char", char="."; 2nd colspec: nothing1st colspec: align="char", char=".", charoff="25"; 2nd colspec: nothing1st colspec: align="char", char=".", charoff="75"; 2nd colspec: nothing
(a) (b) (c)
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah

## COLSPEC attributes inside THEAD and TFOOT

Figure 37
colwidth="72pt"colwidth="1.5in"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 38
colwidth="100px"colwidth="10em"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 39
colwidth="50%"colwidth="150%"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 40
colwidth="10pc"colwidth="10pi"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 41
colwidth="15ex"colwidth="3cm"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 42
colwidth="50mm"
a1a2
a1a2
a1a2
Figure 43
colwidth="3*"colwidth="3*+100px"
(a) This seems to have varying success in HTML.(b) This is probably impossible in HTML.
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2

### colwidth (tfoot)

Figure 44
colwidth="72pt"colwidth="1.5in"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 45
colwidth="100px"colwidth="10em"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 46
colwidth="50%"colwidth="150%"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 47
colwidth="10pc"colwidth="10pi"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 48
colwidth="15ex"colwidth="3cm"
(a) (b)
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2
Figure 49
colwidth="50mm"
a1a2
a1a2
a1a2
Figure 50
colwidth="3*"colwidth="3*+100px"
(a) This seems to have varying success in HTML.(b) This is probably impossible in HTML.
a1a2
a1a2
a1a2
a1a2
a1a2
a1a2

### colsep, rowsep

Figure 51
no tfoot
(a) THEAD: There should be no line separating the 1st and 2nd columns' cells, but there should be a line separating the 2nd and 3rd columns' cells. TBODY: Normal. TFOOT: Opposite of THEAD. (b) THEAD: There should be a line separating the 1st and 2nd columns' cells, but no line separating the 2nd and 3rd columns' cells. TBODY: Normal. TFOOT: Opposite of THEAD. (c) THEAD: There first column's cells should have no border on the bottom, but the 2nd and 3rd columns' cells should. TBODY: Normal. TFOOT: Opposite of THEAD. (d) THEAD: The 1st and 3rd columns' cells should have a border on the bottom, but the 2nd columns' cells should have none. TBODY: Normal. TFOOT: Opposite of THEAD. (e) THEAD: There first column's cells should have no border on the bottom, but the 2nd and 3rd columns' cells should. TBODY: Normal.
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3

### align

Figure 52
tgroup: right; thead: 2nd left; tfoot: 1st left;tgroup: left, thead: 2nd right; tfoot: 1st right;tgroup: left; thead: 2nd center; tfoot: 1st center;tgroup: left; thead: 2nd justify; tfoot: 1st justify;
(a) The TGROUP is align="right", but the 2nd column should be aligned to left in THEAD. TFOOT: 1st column aligned to left. (b) The TGROUP is align="left", but the 2nd column should be aligned to right in THEAD. TFOOT: 1st column aligned to right. (c) The TGROUP is align="left", but the 2nd column should be aligned to center in THEAD. TFOOT: 1st column is center aligned. (d) The TGROUP is align="left", but the 2nd column should be justified in THEAD. TFOOT is justified in 1st column.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.

### char, charoff

Figure 53
(a) THEAD: 1st column: align="char", char="."; TFOOT: 2nd column: align="char", char=".";(b) THEAD: 1st column: align="char", char=".", charoff="25"; TFOOT: 2nd column: align="char", char=".", charoff="25"; (c) THEAD: 1st column: align="char", char=".", charoff="75"; TFOOT: 2nd column: align="char", char=".", charoff="75";
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah

## COLSPEC attributes inside THEAD and TFOOT (without using the colnum attribute)

Figure 54
colwidth="72pt"colwidth="1.5in"
(a) (b)
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
Figure 55
colwidth="100px"colwidth="10em"
(a) (b)
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
Figure 56
colwidth="50%"colwidth="150%"
(a) (b)
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
Figure 57
colwidth="10pc"colwidth="10pi"
(a) (b)
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
Figure 58
colwidth="15ex"colwidth="3cm"
(a) (b)
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
Figure 59
colwidth="50mm"
a1a2 a3
a1a2 a3
a1a2 a3
Figure 60
colwidth="3*"colwidth="3*+100px"
(a) This seems to have varying success in HTML.(b) This is probably impossible in HTML.
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3

### colwidth (tfoot)

Figure 61
colwidth="72pt"colwidth="1.5in"
(a) (b)
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
Figure 62
colwidth="100px"colwidth="10em"
(a) (b)
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
Figure 63
colwidth="50%"colwidth="150%"
(a) (b)
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
Figure 64
colwidth="10pc"colwidth="10pi"
(a) (b)
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
Figure 65
colwidth="15ex"colwidth="3cm"
(a) (b)
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
Figure 66
colwidth="50mm"
a1a2 a3
a1a2 a3
a1a2 a3
Figure 67
colwidth="3*"colwidth="3*+100px"
(a) This seems to have varying success in HTML.(b) This is probably impossible in HTML.
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3
a1a2 a3

### colsep, rowsep

Figure 68
no tfoot
(a) THEAD: There should be no line separating the 1st and 2nd columns' cells, but there should be a line separating the 2nd and 3rd columns' cells. TBODY: Normal. TFOOT: Opposite of THEAD. (b) THEAD: There should be a line separating the 1st and 2nd columns' cells, but no line separating the 2nd and 3rd columns' cells. TBODY: Normal. TFOOT: Opposite of THEAD. (c) THEAD: There first column's cells should have no border on the bottom, but the 2nd and 3rd columns' cells should. TBODY: Normal. TFOOT: Opposite of THEAD. (d) THEAD: The 1st and 3rd columns' cells should have a border on the bottom, but the 2nd columns' cells should have none. TBODY: Normal. TFOOT: Opposite of THEAD. (e) THEAD: There first column's cells should have no border on the bottom, but the 2nd and 3rd columns' cells should. TBODY: Normal.
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3
a1a2a3
b1b2b3
c1c2c3

### align

Figure 69
tgroup: right; thead: 2nd left; tfoot: 1st left;tgroup: left; thead: 2nd right; tfoot: 1st right;tgroup: left; thead: 2nd center; tfoot: 1st center;tgroup: left; thead: 2nd justify; tfoot: 1st justify;
(a) The tgroup is align="right", but the 2nd column should be aligned to the left in THEAD. TFOOT: 1st column left aligns. (b) The tgroup is align="left", but the 2nd column should be aligned to the right in THEAD. TFOOT: 1st column aligns right. (c) The tgroup is align="left", but the 2nd column should be aligned to the center in THEAD. TFOOT: 1st column centered. (d) The tgroup is align="left", but the 2nd column should be justified in THEAD. TFOOT: 1st column justified.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.
long word or phrase short
a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the last.

### char, charoff

Figure 70
(a) THEAD: 1st column: align="char", char="."; TFOOT: 2nd column: align="char", char="."; (b) THEAD: 1st column: align="char", char=".", charoff="25"; TFOOT: 2nd column: align="char", char=".", charoff="25"; (c) THEAD: 1st column: align="char", char=".", charoff="75"; TFOOT: 2nd column: align="char", char=".", charoff="75";
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah
1. blah 22222. blah
aa. blah b. blah

## SPANSPEC attributes

### colsep, rowsep

Figure 71
c1c2: colsep=0; c2c3: colsep=1; c3c4: no colsepc1c2: rowsep=0; c2c3: rowsep=1; c3c4: no rowsepNO TFOOT / c1c2: rowsep=0; c2c3: rowsep=1; c3c4: no rowsepNO THEAD or TFOOT / c1c2: rowsep=0; c2c3: rowsep=1; c3c4: no rowsep
(a) (b) (c) (d)
a1 a3a4 a5
b1 b2 b4b5
c1c2 c3 c5
a1 a3a4 a5
b1 b2 b4b5
c1c2 c3 c5
a1 a3a4 a5
b1 b2 b4b5
c1c2 c3 c5
a1 a3 a4
b1 b2 b4
c1 c2 c3
a1 a3 a4
b1 b2 b4
c1 c2 c3
a1 a3 a4
b1 b2 b4
c1 c2 c3
a1 a3 a4
b1 b2 b4
c1 c2 c3
a1 a3 a4
b1 b2 b4
c1 c2 c3
 a1 a3 a4 b1 b2 b4 c1 c2 c3

### align

Figure 72
c1c2="left", c2c3="right", c3c4="center", c4c5="justify", c5c6=no align
spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah
blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the longest.
another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align.
short another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells a long string of text, used to encourage wrapping in order to test align.
a long string of text, used to encourage wrapping in order to test align. short another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells
spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah
blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the longest.
another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align.
short another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells a long string of text, used to encourage wrapping in order to test align.
a long string of text, used to encourage wrapping in order to test align. short another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells
spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah
blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the longest.
another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align.
short another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells a long string of text, used to encourage wrapping in order to test align.
a long string of text, used to encourage wrapping in order to test align. short another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells

### char, charoff

Figure 73
c2c3: align="char", char="."
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
Figure 74
c2c3: align="char", char=".", charoff="25"c2c3: align="char", char=".", charoff="75"
(a) (b)
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah

## SPANSPEC attributes (without using the colnum attribute in COLSPEC)

### colsep, rowsep

Figure 75
c1c2: colsep=0; c2c3: colsep=1; c3c4: no colsepc1c2: rowsep=0; c2c3: rowsep=1; c3c4: no rowsepNO TFOOT / c1c2: rowsep=0; c2c3: rowsep=1; c3c4: no rowsepNO THEAD or TFOOT / c1c2: rowsep=0; c2c3: rowsep=1; c3c4: no rowsep
(a) (b) (c) (d)
a1 a3a4 a5
b1 b2 b4b5
c1c2 c3 c5
a1 a3a4 a5
b1 b2 b4b5
c1c2 c3 c5
a1 a3a4 a5
b1 b2 b4b5
c1c2 c3 c5
a1 a3 a4
b1 b2 b4
c1 c2 c3
a1 a3 a4
b1 b2 b4
c1 c2 c3
a1 a3 a4
b1 b2 b4
c1 c2 c3
a1 a3 a4
b1 b2 b4
c1 c2 c3
a1 a3 a4
b1 b2 b4
c1 c2 c3
 a1 a3 a4 b1 b2 b4 c1 c2 c3

### align

Figure 76
align="right", align="left"
spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah
blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the longest.
another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align.
short another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells a long string of text, used to encourage wrapping in order to test align.
a long string of text, used to encourage wrapping in order to test align. short another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells
spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah
blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the longest.
another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align.
short another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells a long string of text, used to encourage wrapping in order to test align.
a long string of text, used to encourage wrapping in order to test align. short another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells
spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah
blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align. another string, but not as long as the longest.
another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells short a long string of text, used to encourage wrapping in order to test align.
short another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells a long string of text, used to encourage wrapping in order to test align.
a long string of text, used to encourage wrapping in order to test align. short another string, but not as long as the longest. blah blah blah blah blah blaaaaaaaaaah spans 2 cells spans 2 cells spans 2 cells

### char, charoff

Figure 77
c2c3: align="char", char="."
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
Figure 78
c2c3: align="char", char=".", charoff="25"c2c3: align="char", char=".", charoff="75"
(a) (b)
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2 1.2 blah

### valign

Figure 79
valign="top"valign="middle"valign="bottom"no valign attribute (default)
(a) The table headers should vertically align to the top of the table cell.(b) The table headers should vertically align to the middle of the table cell.(c) The table headers should vertically align to the bottom of the table cell.(d) The table headers should vertically align to the bottom of the table cell by default.
a1: A long string of text, intended to wrap more than one line in order for its neighbor cell to demonstrate the valign attribute of thead. a2
b1b2
a1: A long string of text, intended to wrap more than one line in order for its neighbor cell to demonstrate the valign attribute of thead. a2
b1b2
a1: A long string of text, intended to wrap more than one line in order for its neighbor cell to demonstrate the valign attribute of thead. a2
b1b2
a1: A long string of text, intended to wrap more than one line in order for its neighbor cell to demonstrate the valign attribute of thead. a2
b1b2

## TFOOT attributes

### valign

Figure 80
valign="top"valign="middle"valign="bottom"no valign attribute (default)
(a) The table footers should vertically align to the top of the table cell.(b) The table footers should vertically align to the middle of the table cell.(c) The table footers should vertically align to the bottom of the table cell.(d) The table footers should vertically align to the top of the table cell by default.
 a2 a1: A long string of text, intended to wrap more than one line in order for its neighbor cell to demonstrate the valign attribute of tfoot. b1 b2
 a2 a1: A long string of text, intended to wrap more than one line in order for its neighbor cell to demonstrate the valign attribute of tfoot. b1 b2
 a2 a1: A long string of text, intended to wrap more than one line in order for its neighbor cell to demonstrate the valign attribute of tfoot. b1 b2
 a2 a1: A long string of text, intended to wrap more than one line in order for its neighbor cell to demonstrate the valign attribute of tfoot. b1 b2

## TBODY attributes

### valign

Figure 81
valign="top"valign="middle"valign="bottom"no valign attribute (default)
(a) The text should vertically align to the top of the table cell.(b) The text should vertically align to the middle of the table cell.(c) The text should vertically align to the bottom of the table cell.(d) The text should vertically align to the top of the table cell by default.
 a1: A long string of text, intended to wrap more than one line in order for its neighbor cell to demonstrate the valign attribute of tbody. a2
 a1: A long string of text, intended to wrap more than one line in order for its neighbor cell to demonstrate the valign attribute of tbody. a2
 a1: A long string of text, intended to wrap more than one line in order for its neighbor cell to demonstrate the valign attribute of tbody. a2
 a1: A long string of text, intended to wrap more than one line in order for its neighbor cell to demonstrate the valign attribute of tbody. a2

## ROW attributes

### valign

Figure 82
valign="top", no attributevalign="middle", no attributevalign="bottom", no attributedefault valign in rows of thead, tbody, & tfoot
(a) The first row should vertically align to the top of the table cell. The 2nd row also should, but only by default. (b) The first row should vertically align to the middle of the table cell. The 2nd row should vertically align to the top (by default). (c) The first row should vertically align to the bottom of the table cell. The 2nd row should vertically align to the top (by default). (d) These rows should vertically align to the top by default, except for the rows in thead, which should vertically align to the bottom.
a1: wrap wrap wrap wrap a2
b1: wrap wrap wrap wrap b2
a1: wrap wrap wrap wrap a2
b1: wrap wrap wrap wrap b2
a1: wrap wrap wrap wrap a2
b1: wrap wrap wrap wrap b2
a1: wrap wrap wrap wrap a2
b1: wrap wrap wrap wrap b2
a1: wrap wrap wrap wrap a2
b1: wrap wrap wrap wrap b2
a1: wrap wrap wrap wrap a2
b1: wrap wrap wrap wrap b2
a1: wrap wrap wrap wrap a2
b1: wrap wrap wrap wrap b2
a1: wrap wrap wrap wrap a2
b1: wrap wrap wrap wrap b2
a1: wrap wrap wrap wrap a2
b1: wrap wrap wrap wrap b2
a1: wrap wrap wrap wrap a2
b1: wrap wrap wrap wrap b2
c1: wrap wrap wrap wrap c2

### rowsep

Figure 83
rowsep="0", rowsep="1", rowsep="0"rowsep="0", rowsep="1", rowsep="0" (no foot)rowsep="1", rowsep="0", rowsep="1"rowsep="1", rowsep="0", rowsep="1" (no thead or tfoot)
(a) Horizontally: line, no line, line, line(b) Horizontally: line, no line, line, line(c) Horizontally: line, line, no line, line(d) Horizontally: line, line, no line, line
a1 a2
b1 b2
c1 c2
a1 a2
b1 b2
c1 c2
a1 a2
b1 b2
c1 c2
a1 a2
b1 b2
c1 c2
a1 a2
b1 b2
c1 c2
a1 a2
b1 b2
c1 c2
a1 a2
b1 b2
c1 c2
a1 a2
b1 b2
c1 c2
 a1 a2 b1 b2 c1 c2

## ENTRY attributes

### morerows

Figure 84
3 rows, morerows="2"3 rows, morerows="5"testing colseps/borders
(a) (b) This 2nd one should cause error. It does not need to be accounted for in XSL.(c) (d) a slightly more complicated table to test a table with both morerows and colseps in it(e) testing for presence of @morerows to the right of the last cell in a row
 a1 a2 b2 c2
 a1 a2 b2 c2
 a1 a2 b1 c1 c2
 a1 a2 a3 b3 b4 c1 c2 c3 d1 d3 (colsep off) e1
 . . . . . . . . .
Figure 85
Attempts to break things using morerows
an attempt at breaking last row detection (or whatever else)
(a)
 a1 a2 a3 a4 a5 a6 a7 b1 b2b3 b4 b5 b6b7 c1 c4 c5 d1 d4d5 e1
an attempt at breaking last row detection (or anything else)
(b)
 a1 a2 a3 a4 a5 a6 a7 b1b2 b3 b4 b5b6 b7 c3 c4 c7 d3d4 d7 e7
again
(c)
 a1 a2 a3 a4 b1 b3
 a1 a2 a3 a4 b1 b2
 a1 a2 a3 a4
morerows in thead, tbody w/ tfoot (and subsequent tgroup)
(d)
a1 a2
b1
c1 c2
d1
e1 e2
f1
 a1
another breaking attempt
(e)
a1
a2.a1 a2.a2
a2.b1
a2.a1 a2.a2
a2.b1
b1 b2
Figure 86
entrytbl tests with morerows
testing colseps/borders
(a) (b)
a1 a2
 b1 b2 b3 b4
c1 c2
blah code (ignore)
Figure 87
big nasty tables to test colnum determination
(a) (b)
 a b c d e f g h i j k l m n o p q r s t u v w x y aa bb cc dd ee ff gg hh ii jj kk ll mm nn
 a b c d e f g h i j k l m n o p q r s t u v x y z aa bb cc dd ee ff gg hh
Figure 88
big nasty tables with incorrect cols attribute, extra entries, etc.
(a)
 a b c d e f g h i j k l m n o p q r s t u v w x y aa bb cc dd ee ff gg hh . . 234 . . ii jj kk ll mm nn
(b)
 a b c d e f g h i j k l m . n o p q r s t u v w . x y z aa bb cc . dd ee ff . gg hh .
(c)
 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
(d) An actual example of morerows use copied from National Instruments.
Function Signal PIN DTE DCE
Data TxD 3 Output Input
RxD 2 Input Output
Handshake RTS 7 Output Input
CTS 8 Input Output
DSR 6 Input Output
DCD 1 Input Output
STR 4 Output Input
Common Com 5 - -
RI 9 Output Input
(e) used for timing tests
 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
(f) leaving a bunch of entries out in one row to see if it messes up another
 . . . . . . . . . . . . . . . . . . . . . . . . . .
(g) normal morerows table, except that the cols attribute is equal to '1'
 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

### colsep, rowsep

Figure 89
1st row: colsep="1", colsep="0", colsep="1", 2nd colsep="0", colsep="1", colsep="0"1st row: rowsep="1", rowsep="0"; 2nd row: rowsep="0", rowsep="1"; 3rd row: rowsep="1", rowsep="0"NO TFOOT: 1st row: rowsep="1", rowsep="0"; 2nd row: rowsep="0", rowsep="1"; 3rd row: rowsep="1", rowsep="0"TBODY ONLY: 1st row: rowsep="1", rowsep="0"; 2nd row: rowsep="0", rowsep="1"; 3rd row: rowsep="1", rowsep="0"
(a) (b) (c) (d)
a1 a2 a2
b1 b2 b2
a1 a2 a2
b1 b2 b2
a1 a2 a2
b1 b2 b2
a1 a2
b1 b2
c1 c2
a1 a2
b1 b2
c1 c2
a1 a2
b1 b2
c1 c2
a1 a2
b1 b2
c1 c2
a1 a2
b1 b2
c1 c2
 a1 a2 b1 b2 c1 c2

### align

Figure 90
alonglonglongword short (left) shortshortshortword long (right) a longlonglongword short (center) a long shortshortshortword (justify) a longlonglongword (no attribute)
a longlonglongword short (center) a long shortshortshortword (justify) alonglonglongword short (left) shortshortshortword long (right) a longlonglongword (no attribute)
a long shortshortshortword (justify) a longlonglongword short (center) shortshortshortword long (right) alonglonglongword short (left) a longlonglongword (no attribute)

### valign

Figure 91
wrapper, top, middle, bottom, no attribute (default)
wrapper top middle bottom not attribute (default)
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p q r s t u v w x y z abc abc abc abc
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p q r s t u v w x y z abc abc abc abc
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p q r s t u v w x y z abc abc abc abc

### namest, nameend

Figure 92
(a) (b) (c)
namest="c1" nameend="c3"
.. ..
.. ..
namest="c1" nameend="c3"
.. ..
spanning 3 in tbody .
.. ..
namest="c1" nameend="c3"
.. ..
.. ..
spanning 3 in tfoot .
Figure 93: Backwards: this should result in a parser error and does not need to be accounted for in the xsl.
(a) (b) (c)
namest="c3" nameend="c1"
.. ..
.. ..
namest="c3" nameend="c1"
.. ..
spanning 3 in tbody??? .
.. ..
namest="c3" nameend="c1"
.. ..
.. ..
spanning 3 in tfoot??? .
Figure 94: Non-existent colnames: this should result in a parser error and does not need to be accounted for in the xsl.
(a) (b) (c)
namest="1x" nameend="3x"
spanning what??? .
.. ..
.. ..
namest="1x" nameend="3x"
.. ..
spanning what??? .
.. ..
namest="1x" nameend="3x"
.. ..
.. ..
spanning what??? .
Figure 95: namest, but no nameend: this should go to next column, and not span any, at least according to this page.
(a) (b) (c) (d)
namest="c1"
should span nothing (I think) . . .
.. ..
.. ..
namest="c1"
.. ..
should span nothing (I think) . . .
.. ..
namest="c1"
.. ..
.. ..
should span nothing (I think) . . .
namest="c1"
.. .. ..
.. should span nothing (I think) . ..
.. .. ..
Figure 96: nameend, but no namest: should be ignored. Treat as if no attribute at all.
(a) (b) (c)
nameend="c3"
spanning what??? .
.. ..
.. ..
nameend="c3"
.. ..
spanning what??? .
.. ..
nameend="c3"
.. ..
.. ..
spanning what??? .
Figure 97: namest is same as nameend. This should probably create a colspan="1" in the HTML.
(a) (b) (c)
namest="c1", nameend="c1"
hopefully doesn't span . .
. . .
. . .
namest="c1", nameend="c1"
. . .
hopefully doesn't span . .
. . .
namest="c1", nameend="c1"
. . .
. . .
hopefully doesn't span . .
Figure 98: The above tables have colsep="0". If the cells were successfully spanned via a spanname attribute, then the cells in that row fully occupy all 3 columns, and the cells are separated by a border (colsep="1"). If the cells were successully spanned via namest and nameend attributes, then the cells in that fully occupy all 3 columns but are not separated by a border.
ignore tgroup's colspecs and spanspecs in thead and tfootignore spanname and go w/ namest and nameend when there are colspecs under thead or tfootignore spanname because of single colspec in thead or tfootweird or non-existent spannames
(a) (b) (c) (d)
h1,h2 .
c1,c2 .
c1c2 .
f1,f2 .
h1,h2 .
c1,c2 .
c1c2 .
f1,f2 .
h1,h2 .
c1,c2 .
c1c2 .
f1,f2 .
h1,h2 and c1c2 .
c1c2 and c1,c2 .
c1,c2 and c1c2 .
f1,f2 and c1c2 .
h1,h2 .
c1c2 and c1,c2 .
c1c2 and c1,c2 .
f1,f2 .
h1,h2 and c1c2 .
c1c2 and c1,c2 .
c1,c2 and c1c2 .
f1,f2 and c1c2 .
c1,c2 .
c1c2 .
c1,c2 .
 c1c2 . empty string . space .

### namest, nameend (without colnums)

Figure 99
(a) (b) (c)
namest="c1" nameend="c3"
.. ..
.. ..
namest="c1" nameend="c3"
.. ..
spanning 3 in tbody .
.. ..
namest="c1" nameend="c3"
.. ..
.. ..
spanning 3 in tfoot .
Figure 100: Backwards: this should result in a parser error and does not need to be accounted for in the xsl.
(a) (b) (c)
namest="c3" nameend="c1"
.. ..
.. ..
namest="c3" nameend="c1"
.. ..
spanning 3 in tbody??? .
.. ..
namest="c3" nameend="c1"
.. ..
.. ..
spanning 3 in tfoot??? .
Figure 101: Non-existent colnames: this should result in a parser error and does not need to be accounted for in the xsl.
(a) (b) (c)
namest="1x" nameend="3x"
spanning what??? .
.. ..
.. ..
namest="1x" nameend="3x"
.. ..
spanning what??? .
.. ..
namest="1x" nameend="3x"
.. ..
.. ..
spanning what??? .
Figure 102: namest, but no nameend: this should go to next column, and not span any, at least according to this page.
(a) (b) (c) (d)
namest="c1"
should span nothing (I think) . . .
.. ..
.. ..
namest="c1"
.. ..
should span nothing (I think) . . .
.. ..
namest="c1"
.. ..
.. ..
should span nothing (I think) . . .
namest="c1"
.. .. ..
.. should span nothing (I think) . ..
.. .. ..
Figure 103: nameend, but no namest: should be ignored. Treat as if no attribute at all.
(a) (b) (c)
nameend="c1"
spanning what??? .
.. ..
.. ..
nameend="c3"
.. ..
spanning what??? .
.. ..
nameend="c3"
.. ..
.. ..
spanning what??? .
Figure 104: namest is same as nameend. This should probably create a colspan="1" in the HTML.
(a) (b) (c)
namest="c1", nameend="c1"
hopefully doesn't span . .
. . .
. . .
namest="c1", nameend="c1"
. . .
hopefully doesn't span . .
. . .
namest="c1", namest="c1"
. . .
. . .
hopefully doesn't span . .
Figure 105: The above tables have colsep="0". If the cells were successfully spanned via a spanname attribute, then the cells in that row fully occupy all 3 columns, and the cells are separated by a border (colsep="1"). If the cells were successully spanned via namest and nameend attributes, then the cells in that fully occupy all 3 columns but are not separated by a border.
ignore tgroup's colspecs and spanspecs in thead and tfootignore spanname and go w/ namest and nameend when there are colspecs under thead or tfootignore spanname because of single colspec in thead or tfootweird or non-existent spannames
(a) (b) (c) (d)
h1,h2 .
c1,c2 .
c1c2 .
f1,f2 .
h1,h2 .
c1,c2 .
c1c2 .
f1,f2 .
h1,h2 .
c1,c2 .
c1c2 .
f1,f2 .
h1,h2 and c1c2 .
c1c2 and c1,c2 .
c1,c2 and c1c2 .
f1,f2 and c1c2 .
h1,h2 .
c1c2 and c1,c2 .
c1c2 and c1,c2 .
f1,f2 .
h1,h2 and c1c2 .
c1c2 and c1,c2 .
c1,c2 and c1c2 .
f1,f2 and c1c2 .
c1,c2 .
c1c2 .
c1,c2 .
 c1c2 . empty string . space .

### char, charoff

Figure 106
1st column: align="char", char="." (except tfoot); 2nd column: no attributes1st column: align="char", char=".", charoff="25" (except tfoot); 2nd column: no align1st column: align="char", char=".", charoff="75" (except tfoot); 2nd column: no align
(a) The first column should be aligned to the period, except in the tfoot, whereas the other column should be aligned to the left (default). (b) The first column should be aligned to the period, except in the tfoot, whereas the other column should be aligned to the left (default). (c) The first column should be aligned to the period, except in the tfoot, whereas the other column should be aligned to the left (default). I don't think the char alignment will work in any browser.
1.2 blah 1.2 blah
blah 1.2 blah 1.2
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah
1.2 blah blah 1.2
blah 1.2 1.2 blah

### must entries be in sequential order, or can that be determined by colname?

Figure 107: Known bug.
(a) The colspecs and entrys are out of order, but are correctly referenced in terms of colnum and colname attributes. (b) The colspecs are in order, but are referenced (via colname attributes) by out-of-order entrys.
 1 4 3 2
 1 4 3 2

## ENTRYTBL attributes

### colsep

Figure 108
1st row: colsep="1", colsep="0", colsep="0". 2nd row: colsep="one", no attribute, no attribute
 thead entrytbl(0) tbody wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrapwrapwrapwrapwrap thead entrytbl(0) tbody wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrapwrapwrapwrapwrap
 thead entrytbl(n/a) tbody thead entrytbl(n/a) tbody wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap
 thead entrytbl(n/a) tbody thead entrytbl(n/a) tbody wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap
 tbody entrytbl(1) tbody tbody entrytbl(1) tbody
tbody entrytbl(0) tbodytbody entrytbl(0) tbody
tbody entrytbl(0) tbodytbody entrytbl(0) tbody
 tbody entrytbl(one) tbody tbody entrytbl(one) tbody
tbody entrytbl(n/a) tbodytbody entrytbl(n/a) tbody
tbody entrytbl(n/a) tbodytbody entrytbl(n/a) tbody
tfoot entrytbl(1) tbodytfoot entrytbl(1) tbody
 tfoot entrytbl(0) tbody tfoot entrytbl(0) tbody
 tfoot entrytbl(0) tbody tfoot entrytbl(0) tbody
tfoot entrytbl(one) tbodytfoot entrytbl(one) tbody
 tfoot entrytbl(n/a) tbody tfoot entrytbl(n/a) tbody
 tfoot entrytbl(n/a) tbody tfoot entrytbl(n/a) tbody

### rowsep

Figure 109
1st row: rowsep="1", rowsep="0"; 2nd row: rowsep="one", no attribute
 thead entrytbl(n/a) tbody thead entrytbl(n/a) tbody wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap wrap
 tbody entrytbl(1) tbody tbody entrytbl(1) tbody
tbody entrytbl(0) tbodytbody entrytbl(0) tbody
 tbody entrytbl(one) tbody tbody entrytbl(one) tbody
tbody entrytbl(n/a) tbodytbody entrytbl(n/a) tbody
tfoot entrytbl(1) tbodytfoot entrytbl(1) tbody
 tfoot entrytbl(0) tbody tfoot entrytbl(0) tbody
tfoot entrytbl(one) tbodytfoot entrytbl(one) tbody
 tfoot entrytbl(n/a) tbody tfoot entrytbl(n/a) tbody

### align

Figure 110: THEAD: left, right, center; justify, char, no attribute. TFOOT: right, center, left; char, no attribute, justify. TBODY: center, left, right; no attribute, justify, char.
leftfourfourfourfour threethreethree twotwo one 0
leftfourfourfourfour threethreethree twotwo one 0
rightfourfourfourfour threethreethree twotwo one 0
rightfourfourfourfour threethreethree twotwo one 0
centerfourfourfourfour threethreethree twotwo one 0
centerfourfourfourfrou threethreethree twotwo one 0
justifyfourfourfourfour threethreethree twotwo one 0
justifyfourfourfourfour threethreethree twotwo one 0
charfourfourfourfour threethreethree twotwo one 0
charfourfourfourfour threethreethree twotwo one 0
nothingfourfourfourfour threethreethree twotwo one 0
nothingfourfourfourfour threethreethree twotwo one 0
centerfourfourfourfour threethreethree twotwo one 0
centerfourfourfourfour threethreethree twotwo one 0
leftfourfourfourfour threethreethree twotwo one 0
leftfourfourfourfour threethreethree twotwo one 0
rightfourfourfourfour threethreethree twotwo one 0
rightfourfourfourfour threethreethree twotwo one 0
nothingfourfourfourfour threethreethree twotwo one 0
nothingfourfourfourfour threethreethree twotwo one 0
justifyfourfourfourfour threethreethree twotwo one 0
justifyfourfourfourfour threethreethree twotwo one 0
charfourfourfourfour threethreethree twotwo one 0
charfourfourfourfour threethreethree twotwo one 0
rightfourfourfourfour threethreethree twotwo one 0
rightfourfourfourfour threethreethree twotwo one 0
centerfourfourfourfour threethreethree twotwo one 0
centerfourfourfourfour threethreethree twotwo one 0
leftfourfourfourfour threethreethree twotwo one 0
leftfourfourfourfour threethreethree twotwo one 0
charfourfourfourfour threethreethree twotwo one 0
charfourfourfourfour threethreethree twotwo one 0
nothingfourfourfourfour threethreethree twotwo one 0
nothingfourfourfourfour threethreethree twotwo one 0
justifyfourfourfourfour threethreethree twotwo one 0
justifyfourfourfourfour threethreethree twotwo one 0

### char, charoff

Figure 111
no charoff, charoff="25", charoff="75"
1.1 blah
blah 1.2
01.3 blah
blah 1.1
1.2 blah
blah 01.3
1.1 blah
blah 1.2
01.3 blah
blah 1.1
1.2 blah
blah 01.3
1.1 blah
blah 1.2
01.3 blah
blah 1.1
1.2 blah
blah 01.3
blah 1.1
1.2 blah
blah 01.3
1.1 blah
blah 1.2
01.3 blah
blah 1.1
1.2 blah
blah 01.3
1.1 blah
blah 1.2
01.3 blah
blah 1.1
1.2 blah
blah 01.3
1.1 blah
blah 1.2
01.3 blah
1.1 blah
blah 1.2
01.3 blah
blah 1.1
1.2 blah
blah 01.3
1.1 blah
blah 1.2
01.3 blah
blah 1.1
1.2 blah
blah 01.3
1.1 blah
blah 1.2
01.3 blah
blah 1.1
1.2 blah
blah 01.3

### namest, nameend

Figure 112
 this entrytbl should span two columns this entrytbl should span two columns this entrytbl should span two columns this entrytbl should span two columns
third column (in an entry)
 this entrytbl should span no columns this entrytbl should span no columns this entrytbl should span no columns this entrytbl should span no columns
 this entrytbl should span the last two columns this entrytbl should span the last two columns this entrytbl should span the last two columns this entrytbl should span the last two columns
1 2 3
 this entrytbl should span all 3 cols this entrytbl should span all 3 cols this entrytbl should span all 3 cols this entrytbl should span all 3 cols

### namest, nameend (without colnums)

Figure 113
 this entrytbl should span two columns this entrytbl should span two columns this entrytbl should span two columns this entrytbl should span two columns
third column (in an entry)
 this entrytbl should span no columns this entrytbl should span no columns this entrytbl should span no columns this entrytbl should span no columns
 this entrytbl should span the last two columns this entrytbl should span the last two columns this entrytbl should span the last two columns this entrytbl should span the last two columns
1 2 3
 this entrytbl should span all 3 cols this entrytbl should span all 3 cols this entrytbl should span all 3 cols this entrytbl should span all 3 cols

### other entrytbl stuff

Figure 114
entrytbl, but not on the right or bottomcolwidth in entrytbl and entrytbl in colwidthcolwidth in entrytbl and entrytbl in colwidth
(a) (b) The "a1" column has a width of 3*, and the "aa2/aa4" has a width of 2*. I think it appears to work only in the "a1" column because of browser deficiency (the code seems to be there). (c) Pretty much the same as the last, but with 2in and 1in instead of asterisked widths because those seem to work better in IE.
 1.1 1.2 1.3 1.4
2
3 4
a1
 aa1 aa2 aa3 aa4
 bb1 bb2 bb3 bb4
b2
a1
 aa1 aa2 aa3 aa4
 bb1 bb2 bb3 bb4
b2

## Multiple TGROUPs

Figure 115
frame="all"frame="none"1st tgroup no rowsep, 2nd tgroup no colsep
(a) (b) (c)
1.h.a.1 1.h.a.2
1.h.b.1 1.h.b.2
1.b.a.1 1.b.a.2
1.b.b.1 1.b.b.2
1.f.a.1 1.f.a.2
1.f.b.1 1.f.b.2
2.h.a.1 2.h.a.2 2.h.a.3
2.h.b.1 2.h.b.2 2.h.b.3
2.b.a.1 2.b.a.2 2.b.a.3
2.b.b.1 2.b.b.2 2.b.b.3
2.f.a.1 2.f.a.2 2.f.a.3
2.f.b.1 2.f.b.2 2.f.b.3
1.h.a.1 1.h.a.2
1.h.b.1 1.h.b.2
1.b.a.1 1.b.a.2
1.b.b.1 1.b.b.2
1.f.a.1 1.f.a.2
1.f.b.1 1.f.b.2
2.h.a.1 2.h.a.2 2.h.a.3
2.h.b.1 2.h.b.2 2.h.b.3
2.b.a.1 2.b.a.2 2.b.a.3
2.b.b.1 2.b.b.2 2.b.b.3
2.f.a.1 2.f.a.2 2.f.a.3
2.f.b.1 2.f.b.2 2.f.b.3
1.h.a.1 1.h.a.2
1.h.b.1 1.h.b.2
1.b.a.1 1.b.a.2
1.b.b.1 1.b.b.2
1.f.a.1 1.f.a.2
1.f.b.1 1.f.b.2
2.h.a.1 2.h.a.2 2.h.a.3
2.h.b.1 2.h.b.2 2.h.b.3
2.b.a.1 2.b.a.2 2.b.a.3
2.b.b.1 2.b.b.2 2.b.b.3
2.f.a.1 2.f.a.2 2.f.a.3
2.f.b.1 2.f.b.2 2.f.b.3
 morerows 2 3 b c

## Nesting/Inheritance Tests using COLSEP

### Do COLSEPs in ENTRY override COLSEPs in ancestor elements (or not, if they are not supposed to)?

Figure 116
ENTRY vs. TABLE
table: no attribute
(a)
no attribute 1 0 ignore
 no attribute 1 0 ignore
ignore ignore ignore
table: 1
(b)
no attribute 1 0 ignore
 no attribute 1 0 ignore
ignore ignore ignore
table: 0
(c)
no attribute 1 0 ignore
 no attribute 1 0 ignore
ignore ignore ignore
Figure 117: The 1st tgroup has no colsep attribute. The 2nd tgroup has colsep="1". The 3rd tgroup has colsep="0".
ENTRY vs. TGROUP
tg1: no attribute, tg2: 1, tg3: 0
no attribute 1 0 ignore
 no attribute 1 0 ignore
ignore ignore ignore
no attribute 1 0 ignore
 no attribute 1 0 ignore
ignore ignore ignore
no attribute 1 0 ignore
 no attribute 1 0 ignore
ignore ignore ignore
Figure 118
ENTRY vs. COLSPEC (in TGROUP)
tg1cs: no attribute, tg2cs: 1, tg3cs: 0