OASIS Technical Memorandum TM 9502:1995
Harvey Bingham, Interleaf
Chair, Table Interchange Subcommittee
OASIS
1995 October 19
© 1995 OASIS. Permission to reproduce parts or
all of this information in any form is granted to OASIS
members provided that this information by itself is
not sold for profit and that OASIS is credited as the
author of this information.
Abstract
This OASIS Technical Memorandum consists of a recommendation
for an update to the CALS table model DTD model that
will be submitted to the appropriate CALS authority
with the expectation that it will be accepted as the
next revision of the official CALS table model and that
a Formal Public Identifier will be assigned to facilitate
referencing of this model.
Note that the set of element and attribute declarations
in the markup declaration module section of this document
partially defines the CALS table model. However, the
model is not well-defined without the accompanying natural
language description of the semantics (meanings) of
these various elements, attributes, and attribute values.
The semantic writeup, in the section following that
containing the markup declaration module, must be used
in conjunction with the element and attribute declarations.
Technical Memorandum 9502:1995
Committee Draft: 1995 August 2
Committee Draft: 1995 August 14
Final Technical Memorandum: 1995 October 19
Introduction
This OASIS recommendation for an update to the CALS
table model DTD model will be submitted to the appropriate
CALS authority with the expectation that it will be
accepted as the next revision of the official CALS table
model and that a Formal Public Identifier will be assigned
to facilitate referencing of this model.
Specific changes of substance from the table model
contained in the Example DTD published in MIL-HDBK-28001
(30 June 95) include:
- allow content model for table to include title on
the graphic+ form of table content when there are
no tgroups;
- change most explicit attribute defaults from value
to #IMPLIED to allow value inheritance, possibly from
a style sheet (i.e., tocentry on <table>; align,
char, and charoff on <tgroup>; valign on <tbody>,
<thead>, and <tfoot>; and rotate and morerows
on <entry>);
- repair an error in <entrytbl> content model
to eliminate the one or more repetitions of (colspec*,spanspec*,thead?,tbody)+.
Finally, a Formal Public Identifier is suggested.
Note that the set of element and attribute declarations
in the next section of this document partially defines
the CALS table model. However, the model is not well-defined
without the accompanying natural language description
of the semantics (meanings) of these various elements,
attributes, and attribute values. The semantic writeup,
in the section following that containing the markup
declaration module, must be used in conjunction with
the element and attribute declarations.
The following markup declaration module defines parameter
entities for various parts of the model. This organization
provides for more flexibility in using this module in
different circumstances. However, it must be realized
that overriding declarations of these parameter entities
that enlarge the model (i.e., that define a superset
of the model or a different model) may reduce practical
interoperability. It is therefore recommended that the
parameter entities be used primarily to define a subset
of the default model. Any parameter entity redefinition
other than to define a more constrained model than the
default model must be done carefully with the knowledge
of ones target toolset's capabilities and with the realization
that interoperability may be reduced. The portion of
the model where constraining changes only are reasonable
is its geometric aspects, including some table attributes,
and the elements and attributes of the table structure:
tgroup through row, analogous structure of entrytbl,
and some entry attributes. The table content model and
its exceptions other than table self-exclusion and the
entry content model and its exceptions are candidates
for change.
CALS Table model DTD module
|
Semantic description for the CALS table model
Note that the above set of element and attribute
declarations in the previous section only partially
defines the CALS table model. The model is not
well-defined without the accompanying natural
language description of the semantics (meanings)
of these various elements, attributes, and attribute
values. This section containing that semantic
writeup must be used in conjunction with the element
and attribute declarations.
|
 |
 |
|
Element and attribute description for <table>Element/AttributeFull
NameDescription
|
 |
 |
|
colsep =x
|
|
 |
 |
|
COLSEP: Default for all <tgroup>s
in this <table>. If a number other
than zero, display the internal column rulings
to the right of each <entry> or <entrytbl>;
if zero, do not display them. Ignored for
the rightmost column, where the frame setting
applies.
Declared Values = %yesorno; (NUMBER)
Default = IMPLIED (implies value from tabstyle
in style specification if available, if
not, implies "1").
|
|
 |
 |
 |
 |
|
tabstyle =x
|
|
|
|
tocentry =x
|
|
|
|
shortentry =x
|
|
 |
 |
 |
 |
|
TABSTYLE: The identifier for a table style
defined for the application, possibly in
the style specification.
Declared Value = NMTOKEN
Default = IMPLIED (no external style attribute
definitions specified)
|
|
|
TOCENTRY: If other than zero, and the <title>
is present, this table <title> should
be included in the list of tables. (Ignore
that table title in forming the list of
tables if the optional <title> is
omitted.)
Declared Value = %yesorno; (NUMBER)
Default = IMPLIED (implies value from style
specification if any, else "1").
|
|
|
|
SHORTENTRY: If the value is zero, the element's
<shorttitle> (or <title>, if
no short title is given) is not used in
the <coverindex> or any other type
of compiled listing. Any other numeric value
triggers the use of the <shorttitle>,
or <title> in its absence. It is an
error if neither <shorttitle> nor
<title> occur and shortentry is non-zero.
Declared Value = %yesorno; (NUMBER)
Default = IMPLIED (implies value from style
specification if any, else "0").
|
|
|
 |
 |
|
Element and attribute description for <tgroup>Element/AttributeFull
NameDescription
|
 |
 |
|
The colnames in the different <colspec>s
of a <tgroup> shall be unique. (A colname
may have the same value as the colnum of the same
<colspec> if restricted to digits.) The
<colspec>s of <tbody> also apply to
<thead> and <tfoot>, unless replaced
by <colspec>s in a <thead> or <tfoot>.
Such replacement <colspec>s are confined
to affecting the <thead> or <tfoot>
in which they occur. They do not replace any like-named
or numbered <colspec>s in the <tgroup>
for use in <tbody>.
|
 |
 |
|
All <tgroup>s of a <table> shall
have the same width, so the <table> frame
can surround them uniformly. Each <thead>,
<tfoot>, and <tbody> has that total
width as well. Let the minimum table width by
the sum of the fixed portions of the set of <colspec>
colwidths in any of <tgroup>, <thead>,
and <tfoot> which should not exceed the
indicated total width, determined from the <table>
pgwide attribute. If pgwide="0", the
target total width is the galley column width,
possibly reduced by the current indents in force;
if pgwide is non-zero, the target total width
is the full page width.
|
 |
 |
 |
 |
|
cols =x
|
|
|
|
tgroupstyle =x
|
|
|
colsep =x
|
|
|
 |
 |
 |
 |
 |
 |
 |
|
The total width may be specified with colwidths
having some fixed parts and some proportional
parts. When any proportional parts are specified,
the unit proportion is determined by starting
with the target table width determined from
the <table> pgwide value non-zero
for full width, "0" for galley
column width (possibly affected by current
indents). Reduce that by sum of border widths
and column ruling widths and the fixed parts
of the various <colspec> colwidths
to get the available proportional width.
Sum the proportional factors N over all
columns with proportional parts "N*"
and including "1*" for each implicit
colwidth when the value of the <tgroup>
cols exceeds the number of <colspec>s
in that <tgroup>. Then the unit proportion
is the available proportional width divided
by the sum of the proportionality factors.
Note that the fixed widths for frame and
colsep rulings are deemed to be small and
system dependent, not essentially included
as fixed parts of each colwidth in <colspec>.
If the table fixed widths take up too much
of the indicated table width, then it is
up to the output system to resolve the conflict.
|
|
|
Required Attribute
|
|
|
|
COLS: Number of columns in the <tgroup>.
Declared Value = NUMBER
|
|
|
|
Optional Attributes
|
|
|
|
TGROUPSTYLE: A name for a unique <tgroup>
style, possibly defined in a style specification.
The tgroupstyle needn't be unique across
all <table>s tagged to the DTD.
Declared Value = NMTOKEN
Default = IMPLIED (no external style attribute
definitions specified)
|
|
|
|
COLSEP: Default for all <colspec>s
in this <tgroup>. If other than zero,
display the internal column rulings to the
right of <entry> or <entrytbl>;
if zero, do not display them. Ignored for
the last column, where the frame setting
applies. Possible default source for <spanspec>,
<entrytbl>, or <entry>.
Declared Value = %yesorno; (NUMBER)
Default = IMPLIED, value from tgroupstyle
if any, else from <table> if any,
else "1"
|
|
|
 |
 |
|
align =x
|
|
 |
 |
|
ALIGN: Text horizontal position within
the column. Applies to text that is #PCDATA
or other in-line elements, not further contained
in another element with its own formatting
style, such as paragraph, list, or annotation.
Declared Value = left, (quad flush left),
center (centered), right (quad flush right),
justify (both quad left and right), or char
(align text to the leftmost occurrence of
the value of the non-null attribute char
value.)
Default source for <colspec> align.
Possible default source or <spanspec>,
<entrytbl>, or <entry>.
Default = IMPLIED (means use value
from tgroupstyle if any, else "left".)
|
|
 |
Element and attribute description for <colspec>Element/AttributeFull
NameDescription
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
|
<colspec
|
|
|
|
colnum =x
|
|
|
|
colname =x
|
|
|
|
colwidth =x
|
|
|
colsep =x
|
|
|
|
rowsep =x
|
|
|
|
align =x
|
|
|
|
char =x
|
|
|
|
charoff =x>
|
|
 |
 |
|
Column Specification
|
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
|
Specifies a column, a vertical portion
of a <table>, or <entrytbl>.
The default values come from the <tgroup>,
<thead>, or <tfoot> starting
the current (enclosing) group. Each <colspec>
is for a single column, so it properly has
a column number, colnum, implicitly in order
starting from 1, and an optional colname
by which it is known when used in any <spanspec>
or in <entrytbl> or <entry>.
A set of <colspec>s on <thead>
or <tfoot> should be complete for
all columns (and if any <colspec>
is explicitly provided in a <thead>
or <tfoot>, any missing <colspec>s
are implicitly supplied). This set overrides
those on the containing <tgroup> and
applies to just the <thead> or <tfoot>.
Any references from <entry>s within
the <thead> or <tfoot> to colname,
namest, or nameend refer to values defined
by the set of <colspec>s in the <thead>
or <tfoot>. If there is no <colspec>
used within a <thead> or <tfoot>,
then the <colspec>s of the containing
<tgroup> or <entrytbl> are used.
<Colspec>s from the containing <tgroup>
apy to <tbody>.
|
|
|
The number of columns should be determined
by the cols attribute on the <tgroup>
element, not by the number of <colspec>s
actually defined. If the number in cols
is larger than the number of <colspec>s,
then additional <colspec>s of colwidth
"1*" should be inferred. <colspec>s
can be numbered or unnumbered, and if numbered
should be increasing in sequential order
starting at 1. Unnumbered <colspec>s
are interpreted as being numbered incrementally
(one more than the previous column number),
with the first <colspec> starting
at 1. Any mismatch in <colspec> numbering,
or a number of <colspec>s greater
than cols, is an error.
|
|
|
|
Optional Attributes
|
|
|
|
COLNUM: Number of column, counting from
1 at left of the table. The value of colnum
is not useful to identify a column in either
a <spanspec>, <entrytbl>, or
<entry>, so serves no functional purpose
other than a consistency check on the order
of the <colspec>s.
Declared Value = NUMBER
Default = IMPLIED (colspec is the next one
in order)
|
|
|
|
COLNAME: Name of column, used to specify
the position or horizontal span of columns
in a row, by reference in <entry>
or <entrytbl> using colname, or namest
with nameend. Also used by reference with
namest and nameend in <spanspec>.
The colname value could be the same
as colnum, as its declared value is NMTOKEN,
though there is no such requirement. The
name space for colnames is different for
each <tgroup> and <entrytbl>.
Declared Value = NMTOKEN
Default = IMPLIED (colspec cannot be referenced
without colname)
|
|
|
|
COLWIDTH: Either proportional measure
of the form number*, i.e., "5*"
for 5 times the proportion, or "*"
(which is equivalent to "1*");
fixed measure, i.e., 2pt for 2 point, 3pi
for 3 pica; or mixed measure, i.e., 2*+3pt.
Coefficients are positive integers or fixed
point numbers.
Declared Value = CDATA
Default = IMPLIED (means obtain value from
a named style specification if any. If there
is no such value, or if the value is ""
[the null string] then assume a proportion
of "1*".)
|
|
|
|
The fixed unit values are case insensitive.
The standard list of allowed unit values
is "pt" (points), "cm"
(centimeters), "mm" (millimeters),
"pi" (picas), and "in"
(inches). The default fixed unit should
be interpreted as "pt" if neither
a proportion nor a fixed unit is specified.
|
|
|
|
COLSEP: Default for <entry>s or <entrytbl>
starting in this column (within the <tgroup>
or <entrytbl>).
Default for <spanspec> whose namest
matches this colname.
Declared Value = %yesorno; (NUMBER)
Default = IMPLIED, from closest ancestor
<entrytbl> if any or <tgroup>.
|
|
|
ROWSEP: Default for <spanspec> with
namest matching this colname. Default for
<entry>s or <entrytbl>s starting
in this column and not determined by spanname,
if no rowsep value is provided in the top
<row> where their content is provided.
Declared Value = %yesorno; (NUMBER)
Default = IMPLIED, from closest ancestor
<entrytbl> if any or <tgroup>.
|
|
|
ALIGN: Text horizontal position within
the column or spanning columns.
Declared Value = left, (quad flush left),
center (centered), right (quad flush right),
justify (both quad left and right), or char
(positioned by charoff).
Possible default source for <spanspec>
using this column as its namest, or for
<entrytbl> or <entry>
Default = IMPLIED (means use value from
<tgroup> if any, or its tgroupstyle,
else "left".)
|
|
|
|
CHAR: Default source for <spanspec>,
and <entry>s or <entrytbl>s
starting in this column. If align ="char",
the value is the single alignment character
source for any implied char values for <entry>
immediately in this column The char shall
not be an SDATA entity.
Declared Value = CDATA
Default = IMPLIED, from closest ancestor:
<entrytbl> if any or <tgroup>.
|
|
|
|
CHAROFF: Default source for <entry>s
or <entrytbl>s starting in this column.
For align="char" on an <entry>
in the column, horizontal character offset
is the percent of the current column width
to the left of the (left edge of the) alignment
character.
Declared Value = NUTOKEN
Default = IMPLIED, from closest ancestor:
<entrytbl> if any or <tgroup>.
|
|
 |
 |
|
Element and attribute description for <spanspec>Element/AttributeFull
NameDescription
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
|
<spanspec
|
|
|
|
namest =x
|
|
|
|
nameend =x
|
|
|
|
spanname =x
|
|
|
|
colsep =x
|
|
|
|
rowsep =x
|
|
|
|
align =x
|
|
 |
 |
|
Spanned Column Specification
|
|
 |
 |
 |
 |
 |
 |
 |
|
Identifies a horizontal span of columns
and associated attributes that can subsequently
be referenced by its spanname for repeated
use in <entry>s or <entrytbl>s
in different <row>s. A <spanspec>
is defined in its context: <tgroup>
or <entrytbl>. (The <spanspec>s
from the containing <tgroup> apply
to <tbody>.) A <spanspec> uses
column names from <colspec>s defined
in that context. It gets default values
from the <colspec> that provides the
namest. Namest and nameend identify the
first and last columns in increasing left-to-right
order that identify the span. The reason
colname is used rather than colnum in identifying
<spanspec> is that the names are independent
of revisions that may change the number
of inserted/deleted columns, as long as
namest remains to the left of (has a smaller
colnum than) nameend. In a <thead>
or <tfoot>, if any <colspec>s
are redefined, the <tgroup> <spanspec>s
are ignored in references to spanname from
<entry>s within this <thead>
or <tfoot>. When such redefinition
occurs, any spaing should be by namest and
nameend.
|
|
|
Required Attributes
|
|
|
|
NAMEST: Name of leftmost column of span.
Name must refer to some colname in a <colspec>
of the nearest ancestor <entrytbl>
if any or <tgroup>.
Declared value = NMTOKEN
|
|
|
|
NAMEEND: Name of rightmost column of span.
Name must refer to some colname in a <colspec>
of the nearest ancestor <entrytbl>
if any or <tgroup>.
Declared value = NMTOKEN
|
|
|
|
SPANNAME: Name of the horizontal span.
Source for <entrytbl> or <entry>.
Declared value = NMTOKEN
|
|
|
|
Optional Attributes
|
|
|
|
COLSEP: Default for all <entry>s
(or <entrytbl>s) that refer to this
spanname in this context <tgroup>
or <entrytbl>. If other than zero,
default is to display the internal column
ruling to the right of any affected <entry>
(or <entrytbl>); if zero, default
to not display it. Ignored for the last
column, where the table frame setting applies.
Declared Value = %yesorno; (NUMBER)
Default = IMPLIED, from namest column's
<colspec>.
|
|
|
|
ROWSEP: Default for top <row> of
<entry>s (or <entrytbl>s) that
refer to this spanname in this context <tgroup>
or <entrytbl>. If other than zero,
display the internal horizontal row ruling
below each <entry> or <entrytbl>.
If zero, do not display it. Ignored for
the last row of the table, where the frame
specification determines the ruling.
Declared Value = %yesorno; (NUMBER)
Default = IMPLIED, from namest column's
<colspec>.
|
|
|
|
ALIGN: Text horizontal position within
the spanning columns.
Declared Value = left, (quad flush left),
center (centered), right (quad flush right),
justify (both quad left and right), or char
(positioned by charoff).
Possible default source for <entry>
or <entrytbl> referring to this spanname.
Default = IMPLIED (means use value from
tgroupstyle if any, else "center".)
|
|
|
 |
 |
|
Element and attribute description for <thead>Element/AttributeFull
NameDescription
|
 |
 |
|
<thead
|
|
 |
 |
|
Table Head
|
|
 |
 |
|
Identifies the heading <row>s of
a <tgroup> or <entrytbl>, displayed
as the first rows, and again at the top
of any continuation after a physical break
between <rows> in <tbody>.
Any occurrence of <colspec> to redefine
a column redefines the full set with its
own name space and using the same total
width as the enclosing <tgroup> or
<entrytbl>. (An implicit default <colspec>
with a width of "1*" is assumed
for any <colspec> not explicitly redefined.)
These redefined <colspec>s apply only
to the contained <entry>s. References
to spanname in such <entry>s are not
supported; if spanning is required, use
namest and nameend. If no <colspec>s
occur in this <thead>, the <colspec>
and <spanspec> sets of the containing
<tgroup> apply.
|
|
 |
 |
|
Optional Attributes
|
|