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 % pcd "#PCDATA">
149<!ENTITY % paracon '%pcd;'> <!-- default for use in entry content -->
150
151<!--
152The parameter entities as defined below change and simplify the CALS table
153model as published (as part of the Example DTD) in MIL-HDBK-28001.  The
154resulting simplified DTD has support from the SGML Open vendors and is
155therefore more interoperable among different systems.
156
157These following declarations provide the Exchange default definitions
158for these entities.  However, these entities can be redefined (by giving
159the appropriate parameter entity declaration(s) prior to the reference
160to this Table Model declaration set entity) to fit the needs of the
161current application.
162
163Note, however, that changes may have significant effect on the ability to
164interchange table information.  These changes may manifest themselves
165in useability, presentation, and possible structure information degradation.
166-->
167
168<!ENTITY % tbl.table.name       "table">
169<!ENTITY % tbl.table-titles.mdl "%titles;,">
170<!ENTITY % tbl.table-main.mdl   "tgroup+">
171<!ENTITY % tbl.table.mdl        "%tbl.table-titles.mdl; %tbl.table-main.mdl;">
172<!ENTITY % tbl.table.att        "
173    pgwide      %yesorno;       #IMPLIED ">
174<!ENTITY % bodyatt              "">
175<!ENTITY % tbl.tgroup.mdl       "colspec*,thead?,tbody">
176<!ENTITY % tbl.tgroup.att       "">
177<!ENTITY % tbl.thead.att        "">
178<!ENTITY % tbl.tbody.att        "">
179<!ENTITY % tbl.colspec.att      "">
180<!ENTITY % tbl.row.mdl          "entry+">
181<!ENTITY % tbl.row.att          "">
182<!ENTITY % tbl.entry.mdl        "(%paracon;)*">
183<!ENTITY % tbl.entry.att        "">
184
185<!-- =====  Element and attribute declarations follow. =====  -->
186
187<!--
188     Default declarations previously defined in this entity and
189     referenced below include:
190     ENTITY % tbl.table.name       "table"
191     ENTITY % tbl.table-titles.mdl "%titles;,"
192     ENTITY % tbl.table.mdl        "%tbl.table-titles; tgroup+"
193     ENTITY % tbl.table.att        "
194                        pgwide          %yesorno;       #IMPLIED "
195-->
196
197<!ELEMENT %tbl.table.name; (%tbl.table.mdl;)>
198
199<!ATTLIST %tbl.table.name;
200        frame           (top|bottom|topbot|all|sides|none)      #IMPLIED
201        colsep          %yesorno;                               #IMPLIED
202        rowsep          %yesorno;                               #IMPLIED
203        %tbl.table.att;
204        %bodyatt;
205>
206
207<!--
208     Default declarations previously defined in this entity and
209     referenced below include:
210     ENTITY % tbl.tgroup.mdl    "colspec*,thead?,tbody"
211     ENTITY % tbl.tgroup.att    ""
212-->
213
214<!ELEMENT tgroup (%tbl.tgroup.mdl;) >
215
216<!ATTLIST tgroup
217        cols            NMTOKEN                                 #REQUIRED
218        colsep          %yesorno;                               #IMPLIED
219        rowsep          %yesorno;                               #IMPLIED
220        align           (left|right|center|justify|char)        #IMPLIED
221        %tbl.tgroup.att;
222>
223
224<!--
225     Default declarations previously defined in this entity and
226     referenced below include:
227     ENTITY % tbl.colspec.att   ""
228-->
229
230<!ELEMENT colspec EMPTY >
231
232<!ATTLIST colspec
233        colnum          NMTOKEN                                 #IMPLIED
234        colname         NMTOKEN                                 #IMPLIED
235        colwidth        CDATA                                   #IMPLIED
236        colsep          %yesorno;                               #IMPLIED
237        rowsep          %yesorno;                               #IMPLIED
238        align           (left|right|center|justify|char)        #IMPLIED
239        char            CDATA                                   #IMPLIED
240        charoff         NMTOKEN                                 #IMPLIED
241        %tbl.colspec.att;
242>
243
244<!--
245     Default declarations previously defined in this entity and
246     referenced below include:
247     ENTITY % tbl.thead.att      ""
248-->
249
250<!ELEMENT thead (row+)>
251
252<!ATTLIST thead
253        valign          (top|middle|bottom)                     #IMPLIED
254        %tbl.thead.att;
255>
256
257<!--
258     Default declarations previously defined in this entity and
259     referenced below include:
260     ENTITY % tbl.tbody.att     ""
261-->
262
263<!ELEMENT tbody (row+)>
264
265<!ATTLIST tbody
266        valign          (top|middle|bottom)                     #IMPLIED
267        %tbl.tbody.att;
268>
269
270<!--
271     Default declarations previously defined in this entity and
272     referenced below include:
273     ENTITY % tbl.row.mdl       "entry+"
274     ENTITY % tbl.row.att       ""
275-->
276
277<!ELEMENT row (%tbl.row.mdl;)>
278
279<!ATTLIST row
280        rowsep          %yesorno;                               #IMPLIED
281        valign          (top|middle|bottom)                     #IMPLIED
282        %tbl.row.att;
283>
284
285
286<!--
287     Default declarations previously defined in this entity and
288     referenced below include:
289     ENTITY % paracon           "#PCDATA"
290     ENTITY % tbl.entry.mdl     "(%paracon;)*"
291     ENTITY % tbl.entry.att     ""
292-->
293
294<!ELEMENT entry %tbl.entry.mdl;>
295
296<!ATTLIST entry
297        colname         NMTOKEN                                 #IMPLIED
298        namest          NMTOKEN                                 #IMPLIED
299        nameend         NMTOKEN                                 #IMPLIED
300        morerows        NMTOKEN                                 #IMPLIED
301        colsep          %yesorno;                               #IMPLIED
302        rowsep          %yesorno;                               #IMPLIED
303        align           (left|right|center|justify|char)        #IMPLIED
304        char            CDATA                                   #IMPLIED
305        charoff         NMTOKEN                                 #IMPLIED
306        valign          (top|middle|bottom)                     #IMPLIED
307        %tbl.entry.att;
308>
309