1<!-- XML EXCHANGE TABLE MODEL DECLARATION MODULE -->
2
3<!-- This set of declarations defines the XML version of the Exchange
4     Table Model as of the date shown in the Formal Public Identifier
5     (FPI) for this entity.
6
7     This set of declarations may be referred to using a public external
8     entity declaration and reference as shown in the following three
9     lines:
10
11     <!ENTITY % calstblx
12       PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN">
13       %calstblx;
14
15     If various parameter entities used within this set of declarations
16     are to be given non-default values, the appropriate declarations
17     should be given before calling in this package (i.e., before the
18     "%calstblx;" reference).
19-->
20
21<!-- The motivation for this XML version of the Exchange Table Model
22     is simply to create an XML version of the SGML Exchange Table
23     Model. By design, no effort has been made to "improve" the model.
24
25     This XML version incorporates the logical bare minimum changes
26     necessary to make the Exchange Table Model a valid XML DTD.
27-->
28
29<!-- The XML version of the Exchange Table Model differs from
30     the SGML version in the following ways:
31
32     The following parameter entities have been removed:
33
34       - tbl.table.excep, tbl.hdft.excep, tbl.row.excep, tbl.entry.excep
35         There are no exceptions in XML. The following normative statement
36         is made in lieu of exceptions: the exchange table model explicitly
37         forbids a table from occurring within another table. If the
38         content model of an entry includes a table element, then this
39         cannot be enforced by the DTD, but it is a deviation from the
40         exchange table model to include a table within a table.
41
42       - tbl.hdft.name, tbl.hdft.mdl, tbl.hdft.excep, tbl.hdft.att
43         The motivation for these elements was to change the table
44         header/footer elements. Since XML does not allow element declarations
45         to contain name groups, and the exchange table model does not
46         allow a table to contain footers, the continued presence of these
47         attributes seems unnecessary.
48
49     The following parameter entity has been added:
50
51       - tbl.thead.att
52         This entity parameterizes the attributes on thead. It replaces
53         the tbl.hdft.att parameter entity.
54
55     Other miscellaneous changes:
56
57       - Tag ommission indicators have been removed
58       - Comments have been removed from declarations
59       - NUMBER attributes have been changed to NMTOKEN
60       - NUTOKEN attributes have been to changed to NMTOKEN
61       - Removed the grouping characters around the content model
62         parameter entry for the 'entry' element. This is necessary
63         so that an entry can contain #PCDATA and be defined as an
64         optional, repeatable OR group beginning with #PCDATA.
65-->
66
67<!-- This entity includes a set of element and attribute declarations
68     that partially defines the Exchange table model.  However, the model
69     is not well-defined without the accompanying natural language
70     description of the semantics (meanings) of these various elements,
71     attributes, and attribute values.  The semantic writeup, also available
72     from SGML Open, should be used in conjunction with this entity.
73-->
74
75<!-- In order to use the Exchange table model, various parameter entity
76     declarations are required.  A brief description is as follows:
77
78     ENTITY NAME      WHERE USED              WHAT IT IS
79
80     %yesorno         In ATTLIST of:          An attribute declared value
81                      almost all elements     for a "boolean" attribute
82
83     %paracon         In content model of:    The "text" (logical content)
84                      <entry>                 of the model group for <entry>
85
86     %titles          In content model of:    The "title" part of the model
87                      table element           group for the table element
88
89     %tbl.table.name  In declaration of:      The name of the "table"
90                      table element           element
91
92     %tbl.table-titles.mdl In content model of: The model group for the title
93                      table elements          part of the content model for
94                                              table element
95
96     %tbl.table.mdl   In content model of:    The model group for the content
97                      table elements          model for table element,
98                                              often (and by default) defined
99                                              in terms of %tbl.table-titles.mdl
100                                              and tgroup
101
102     %tbl.table.att   In ATTLIST of:          Additional attributes on the
103                      table element           table element
104
105     %bodyatt         In ATTLIST of:          Additional attributes on the
106                      table element           table element (for backward
107                                              compatibility with the SGML
108                                              model)
109
110     %tbl.tgroup.mdl  In content model of:    The model group for the content
111                      <tgroup>                model for <tgroup>
112
113     %tbl.tgroup.att  In ATTLIST of:          Additional attributes on the
114                      <tgroup>                <tgroup> element
115
116     %tbl.thead.att   In ATTLIST of:          Additional attributes on the
117                      <thead>                 <thead> element
118
119     %tbl.tbody.att   In ATTLIST of:          Additional attributes on the
120                      <tbody>                 <tbody> element
121
122     %tbl.colspec.att In ATTLIST of:          Additional attributes on the
123                      <colspec>               <colspec> element
124
125     %tbl.row.mdl     In content model of:    The model group for the content
126                      <row>                   model for <row>
127
128     %tbl.row.att     In ATTLIST of:          Additional attributes on the
129                      <row>                   <row> element
130
131     %tbl.entry.mdl   In content model of:    The model group for the content
132                      <entry>                 model for <entry>
133
134     %tbl.entry.att   In ATTLIST of:          Additional attributes on the
135                      <entry>                 <entry> element
136
137     This set of declarations will use the default definitions shown below
138     for any of these parameter entities that are not declared before this
139     set of declarations is referenced.
140-->
141
142<!-- These definitions are not directly related to the table model, but are
143     used in the default CALS table model and may be defined elsewhere (and
144     prior to the inclusion of this table module) in the referencing DTD. -->
145
146<!ENTITY % yesorno 'NMTOKEN'> <!-- no if zero(s), yes if any other value -->
147<!ENTITY % titles  'title?'>
148<!ENTITY % paracon '#PCDATA'> <!-- default for use in entry content -->
149
150<!--
151The parameter entities as defined below change and simplify the CALS table
152model as published (as part of the Example DTD) in MIL-HDBK-28001.  The
153resulting simplified DTD has support from the SGML Open vendors and is
154therefore more interoperable among different systems.
155
156These following declarations provide the Exchange default definitions
157for these entities.  However, these entities can be redefined (by giving
158the appropriate parameter entity declaration(s) prior to the reference
159to this Table Model declaration set entity) to fit the needs of the
160current application.
161
162Note, however, that changes may have significant effect on the ability to
163interchange table information.  These changes may manifest themselves
164in useability, presentation, and possible structure information degradation.
165-->
166
167<!ENTITY % tbl.table.name       "table">
168<!ENTITY % tbl.table-titles.mdl "%titles;,">
169<!ENTITY % tbl.table-main.mdl   "tgroup+">
170<!ENTITY % tbl.table.mdl        "%tbl.table-titles.mdl; %tbl.table-main.mdl;">
171<!ENTITY % tbl.table.att        "
172    pgwide      %yesorno;       #IMPLIED ">
173<!ENTITY % bodyatt              "">
174<!ENTITY % tbl.tgroup.mdl       "colspec*,thead?,tbody">
175<!ENTITY % tbl.tgroup.att       "">
176<!ENTITY % tbl.thead.att        "">
177<!ENTITY % tbl.tbody.att        "">
178<!ENTITY % tbl.colspec.att      "">
179<!ENTITY % tbl.row.mdl          "entry+">
180<!ENTITY % tbl.row.att          "">
181<!ENTITY % tbl.entry.mdl        "(%paracon;)*">
182<!ENTITY % tbl.entry.att        "">
183
184<!-- =====  Element and attribute declarations follow. =====  -->
185
186<!--
187     Default declarations previously defined in this entity and
188     referenced below include:
189     ENTITY % tbl.table.name       "table"
190     ENTITY % tbl.table-titles.mdl "%titles;,"
191     ENTITY % tbl.table.mdl        "%tbl.table-titles; tgroup+"
192     ENTITY % tbl.table.att        "
193                        pgwide          %yesorno;       #IMPLIED "
194-->
195
196<!ELEMENT %tbl.table.name; (%tbl.table.mdl;)>
197
198<!ATTLIST %tbl.table.name;
199        frame           (top|bottom|topbot|all|sides|none)      #IMPLIED
200        colsep          %yesorno;                               #IMPLIED
201        rowsep          %yesorno;                               #IMPLIED
202        %tbl.table.att;
203        %bodyatt;
204>
205
206<!--
207     Default declarations previously defined in this entity and
208     referenced below include:
209     ENTITY % tbl.tgroup.mdl    "colspec*,thead?,tbody"
210     ENTITY % tbl.tgroup.att    ""
211-->
212
213<!ELEMENT tgroup (%tbl.tgroup.mdl;) >
214
215<!ATTLIST tgroup
216        cols            NMTOKEN                                 #REQUIRED
217        colsep          %yesorno;                               #IMPLIED
218        rowsep          %yesorno;                               #IMPLIED
219        align           (left|right|center|justify|char)        #IMPLIED
220        %tbl.tgroup.att;
221>
222
223<!--
224     Default declarations previously defined in this entity and
225     referenced below include:
226     ENTITY % tbl.colspec.att   ""
227-->
228
229<!ELEMENT colspec EMPTY >
230
231<!ATTLIST colspec
232        colnum          NMTOKEN                                 #IMPLIED
233        colname         NMTOKEN                                 #IMPLIED
234        colwidth        CDATA                                   #IMPLIED
235        colsep          %yesorno;                               #IMPLIED
236        rowsep          %yesorno;                               #IMPLIED
237        align           (left|right|center|justify|char)        #IMPLIED
238        char            CDATA                                   #IMPLIED
239        charoff         NMTOKEN                                 #IMPLIED
240        %tbl.colspec.att;
241>
242
243<!--
244     Default declarations previously defined in this entity and
245     referenced below include:
246     ENTITY % tbl.thead.att      ""
247-->
248
249<!ELEMENT thead (row+)>
250
251<!ATTLIST thead
252        valign          (top|middle|bottom)                     #IMPLIED
253        %tbl.thead.att;
254>
255
256<!--
257     Default declarations previously defined in this entity and
258     referenced below include:
259     ENTITY % tbl.tbody.att     ""
260-->
261
262<!ELEMENT tbody (row+)>
263
264<!ATTLIST tbody
265        valign          (top|middle|bottom)                     #IMPLIED
266        %tbl.tbody.att;
267>
268
269<!--
270     Default declarations previously defined in this entity and
271     referenced below include:
272     ENTITY % tbl.row.mdl       "entry+"
273     ENTITY % tbl.row.att       ""
274-->
275
276<!ELEMENT row (%tbl.row.mdl;)>
277
278<!ATTLIST row
279        rowsep          %yesorno;                               #IMPLIED
280        valign          (top|middle|bottom)                     #IMPLIED
281        %tbl.row.att;
282>
283
284
285<!--
286     Default declarations previously defined in this entity and
287     referenced below include:
288     ENTITY % paracon           "#PCDATA"
289     ENTITY % tbl.entry.mdl     "(%paracon;)*"
290     ENTITY % tbl.entry.att     ""
291-->
292
293<!ELEMENT entry %tbl.entry.mdl;>
294
295<!ATTLIST entry
296        colname         NMTOKEN                                 #IMPLIED
297        namest          NMTOKEN                                 #IMPLIED
298        nameend         NMTOKEN                                 #IMPLIED
299        morerows        NMTOKEN                                 #IMPLIED
300        colsep          %yesorno;                               #IMPLIED
301        rowsep          %yesorno;                               #IMPLIED
302        align           (left|right|center|justify|char)        #IMPLIED
303        char            CDATA                                   #IMPLIED
304        charoff         NMTOKEN                                 #IMPLIED
305        valign          (top|middle|bottom)                     #IMPLIED
306        %tbl.entry.att;
307>
308