Skip to content Skip to navigation

OpenStax-CNX

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

Navigation

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, Unstretched Caption

Figure 1
Tall and Narrow Media, Without Caption
Tall and Narrow Media, Without Caption (tall.png)

No Subfigures, Short Unstretched Caption

Figure 2: Damn.
Figure 2 (tall.png)

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
      please
          
just use
                 your
    imagination
this last line is longer than the rest to see how well the caption stretches
        

Horizontal Subfigures, Unstretched Figure

Figure 4
Tall and Narrow Media, Without CaptionShort and Wide Media
(a) The picture is tall and narrow. Some people are tall and narrow. Additionally, some trees are tall and narrow. Thus, there are many things that could fill this picture. (b) This picture is short and wide. Most people aren't shaped that way, unless they are lying down.
Tall and Narrow Media, Without Caption (tall.png)Short and Wide Media (wide.png)

Horizontal Subfigures, Stretched Figure

Figure 5: I don't have anything to say about this figure, except that I don't like it very much.
Name of Figure
Tall and Narrow MediaShort and Wide Media
(a) This picture is tall and narrow. Some people are tall and narrow. Additionally, some trees are tall and narrow. Thus, there are many things that could fill this picture. (b) (c) This picture is tall and narrow.
Tall and Narrow Media (tall.png)Short and Wide Media (wide.png)Figure 5(c) (tall.png)

Vertical Subfigures, Unstretched Figure

Figure 6
Your Name Goes Here, Without Caption
Square Media
(a) This picture is square. It's width is equal to it's height.
Square Media (square.png)
Short and Wide Media
(b)
Short and Wide Media (wide.png)
Tall and Narrow Media
(c) This picture is rectangular as well. However, it is taller than it is wide.
Tall and Narrow Media (tall.png)

Vertical Subfigures, Stretched Figure

Figure 7: This is the caption for the figure above. This figure, which contains all the subfigures, is fixed at a width of 50% of the screen. If any subfigure is wider than this caption, the figure will stretch itself for it, but not for a large caption, as can be seen by this long caption. Brilliant, eh? Let's see, will it work only with CSS? More length. More length. More length. More length.
(a) This is a square. It's width is equal to it's height.
Figure 7(a) (square.png)
Name here
(b) The above is wider than it is tall

This is some              pretend codeblock
     please
        
just use
          your imagination
this last line will be longer to see if the table will stretch well.  a little longer.
          
Name of this figure, which is ridiculously longer than the size of the subfigure, and is also longer than the 50% which will normally be the width of the figure. Making it even longer.
(c)

	      Name of this figure, which is ridiculously longer than
            the size of the subfigure, and is also longer than the 50%
            which will normally be the width of the figure.  Making it
            even longer.   (tall.png)
Figure 8: This image should have a height attribute and alt attribute via param elements.
Testing params
This image has an alt attribute
Figure 9: Though these images have the same size on screen, they will have different sizes in the PDF (print) version, because they all have different print resolutions. This is useful to change when using images such as screenshots, which appear normal on screen, but too large and pixely in print.
Testing different print resolutions
(a) 72dpi(b) 150dpi(c) 300dpi
Figure 9(a) (square-72.png)Figure 9(b) (square-150.png)Figure 9(c) (square-300.png)

Figure 10
name and caption on table
one tgroupmore than one tgroup
(a) (b)
table name text
table caption text
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
a1a2
b1b2
c1c2

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
a1a2
b1b2

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
no tfootno thead or tfoot
(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
a1a2a3
b1b2b3
c1c2c3

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
no tfootno thead or tfoot
(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
a1a2a3
b1b2b3
c1c2c3

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

colwidth (thead)

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)

colwidth (thead)

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

THEAD attributes

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.
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 tfoot. 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 tfoot. 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 tfoot. 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 tfoot. a2

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
in theadin tbodyin tfoot
(a) (b) (c)
namest="c1" nameend="c3"
spanning 3 in thead .
.. ..
.. ..
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"
spanning 3 in thead??? .
.. ..
.. ..
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
in theadin tbodyin tfoot
(a) (b) (c)
namest="c1" nameend="c3"
spanning 3 in thead .
.. ..
.. ..
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"
spanning 3 in thead??? .
.. ..
.. ..
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(1) theadthead entrytbl(1) thead
thead entrytbl(1) tbodythead entrytbl(1) tbody
thead entrytbl(0) tbodythead entrytbl(0) tbody
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(one) theadthead entrytbl(one) thead
thead entrytbl(one) tbodythead entrytbl(one) tbody
thead entrytbl(n/a) tbodythead 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) tbodythead 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) tbodytbody entrytbl(1) tbody
tbody entrytbl(0) theadtbody entrytbl(0) thead
tbody entrytbl(0) tbodytbody entrytbl(0) tbody
tbody entrytbl(0) theadtbody entrytbl(0) thead
tbody entrytbl(0) tbodytbody entrytbl(0) tbody
tbody entrytbl(one) tbodytbody entrytbl(one) tbody
tbody entrytbl(n/a) theadtbody entrytbl(n/a) thead
tbody entrytbl(n/a) tbodytbody entrytbl(n/a) tbody
tbody entrytbl(n/a) theadtbody entrytbl(n/a) thead
tbody entrytbl(n/a) tbodytbody entrytbl(n/a) tbody
tfoot entrytbl(1) theadtfoot entrytbl(1) thead
tfoot entrytbl(1) tbodytfoot entrytbl(1) tbody
tfoot entrytbl(0) tbodytfoot entrytbl(0) tbody
tfoot entrytbl(0) tbodytfoot entrytbl(0) tbody
tfoot entrytbl(one) theadtfoot entrytbl(one) thead
tfoot entrytbl(one) tbodytfoot entrytbl(one) tbody
tfoot entrytbl(n/a) tbodytfoot entrytbl(n/a) tbody
tfoot entrytbl(n/a) tbodytfoot entrytbl(n/a) tbody

rowsep

Figure 109
1st row: rowsep="1", rowsep="0"; 2nd row: rowsep="one", no attribute
thead entrytbl(1) theadthead entrytbl(1) thead
thead entrytbl(1) tbodythead entrytbl(1) tbody
thead entrytbl(0) tbodythead entrytbl(0) tbody
thead entrytbl(one) theadthead entrytbl(one) thead
thead entrytbl(one) tbodythead entrytbl(one) tbody
thead entrytbl(n/a) tbodythead 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) tbodytbody entrytbl(1) tbody
tbody entrytbl(0) theadtbody entrytbl(0) thead
tbody entrytbl(0) tbodytbody entrytbl(0) tbody
tbody entrytbl(one) tbodytbody entrytbl(one) tbody
tbody entrytbl(n/a) theadtbody entrytbl(n/a) thead
tbody entrytbl(n/a) tbodytbody entrytbl(n/a) tbody
tfoot entrytbl(1) theadtfoot entrytbl(1) thead
tfoot entrytbl(1) tbodytfoot entrytbl(1) tbody
tfoot entrytbl(0) tbodytfoot entrytbl(0) tbody
tfoot entrytbl(one) theadtfoot entrytbl(one) thead
tfoot entrytbl(one) tbodytfoot entrytbl(one) tbody
tfoot entrytbl(n/a) tbodytfoot 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
Table 3: colsep, morerows, issues!
There was some weird problem that this table caught while testing the cals2html stylesheet, but I no longer recall what it was.
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
no attrib