# XML EXCHANGE TABLE MODEL DECLARATION MODULE # This set of declarations defines the XML version of 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 three # lines: # # # %calstblx; # # 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 # "%calstblx;" reference). # The motivation for this XML version of the Exchange Table Model # is simply to create an XML version of the SGML Exchange Table # Model. By design, no effort has been made to "improve" the model. # # This XML version incorporates the logical bare minimum changes # necessary to make the Exchange Table Model a valid XML DTD. # The XML version of the Exchange Table Model differs from # the SGML version in the following ways: # # The following parameter entities have been removed: # # - tbl.table.excep, tbl.hdft.excep, tbl.row.excep, tbl.entry.excep # There are no exceptions in XML. The following normative statement # is made in lieu of exceptions: the exchange table model explicitly # forbids a table from occurring within another table. If the # content model of an entry includes a table element, then this # cannot be enforced by the DTD, but it is a deviation from the # exchange table model to include a table within a table. # # - tbl.hdft.name, tbl.hdft.mdl, tbl.hdft.excep, tbl.hdft.att # The motivation for these elements was to change the table # header/footer elements. Since XML does not allow element declarations # to contain name groups, and the exchange table model does not # allow a table to contain footers, the continued presence of these # attributes seems unnecessary. # # The following parameter entity has been added: # # - tbl.thead.att # This entity parameterizes the attributes on thead. It replaces # the tbl.hdft.att parameter entity. # # Other miscellaneous changes: # # - Tag ommission indicators have been removed # - Comments have been removed from declarations # - NUMBER attributes have been changed to NMTOKEN # - NUTOKEN attributes have been to changed to NMTOKEN # - Removed the grouping characters around the content model # parameter entry for the 'entry' element. This is necessary # so that an entry can contain #PCDATA and be defined as an # optional, repeatable OR group beginning with #PCDATA. # 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 # # %yesorno In ATTLIST of: An attribute declared value # almost all elements for a "boolean" attribute # # %paracon In content model of: The "text" (logical content) # of the model group for # # %titles In content model of: The "title" part of the model # table element group for the table element # # %tbl.table.name In declaration of: The name of the "table" # table element element # # %tbl.table-titles.mdl In content model of: The model group for the title # table elements part of the content model for # table element # # %tbl.table.mdl In content model of: The model group for the content # table elements model for table element, # often (and by default) defined # in terms of %tbl.table-titles.mdl # and tgroup # # %tbl.table.att In ATTLIST of: Additional attributes on the # table element table element # # %bodyatt In ATTLIST of: Additional attributes on the # table element table element (for backward # compatibility with the SGML # model) # # %tbl.tgroup.mdl In content model of: The model group for the content # model for # # %tbl.tgroup.att In ATTLIST of: Additional attributes on the # element # # %tbl.thead.att In ATTLIST of: Additional attributes on the # element # # %tbl.tbody.att In ATTLIST of: Additional attributes on the # element # # %tbl.colspec.att In ATTLIST of: Additional attributes on the # element # # %tbl.row.mdl In content model of: The model group for the content # model for # # %tbl.row.att In ATTLIST of: Additional attributes on the # element # # %tbl.entry.mdl In content model of: The model group for the content # model for # # %tbl.entry.att In ATTLIST of: Additional attributes on the # 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. yesorno = xsd:NMTOKEN # no if zero(s), yes if any other value pcd = text paracon = pcd # 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. tbl.table-titles.mdl = title tbl.table-main.mdl = tgroup+ tbl.table.mdl = tbl.table-titles.mdl | tbl.table-main.mdl tbl.table.att = attribute pgwide { yesorno }? bodyatt = empty tbl.tgroup.mdl = colspec*, thead?, tbody tbl.tgroup.att = empty tbl.thead.att = empty tbl.tbody.att = empty tbl.colspec.att = empty tbl.row.mdl = entry+ tbl.row.att = empty tbl.entry.mdl = paracon* tbl.entry.att = empty # ===== 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.mdl "%tbl.table-titles; tgroup+" # ENTITY % tbl.table.att " # pgwide %yesorno; #IMPLIED " table = element table { table.attlist, tbl.table.mdl } table.attlist &= attribute frame { "top" | "bottom" | "topbot" | "all" | "sides" | "none" }?, attribute colsep { yesorno }?, attribute rowsep { yesorno }?, 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 "" tgroup = element tgroup { tgroup.attlist, tbl.tgroup.mdl } tgroup.attlist &= attribute cols { xsd:NMTOKEN }, attribute colsep { yesorno }?, attribute rowsep { yesorno }?, attribute align { "left" | "right" | "center" | "justify" | "char" }?, tbl.tgroup.att # Default declarations previously defined in this entity and # referenced below include: # ENTITY % tbl.colspec.att "" colspec = element colspec { colspec.attlist, empty } colspec.attlist &= attribute colnum { xsd:NMTOKEN }?, attribute colname { xsd:NMTOKEN }?, attribute colwidth { text }?, attribute colsep { yesorno }?, attribute rowsep { yesorno }?, attribute align { "left" | "right" | "center" | "justify" | "char" }?, attribute char { text }?, attribute charoff { xsd:NMTOKEN }?, tbl.colspec.att # Default declarations previously defined in this entity and # referenced below include: # ENTITY % tbl.thead.att "" thead = element thead { thead.attlist, row+ } thead.attlist &= attribute valign { "top" | "middle" | "bottom" }?, tbl.thead.att # Default declarations previously defined in this entity and # referenced below include: # ENTITY % tbl.tbody.att "" tbody = element tbody { tbody.attlist, row+ } tbody.attlist &= attribute valign { "top" | "middle" | "bottom" }?, tbl.tbody.att # Default declarations previously defined in this entity and # referenced below include: # ENTITY % tbl.row.mdl "entry+" # ENTITY % tbl.row.att "" row = element row { row.attlist, tbl.row.mdl } row.attlist &= attribute rowsep { yesorno }?, attribute valign { "top" | "middle" | "bottom" }?, 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.att "" entry = element entry { entry.attlist, tbl.entry.mdl } entry.attlist &= attribute colname { xsd:NMTOKEN }?, attribute namest { xsd:NMTOKEN }?, attribute nameend { xsd:NMTOKEN }?, attribute morerows { xsd:NMTOKEN }?, attribute colsep { yesorno }?, attribute rowsep { yesorno }?, attribute align { "left" | "right" | "center" | "justify" | "char" }?, attribute char { text }?, attribute charoff { xsd:NMTOKEN }?, attribute valign { "top" | "middle" | "bottom" }?, tbl.entry.att title |= notAllowed start = table