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