<!-- CALS TABLE MODEL DECLARATION MODULE -->

<!-- This set of declarations defines the CALS 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 "-//USA-DOD//DTD Table Model 951010//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 CALS 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, available
     as a separate entity, should be used in conjunction with this entity.
-->

<!-- In order to use the CALS 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)

     %secur           In ATTLIST of:          Additional (non-table related)
                      table element(s)        attributes on all the listed
                      <tgroup>                elements
                      <tbody>
                      table head and foot element(s)
                      <row>
                      <entrytbl>
                      <entry>

     %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" (data content) part
                      <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> and <entrytbl> elements
                      <entrytbl>

     %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.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.entrytbl.mdl In content model of:   The model group for the content
                      <entrytbl>              model for <entrytbl>

     %tbl.entrytbl.excep In content model of: The exceptions for the content
                      <entrytbl>              model for <entrytbl>

     %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>

     If any of these parameter entities are not declared before this set of
     declarations is referenced, this set of declarations will make the
     following default definitions for all of these have parameter entities.
-->

<!-- These definitions are not directly related to the table model, but are 
     used in the default CALS table model and are usually defined elsewhere 
     (and prior to the inclusion of this table module) in a CALS DTD. -->

<!ENTITY % bodyatt "">
<!ENTITY % secur "">
<!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 provide the CALS table model
as published (as part of the Example DTD) in MIL-HDBK-28001.

These following declarations provide the CALS-compliant default definitions
for these entities.  However, these entities can and should 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.
-->

<!ENTITY % tbl.table.name       "(table|chart)">
<!ENTITY % tbl.table-titles.mdl "%titles,">
<!ENTITY % tbl.table-main.mdl   "(tgroup+|graphic+)">
<!ENTITY % tbl.table.mdl        "%tbl.table-titles.mdl; %tbl.table-main.mdl;">
<!ENTITY % tbl.table.excep      "-(table|chart|figure)">
<!ENTITY % tbl.table.att        '
    tabstyle    NMTOKEN         #IMPLIED
    tocentry    %yesorno;       #IMPLIED
    shortentry  %yesorno;       #IMPLIED
    orient      (port|land)     #IMPLIED
    pgwide      %yesorno;       #IMPLIED '>
<!ENTITY % tbl.tgroup.mdl       "colspec*,spanspec*,thead?,tfoot?,tbody">
<!ENTITY % tbl.tgroup.att       '
    tgroupstyle NMTOKEN         #IMPLIED '>
<!ENTITY % tbl.hdft.name        "(thead|tfoot)">
<!ENTITY % tbl.hdft.mdl         "colspec*,row+">
<!ENTITY % tbl.hdft.excep       "-(entrytbl)">
<!ENTITY % tbl.row.mdl          "(entry|entrytbl)+">
<!ENTITY % tbl.row.excep        "-(pgbrk)">
<!ENTITY % tbl.entrytbl.mdl     "colspec*,spanspec*,thead?,tbody">
<!ENTITY % tbl.entrytbl.excep   "-(entrytbl|pgbrk)">
<!ENTITY % tbl.entry.mdl        "(para|warning|caution|note|legend|%paracon;)*">
<!ENTITY % tbl.entry.excep      "-(pgbrk)">

<!-- =====  Element and attribute declarations follow. =====  -->

<!--
     Default declarations previously defined in this entity and
     referenced below include:
     ENTITY % tbl.table.name       "(table|chart)"
     ENTITY % tbl.table-titles.mdl "%titles,"
     ENTITY % tbl.table-main.mdl   "(tgroup+|graphic+)"
     ENTITY % tbl.table.mdl        "%tbl.table-titles; %tbl.table-main.mdl;"
     ENTITY % tbl.table.excep      "-(table|chart|figure)"
     ENTITY % tbl.table.att        '
                        tabstyle        NMTOKEN         #IMPLIED
                        tocentry        %yesorno;       #IMPLIED
                        shortentry      %yesorno;       #IMPLIED
                        orient          (port|land)     #IMPLIED
                        pgwide          %yesorno;       #IMPLIED '
-->

<!ELEMENT %tbl.table.name; - - (%tbl.table.mdl;) %tbl.table.excep; >

<!ATTLIST table
        frame           (top|bottom|topbot|all|sides|none)      #IMPLIED
        colsep          %yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        %tbl.table.att;
        %bodyatt;
        %secur;
>

<!--
     Default declarations previously defined in this entity and
     referenced below include:
     ENTITY % tbl.tgroup.mdl    "colspec*,spanspec*,thead?,tfoot?,tbody"
     ENTITY % tbl.tgroup.att    '
                        tgroupstyle     NMTOKEN         #IMPLIED '
-->

<!ELEMENT tgroup - O (%tbl.tgroup.mdl;) >

<!ATTLIST tgroup
        cols            NUMBER                                  #REQUIRED
        %tbl.tgroup.att;
        colsep          %yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        align           (left|right|center|justify|char)        #IMPLIED
        char            CDATA                                   #IMPLIED
        charoff         NUTOKEN                                 #IMPLIED
        %secur;
>

<!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
>

<!ELEMENT spanspec - O EMPTY >

<!ATTLIST spanspec
        namest          NMTOKEN                                 #REQUIRED
        nameend         NMTOKEN                                 #REQUIRED
        spanname        NMTOKEN                                 #REQUIRED
        colsep          %yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        align           (left|right|center|justify|char)        #IMPLIED
        char            CDATA                                   #IMPLIED
        charoff         NUTOKEN                                 #IMPLIED
>


<!--
     Default declarations previously defined in this entity and
     referenced below include:
     ENTITY % tbl.hdft.name     "(thead|tfoot)"
     ENTITY % tbl.hdft.mdl      "colspec*,row+"
     ENTITY % tbl.hdft.excep    "-(entrytbl)"
-->

<!ELEMENT %tbl.hdft.name; - O (%tbl.hdft.mdl;)  %tbl.hdft.excep;>

<!ATTLIST %tbl.hdft.name;
        valign          (top|middle|bottom)                     #IMPLIED
        %secur;
>


<!ELEMENT tbody - O (row+)>

<!ATTLIST tbody
        valign          (top|middle|bottom)                     #IMPLIED
        %secur;
>

<!--
     Default declarations previously defined in this entity and
     referenced below include:
     ENTITY % tbl.row.mdl       "(entry|entrytbl)+"
     ENTITY % tbl.row.excep     "-(pgbrk)"
-->

<!ELEMENT row - O (%tbl.row.mdl;) %tbl.row.excep;>

<!ATTLIST row
        rowsep          %yesorno;                               #IMPLIED
        valign          (top|middle|bottom)                     #IMPLIED
        %secur;
>

<!--
     Default declarations previously defined in this entity and
     referenced below include:
     ENTITY % tbl.entrytbl.mdl  "colspec*,spanspec*,thead?,tbody"
     ENTITY % tbl.entrytbl.excep "-(entrytbl|pgbrk)"
     ENTITY % tbl.tgroup.att    '
                        tgroupstyle     NMTOKEN         #IMPLIED '
-->

<!ELEMENT entrytbl - - (%tbl.entrytbl.mdl) %tbl.entrytbl.excep; >

<!ATTLIST entrytbl
        cols            NUMBER                                  #REQUIRED
        %tbl.tgroup.att;
        colname         NMTOKEN                                 #IMPLIED
        spanname        NMTOKEN                                 #IMPLIED
        namest          NMTOKEN                                 #IMPLIED
        nameend         NMTOKEN                                 #IMPLIED
        colsep          %yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        align           (left|right|center|justify|char)        #IMPLIED
        char            CDATA                                   #IMPLIED
        charoff         NUTOKEN                                 #IMPLIED
        %secur;
>


<!--
     Default declarations previously defined in this entity and
     referenced below include:
     ENTITY % paracon           "#PCDATA"
     ENTITY % tbl.entry.mdl     "(para|warning|caution|note|legend|%paracon;)*"
     ENTITY % tbl.entry.excep   "-(pgbrk)"
-->

<!ELEMENT entry - O (%tbl.entry.mdl;) %tbl.entry.excep; >

<!ATTLIST entry
        colname         NMTOKEN                                 #IMPLIED
        namest          NMTOKEN                                 #IMPLIED
        nameend         NMTOKEN                                 #IMPLIED
        spanname        NMTOKEN                                 #IMPLIED
        morerows        NUMBER                                  #IMPLIED
        colsep          %yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        align           (left|right|center|justify|char)        #IMPLIED
        char            CDATA                                   #IMPLIED
        charoff         NUTOKEN                                 #IMPLIED
        rotate          %yesorno;                               #IMPLIED
        valign          (top|middle|bottom)                     #IMPLIED
        %secur;
>
