[Mirrored from: http://www.sgmlopen.org/sgml/docs/a503.htm]
Harvey Bingham
, Interleaf
Chair, Table Interchange Subcommittee
SGML Open
1996 May 8
© 1995, 1996 SGML Open
Permission to reproduce parts or all of this information in any form is granted to SGML Open members provided that this information by itself is not sold for profit and that SGML Open is credited as the author of this information.
This SGML Open Technical Resolution defines an Exchange subset of the full CALS table model DTD described in SGML Open Technical Memorandum TM 9502:1995 . This Exchange subset has been chosen as being a useful subset of the complete CALS table model such that, if an application's tables are tagged according to this subset, there is a high probability that the table will be interoperable among the great majority of SGML Open vendor products. See also the SGML Open Technical Research Paper TRP 9501:1995 on Table Interoperability: Issues for the CALS table model.
Note that the set of element and attribute declarations in the markup declaration module section of this document partially defines the Exchange 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 Resolution 9503:1995
Committee Draft: 1995 November 21
Final Draft Technical Resolution: 1996 January 12
Final Technical Resolution: 1996 May 8
This SGML Open Technical Resolution defines an Exchange subset of the full CALS table model DTD described in SGML Open Technical Memorandum TM 9502:1995. This Exchange subset has been chosen as being a useful subset of the complete CALS table model such that, if an application's tables are tagged according to this subset, there is a high probability that the table will be interoperable among the great majority of SGML Open vendor products. See also the SGML Open Technical Research Paper TRP 9501:1995 on Table Interoperability.
Specific changes of substance between this Exchange Model and the CALS table model contained in the Example DTD published in MIL-HDBK-28001 (30 June 95) include:
Finally, this declaration set is assigned a Formal Public Identifier.
Note that the set of element and attribute declarations in the next section of this document partially defines the Exchange 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 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.
<!-- EXCHANGE TABLE MODEL DECLARATION MODULE --> <!-- This set of declarations defines the Exchange Table Model as of the date shown in the Formal Public Identifier (FPI) for this entity. This set of declarations may be referred to using a public external entity declaration and reference as shown in the following two lines: <!ENTITY % calstbls PUBLIC "-//SGML Open//DTD Exchange Table Model 19960430//EN"> %calstbls; If various parameter entities used within this set of declarations are to be given non-default values, the appropriate declarations should be given before calling in this package (i.e., before the "%calstbls;" reference). NOTE: This set of declarations assumes a NAMELEN of 32 as is used in the standard CALS defined SGML declaration. --> <!-- This entity includes a set of element and attribute declarations that partially defines the Exchange 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, also available from SGML Open, should be used in conjunction with this entity. --> <!-- In order to use the Exchange table model, various parameter entity declarations are required. A brief description is as follows: ENTITY NAME WHERE USED WHAT IT IS %bodyatt In ATTLIST of: Additional (non-table related) table element(s) attributes on the overall (wrapper) table element(s) %yesorno In ATTLIST of: An attribute declared value almost all elements for a "boolean" attribute %titles In content model of: The "title" part of the model table element(s) group for the table element(s) %paracon In content model of: The "text" (logical content) <entry> of the model group for <entry> %tbl.table.name In declaration of: The name(s) of the "table" table element(s) element(s) %tbl.table-titles.mdl In content model of: The model group for the title table elements(s) part of the content model for table element(s) %tbl.table-main.mdl In content model of: The model group for the main part table elements(s) (not including titles) of the content model for table element(s) %tbl.table.mdl In content model of: The model group for the content table elements(s) model for table element(s), often (and by default) defined in terms of %tbl.table-titles.mdl and %tbl.table-main.mdl %tbl.table.excep In content model of: The exceptions for the content table element(s) model for table element(s) %tbl.table.att In ATTLIST of: Additional attributes on the table element(s) table element(s) %tbl.tgroup.mdl In content model of: The model group for the content <tgroup> model for <tgroup> %tbl.tgroup.att In ATTLIST of: Additional attributes on the <tgroup> <tgroup> element %tbl.tbody.att In ATTLIST of: Additional attributes on the <tbody> <tbody> element %tbl.colspec.att In ATTLIST of: Additional attributes on the <colspec> <colspec> element %tbl.hdft.name In declaration of: The name(s) of the table head/foot element(s) head and foot element(s) %tbl.hdft.mdl In content model of: The model group for the content head/foot element(s) model for head/foot element(s) %tbl.hdft.excep In content model of: The exceptions for the content head/foot element(s) model for head/foot element(s) %tbl.hdft.att In ATTLIST of: Additional attributes on the head/foot element(s) head/foot element(s) %tbl.row.mdl In content model of: The model group for the content <row> model for <row> %tbl.row.excep In content model of: The exceptions for the content <row> model for <row> %tbl.row.att In ATTLIST of: Additional attributes on the <row> <row> element %tbl.entry.mdl In content model of: The model group for the content <entry> model for <entry> %tbl.entry.excep In content model of: The exceptions for the content <entry> model for <entry> %tbl.entry.att In ATTLIST of: Additional attributes on the <entry> <entry> element This set of declarations will use the default definitions shown below for any of these parameter entities that are not declared before this set of declarations is referenced. --> <!-- These definitions are not directly related to the table model, but are used in the default CALS table model and may be defined elsewhere (and prior to the inclusion of this table module) in the referencing DTD. --> <!ENTITY % bodyatt ""> <!ENTITY % yesorno 'NUMBER' -- no if zero(s), yes if any other digits value --> <!ENTITY % titles 'title?'> <!ENTITY % paracon '#PCDATA' -- default for use in entry content --> <!-- The parameter entities as defined below change and simplify the CALS table model as published (as part of the Example DTD) in MIL-HDBK-28001. The resulting simplified DTD has support from the SGML Open vendors and is therefore more interoperable among different systems. These following declarations provide the Exchange default definitions for these entities. However, these entities can be redefined (by giving the appropriate parameter entity declaration(s) prior to the reference to this Table Model declaration set entity) to fit the needs of the current application. Note, however, that changes may have significant effect on the ability to interchange table information. These changes may manifest themselves in useability, presentation, and possible structure information degradation. --> <!ENTITY % tbl.table.name "table"> <!ENTITY % tbl.table-titles.mdl "%titles;,"> <!ENTITY % tbl.table-main.mdl "tgroup+"> <!ENTITY % tbl.table.mdl "%tbl.table-titles.mdl; %tbl.table-main.mdl;"> <!ENTITY % tbl.table.excep "-(%tbl.table.name)"> <!ENTITY % tbl.table.att " pgwide %yesorno; #IMPLIED "> <!ENTITY % tbl.tgroup.mdl "colspec*,thead?,tbody"> <!ENTITY % tbl.tgroup.att ""> <!ENTITY % tbl.tbody.att ""> <!ENTITY % tbl.colspec.att ""> <!ENTITY % tbl.hdft.name "thead"> <!ENTITY % tbl.hdft.mdl "row+"> <!ENTITY % tbl.hdft.excep ""> <!ENTITY % tbl.hdft.att ""> <!ENTITY % tbl.row.mdl "entry+"> <!ENTITY % tbl.row.excep ""> <!ENTITY % tbl.row.att ""> <!ENTITY % tbl.entry.mdl "(%paracon;)*"> <!ENTITY % tbl.entry.excep ""> <!ENTITY % tbl.entry.att ""> <!-- ===== Element and attribute declarations follow. ===== --> <!-- Default declarations previously defined in this entity and referenced below include: ENTITY % tbl.table.name "table" ENTITY % tbl.table-titles.mdl "%titles;," ENTITY % tbl.table-main.mdl "tgroup+" ENTITY % tbl.table.mdl "%tbl.table-titles; %tbl.table-main.mdl;" ENTITY % tbl.table.excep "-(%tbl.table.name)" ENTITY % tbl.table.att " pgwide %yesorno; #IMPLIED " --> <!ELEMENT %tbl.table.name; - - (%tbl.table.mdl;) %tbl.table.excep; > <!ATTLIST %tbl.table.name frame (top|bottom|topbot|all|sides|none) #IMPLIED colsep %yesorno; #IMPLIED rowsep %yesorno; #IMPLIED %tbl.table.att; %bodyatt; > <!-- Default declarations previously defined in this entity and referenced below include: ENTITY % tbl.tgroup.mdl "colspec*,thead?,tbody" ENTITY % tbl.tgroup.att "" --> <!ELEMENT tgroup - O (%tbl.tgroup.mdl;) > <!ATTLIST tgroup cols NUMBER #REQUIRED colsep %yesorno; #IMPLIED rowsep %yesorno; #IMPLIED align (left|right|center|justify|char) #IMPLIED %tbl.tgroup.att; > <!-- Default declarations previously defined in this entity and referenced below include: ENTITY % tbl.colspec.att "" --> <!ELEMENT colspec - O EMPTY > <!ATTLIST colspec colnum NUMBER #IMPLIED colname NMTOKEN #IMPLIED colwidth CDATA #IMPLIED colsep %yesorno; #IMPLIED rowsep %yesorno; #IMPLIED align (left|right|center|justify|char) #IMPLIED char CDATA #IMPLIED charoff NUTOKEN #IMPLIED %tbl.colspec.att; > <!-- Default declarations previously defined in this entity and referenced below include: ENTITY % tbl.hdft.name "thead" ENTITY % tbl.hdft.mdl "row+" ENTITY % tbl.hdft.excep "" ENTITY % tbl.hdft.att "" --> <!ELEMENT %tbl.hdft.name; - O (%tbl.hdft.mdl;) %tbl.hdft.excep;> <!ATTLIST %tbl.hdft.name; valign (top|middle|bottom) #IMPLIED %tbl.hdft.att; > <!-- Default declarations previously defined in this entity and referenced below include: ENTITY % tbl.tbody.att "" --> <!ELEMENT tbody - O (row+)> <!ATTLIST tbody valign (top|middle|bottom) #IMPLIED %tbl.tbody.att; > <!-- Default declarations previously defined in this entity and referenced below include: ENTITY % tbl.row.mdl "entry+" ENTITY % tbl.row.excep "" ENTITY % tbl.row.att "" --> <!ELEMENT row - O (%tbl.row.mdl;) %tbl.row.excep;> <!ATTLIST row rowsep %yesorno; #IMPLIED valign (top|middle|bottom) #IMPLIED %tbl.row.att; > <!-- Default declarations previously defined in this entity and referenced below include: ENTITY % paracon "#PCDATA" ENTITY % tbl.entry.mdl "(%paracon;)*" ENTITY % tbl.entry.excep "" ENTITY % tbl.entry.att "" --> <!ELEMENT entry - O (%tbl.entry.mdl;) %tbl.entry.excep; > <!ATTLIST entry colname NMTOKEN #IMPLIED namest NMTOKEN #IMPLIED nameend NMTOKEN #IMPLIED morerows NUMBER #IMPLIED colsep %yesorno; #IMPLIED rowsep %yesorno; #IMPLIED align (left|right|center|justify|char) #IMPLIED char CDATA #IMPLIED charoff NUTOKEN #IMPLIED valign (top|middle|bottom) #IMPLIED %tbl.entry.att; >
Note that the above set of element and attribute declarations in the previous section only partially defines the Exchange 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.
The <table> element markup identifies a table.
Values of attributes on the <table> element may at times be inherited to be used as defaults for its contained elements. Furthermore, a <table> element may have some style specification associated with it that may provide default values for some or all of its attributes. If a <table> element has no explicit specification for an attribute but does have an associated style sheet that gives a specification for this attribute, then this value shall be used as the value that is inherited from this element.
frame
outer table ruling
Describes position of outer rulings.
Declared value
sides (left and right), top (below title), bottom (after last <row>), topbot (both top and bottom), all (all of above), or none (none of above). The outer rulings appear in place of and in the space that would otherwise be taken by horizontal and vertical rulings on the outsides of those entries that appear at the edges of the table.
Default
IMPLIED (implies value from style specification if available, if not, implies &ldquoall&rdquo).
colsep
column separators (vertical ruling)
Provides 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>; if zero, do not display them. Ignored for the rightmost column, where the frame setting applies.
Declared value
%yesorno; (NUMBER)
Default
IMPLIED (implies value from style specification if available, if not, implies &ldquo1&rdquo).
rowsep
row separators (horizontal ruling)
Provides default for all <tgroup>s in this <table>. If other than zero, display the internal horizontal row ruling below each <entry> ending in a <row>. If zero, do not display them. Ignored for the last <row> of the <table> (i.e., the last <row> of the last <tgroup> in this <table>), where the frame value applies.
Declared value
%yesorno; (NUMBER)
Default
IMPLIED (implies value from style specification if available, if not, implies &ldquo1&rdquo).
pgwide
make table span full page width
If zero, the maximum available width for the <table> is the (galley) width (possibly respecting current indents in force as specified by the style sheet) of the current column of the orient="port" page. If a specified value other than zero, the <table> spans the width of the entire page (possibly causing any previous multicolumn text on the page to be balanced and any extra processing associated with column balancing and page spanning to be performed). This attribute is ignored when orient="land" where all tables are treated as if pgwide="1".
Declared value
%yesorno; (NUMBER)
Default
IMPLIED (implies value from the style specification if available). In the absence of an explicit value (or one implied from the style specification), the system should attempt to format the table into a galley column if reasonable, based on explicit <colspec> colwidth values, galley column width, and possible table indentation implied by context. If any relative width specifications exist, they should continue to apply, but the unit proportion should be first based on the width uncommitted from the galley column.
In the above paragraph, &ldquoif reasonable&rdquo is intended to preclude a system generating columns so narrow that the entry content is obscured by awkward line folding, or clipping. For align=char, the content either side of the alignment character should also be considered. No explicit algorithm for determining when a table will fit is provided. Because of the uncertainty in meaning, interchange of a table should include an explicit value for pgwide.
%bodyatt;
general body element attributes
Any of the attributes in the associated Attribute Set may be used with this element.
Default
As appropriate for each attribute in the set.
Each <tgroup> effectively identifies a new portion of a <table>. The <colspec>s and the colnames in each <tgroup> are independent of any other <tgroup>. The <colspec>s in a <tgroup> apply to its <tbody>. The <colspec>s in a <tgroup> shall be in left-to-right column order. Explicit colnums in the different <colspec>s of a <tgroup> shall be unique, in ascending order left-to-right, in the range 1 to the number of <colspec>s, which is not to exceed the value of the cols attribute of <tgroup>.
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>.
All <tgroup>s of a <table> shall have the same width, so the<table> frame can surround them uniformly. Each <thead> and <tbody> has that total width as well. For each <tgroup>, let the minimum <tgroup> width be the sum of the fixed portions of the set of <colspec> colwidths in that <tgroup> 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. The minimum <table> width shall be the maximum of all the minimum <tgroup> widths.
The total width for any <tgroup> may be specified with some columns having fixed colwidths and others having proportional widths. When no proportional width are specified for a given <tgroup>, the width of that <tgroup> shall be the sum of the fixed widths of the columns. When any proportional widths 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, &ldquo0&rdquo for galley column width (possibly affected by current indents). Reduce that by the sum of border widths and column ruling widths and the fixed colwidths to get the available proportional width. Sum the proportional factors N over all columns with proportional parts &ldquoN*&rdquo and including &ldquo1*&rdquo 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. If there are multiple <tgroup>s in a single table with fixed widths (i.e., no proportional parts) such that these fixed widths differ from one another, then it is up to the output system to determine the interpretation.
Values of attributes on the <tgroup> element may at times be inherited to be used as defaults for its contained elements. Furthermore, a <tgroup> element may have some style specification associated with it that may provide default values for some or all of its attributes. If a <tgroup> element has no explicit specification for an attribute but does have an associated style sheet that gives a specification for this attribute, then this value shall be used as the value that is inherited from this element.
cols
number of columns
Number of columns in the <tgroup>.
Declared value
NUMBER
colsep
column separators (vertical ruling)
Provides default for all <colspec>s in this <tgroup>. If other than zero, display the internal column rulings to the right of <entry>; if zero, do not display them. Ignored for the last (rightmost) column, where the frame setting applies. Possible default source for <colspec> or <entry>.
Declared value
%yesorno; (NUMBER)
Default
IMPLIED (implies value from style specification if any, else from <table>)
rowsep
row separators (horizontal ruling)
Provides default for <colspec>s in this <tgroup>. If other than zero, display the internal horizontal row ruling below each <entry>. If zero, do not display them. Ignored for the last (bottom) <row> of the <table> where the frame value applies. In the last <row> in any <tgroup> other than the last (or only) in the table, the regular <row> or <entry> rowsep specifications apply. Possible default source for <row> or <entry>.
Declared value
%yesorno; (NUMBER)
Default
IMPLIED (implies value from style specification if any, else from <table>)
align
horizontal alignment of table entry content
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. Default source for <colspec> align. Possible default source for <entry>.
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
IMPLIED (means use value from style specification if any, else &ldquoleft&rdquo.)
Specifies a column, a vertical portion of a <table>. The default values come from the <tgroup> or <thead> starting the current (enclosing) group. Each <colspec> is for a single column in left-to-right order, so it properly has a column number, colnum, implicitly in order starting from 1, and an optional column name (colname) by which it is known when referenced by any <entry>. Any references from <entry>s within the <thead> to colname, namest, or nameend refer to values defined by the set of <colspec>s in the containing <tgroup>. <Colspec>s from the containing <tgroup> apply to <thead> and <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 &ldquo1*&rdquo should be inferred. <Colspec>s can be numbered or unnumbered, and if numbered should be increasing in sequential order starting with 1 at the left. Unnumbered <colspec>s are interpreted as being numbered incrementally (one more than the previous column number), with the first <colspec> starting at 1. It is left up to the implementation how to handle any mismatch in <colspec> numbering, or a number of <colspec>s greater than cols. It is recommended that an authoring or editing implementation or any implementation that verifies the compliance of the table markup to this Resolution offer the option of producing a warning message when it encounters such markup. It is an error for an authoring or editing implementation to produce a table with such conflicting markup.
The char and charoff attributes are allowed on <colspec> as well as on <entry>. While an implementation should accept these attributes on either of these elements upon input, it may produce logically equivalent output that nevertheless differs with respect to these attributes and still be considered in compliance with the semantics of this resolution. If a table contains one or more <entry>s with values of either char or charoff that differ from the value for the same attribute on a <colspec> that logically contains the <entry>(s), it is left up to the implementation how this should be handled (i.e., the interpretation of such markup is beyond the scope of this model). It is recommended that an authoring or editing implementation or any implementation that verifies the compliance of the table markup to this Resolution offer the option of producing a warning message when it encounters such markup. It is an error for an authoring or editing implementation to produce a table with such conflicting markup.
colnum
column number
Number of column, counting from 1 at left of the table. The value of colnum is not useful to identify a column in an <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 inorder)
colname
column name
Name of column, used to specify the position or horizontal span of columns in a row by reference in <entry> using colname, namest, and/or nameend.
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>.
Declared value
NMTOKEN
Default
IMPLIED (colspec cannot be referenced without colname)
colwidth
column width specification
Either proportional measure of the form number*, e.g., &ldquo5*&rdquo for 5 times the proportion, or &ldquo*&rdquo (which is equivalent to &ldquo1*&rdquo); fixed measure, e.g., 2pt for 2 point, 3pi for 3 pica. (Mixed measure, e.g., 2*+3pt, while allowed in the full CALS table model, is not supported in this Exchange model.) Coefficients are positive integers or fixed point numbers; for fixed point numbers, a leading (possibly 0) integer part is required, and implementations should support at least 2 decimal places. A value of "" [the null string] is treated as a proportional measure of &ldquo1*&rdquo.
The fixed unit values are case insensitive. The standard list of allowed unit values is &ldquopt&rdquo (points), &ldquocm&rdquo (centimeters), &ldquomm&rdquo (millimeters), &ldquopi&rdquo (picas), and &ldquoin&rdquo (inches). The default fixed unit should be interpreted as &ldquopt&rdquo if neither a proportion nor a fixed unit is specified.
Declared value
CDATA
Default
IMPLIED (means assume a proportional measure of &ldquo1*&rdquo)
colsep
column separators (vertical ruling)
Default for column ruling to the right of <entry>s starting in this column (within the <tgroup>).
Declared value
%yesorno; (NUMBER)
Default
IMPLIED, from <tgroup>.
rowsep
row separators (horizontal ruling)
Default for row ruling below an <entry> starting in this column when there is neither a rowsep value on the <entry> nor on the <row> in which the <entry> occurs. Note that with a non-zero value for morerows on the entry, that ruling will be several rows lower.
Declared value
%yesorno; (NUMBER)
Default
IMPLIED, from <tgroup>.
align
horizontal alignment of table entry content
Text horizontal position within the column or spanning columns. Possible default source for <entry>
Declared value
left, (quad flush left), center (centered), right (quad flush right), justify (both quad left and right), or char (positioned by charoff).
Default
IMPLIED (means use value from <tgroup>)
char
alignment character
Default source for <entry>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. A value of "" (the null string) means there is no aligning character.
Declared value
CDATA
Default
IMPLIED, means "" (i.e., there is no aligning character).
charoff
horizontal offset of alignment character when align=char
Default source for <entry>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, means "50" (i.e., 50%)
Identifies the heading <row>s of a <tgroup>, displayed as the first rows, and again at the top of any continuation after a physical break between <rows> in <tbody>.
The attributes apply from the set of <colspec>s of the containing <tgroup>.
valign
vertical alignment
Default text vertical positioning within the <entry>s. Provides default value for <row>s and <entry>s in <thead>.
Declared value
top, middle (approximately vertically centered), or bottom.
Default
IMPLIED (implies &ldquobottom&rdquo).
Identifies the body of a <tgroup>.
valign
vertical alignment
Default Text vertical positioning within the <entry>s. Provides default value for <row> and <entry>s in <tbody>.
Declared value
top, middle (approximately vertically centered), or bottom.
Default
IMPLIED (implies &ldquotop&rdquo)
Identifies the row information in a <thead> or <tbody> element. Default values come from the enclosing <thead>, <tbody>, or <tgroup> attribute values for like-named attributes.
The number of columns consumed by the <entry>s in a row including their spans, and by columns encroached by an <entry> with morerows from a prior row of a <tgroup>, shall not exceed the cols attribute value in effect for this <tgroup>. It is left up to the implementation how to handle the situation when more than one <entry> would fill any column of a <row>, including by horizontal spanning or morerows vertical spanning. It is recommended that an authoring or editing implementation or any implementation that verifies the compliance of the table markup to this Resolution offer the option of producing a warning message when it encounters such markup. It is an error for an authoring or editing implementation to produce a table with such conflicting markup.
If the number of columns consumed is less than the number of columns specified in the <tgroup cols=N>, then missing <entry>s without straddling are implicitly present, and their colsep and rowsep rulings are inherited.
rowsep
Default for all <entry>s starting in this <row> that do not specify rowsep. If other than zero, display the internal horizontal row ruling below an <entry> in the <row>. If zero, do not display it. Rowsep is ignored for the last <row> of the table where the frame specification determines the ruling.
Declared value
%yesorno; (NUMBER)
Default
IMPLIED, from the closest element in the inheritance path:
valign
vertical alignment
Text vertical positioning default for <entry>s in a <row>.
Declared value
top, middle (approximately vertically centered), or bottom.
Default
IMPLIED, from the closest element in the inheritance path:
Identifies an <entry> in a <row> of a <thead> or <tbody> in a <tgroup>.
Default values for colsep, rowsep, valign, align, char, and charoff may come from like-named attributes from the nearest element identified as influencing this <entry>. The values may come from <table>, <tgroup>, <colspec> (defining namest or colname), <tbody>, or <row>. Note that <colspec> is not strictly in the element lineage.
The char and charoff attributes are allowed on <colspec> as well as on <entry>. While an implementation should accept these attributes on either of these elements upon input, it may produce logically equivalentoutput that nevertheless differs with respect to these attributes and still be considered in compliance with the semantics of this resolution. A table with one or more <entry>s with values of either char or charoff that differ from the value for the same attribute on any other entry in that logical column or from a <colspec> that logically contains the <entry>(s) does not conform to the model defined in this Resolution. It is left up to the implementation receiving such a table to determine how it should be handled. It is recommended that an authoring or editing implementation or any implementation that verifies the compliance of the table markup to this Resolution offer the option of producing a warning message when it encounters such markup.
An <entry> gets its defaults from its starting column. A row has no explicit <entry> in any column into which a vertical straddle occurs because of a morerows=N in an <entry> from a prior row. A spanning <entry> has no explicit repeated <entry>s in the columns to the right of the column identified by namest. An <entry> without specific starting column cannot span, and falls in the next non-straddled and non-spanned column.
The precedence for determining the column(s) for any <entry> is:
The implicit resolution places the <entry> in the next available column.
There are various markup combinations which this Resolution defines as &ldquoerroneous&rdquo and referred to as &ldquoerrors&rdquo in some of the following attribute descriptions. It is left up to the implementation how to handle each of these situations:
It is recommended that an authoring or editing implementation or any implementation that verifies the compliance of the table markup to this Resolution offer the option of producing a warning message when it encounters such markup. It is an error for an authoring or editing implementation to produce a table with such markup.
If the content of an <entry> is too deep for the available depth of a page, what information is presented and how it is presented is left to be determined by the implementation.
colname
column name
Column name of <entry>. Ignore if namest is present. It is an error if colname is not defined in a <colspec> of the current <tgroup>.
Declared value
NMTOKEN
Default
IMPLIED (column(s) determined by namest or implicitly the next.)
namest
name of starting column for this entry
Name of leftmost column of span. The value must be some colname in a <colspec> of the current <tgroup>. A namest on an entry with no nameend specification indicates the single column so named, though colname is usually used for such a specification. If neither namest nor colname occur, the <entry> goes in the next column in sequence to the right, skipping over any encroachment from a prior row via <entry morerows=N>. It is an error if the namest value is not defined in a <colspec> for the current <tgroup>.
Declared value
NMTOKEN
Default
IMPLIED (implies this attribute has no effect on spanning)
nameend
name of ending column for this entry
Name of rightmost column of span. The value must be some colname in a <colspec> of the current <tgroup>. The column must be to the right of the column identified by namest. Nameend without namest is ignored.
Declared value
NMTOKEN
Default
IMPLIED (implies this attribute has no effect on spanning)
morerows
number of additional rows in a vertical span
There shall be at least that many more rows in the appropriate <thead> or <tbody>. Any entries with morerows that would attempt to extend further downward is an error. The rowsep is determined when the entry is processed, in the top row if morerows is positive.
Declared value
NUMBER
Default
IMPLIED (interpret as &ldquo0&rdquo)
colsep
column separators (vertical ruling)
If other than zero, display the internal vertical column ruling at the right of the <entry>; if zero, do not display it. Ignored for the last column of a <row>, where the frame setting applies. The colsep value is determined by the leftmost column of a spanning entry, even though its effect is on the last column of such spanning entry.
Declared value
%yesorno; (NUMBER)
Default
IMPLIED, from the closest element in the inheritance path:
Note that if a <tgroup> or <table> element has no explicit specification for this attribute but does have an associated style sheet that gives a specification for this attribute, then this value shall be used as the value that is inherited from this element.
rowsep
row separators (horizontal ruling)
If other than zero, display the internal horizontal row ruling below the <entry>; if zero, do not display it. Ignored for the last <row> of <tgroup> where the table frame applies. Rowsep for the entry is determined in the topmost row in which the entry occurs, even though its effect may be morerows below.
Declared value
%yesorno; (NUMBER)
Default
IMPLIED, from the closest element in the inheritance path:
Note that if a <tgroup> or <table> element has no explicit specification for this attribute but does have an associated style sheet that gives a specification for this attribute, then this value shall be used as the value that is inherited from this element.
align
horizontal alignment of table entry content
Text horizontal position within the column or spanning columns. Applies to text that is #PCDATA or other inline elements not further contained in another element with its own formatting style, such as paragraph, list, or annotation though such elements could inherit their alignment from this value.
Declared value
left, (quad flush left), center (centered), right (quad flush right), justify (both quad left and right), or char (align on leftmost of char, positioned by charoff).
Default
IMPLIED (means use value from nearest applicable <colspec> of the nearest ancestral <tgroup>. If none, then &ldquoleft&rdquo.)
char
alignment character
If align="char", the value of the char attribute is the single alignment character on which the first to occur of this character in the <entry> is aligned. A value of "" (the null string) means there is no alignment character. If there is no alignment character or the alignment character does not occur inthe <entry>, the <entry> right aligns to the left of the charoff position. The value of the char attribute shall not be an SDATA entity.
Declared value
CDATA
Default
IMPLIED, from <colspec> else there is no aligning character.
charoff
horizontal offset of alignment character when align=char
When align="char" for this <entry>, 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 <colspec> else "50" (i.e., 50%).
valign
vertical alignment
Text vertical positioning within the <entry>.
Declared value
top, middle (approximately vertically centered), or bottom.
Default
IMPLIED from the closest ancestor with explicit specification of valign: