<!-- ====================================================================== -->
<!-- CALS Table Model XML V1.0
     Part of the DocBk30 XML V1.0 DTD
     http://nwalsh.com/docbook/
 
     See COPYRIGHT for more information

     Please direct all questions and comments about this DTD to
     Norman Walsh, <ndw@nwalsh.com>.

     This DTD is based on the CALS Table Model
     PUBLIC "-//USA-DOD//DTD Table Model 951010//EN"
                                                                            -->
<!-- ====================================================================== -->

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

<!-- no if zero(s),
                                yes if any other digits value -->

<!ENTITY % yesorno 'CDATA'>
<!ENTITY % titles  'title?'>

<!-- default for use in entry content -->

<!ENTITY % paracon '#PCDATA'>

<!--
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      "">
<!ENTITY % tbl.table.att        '
    tabstyle    CDATA           #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 CDATA           #IMPLIED '>
<!-- Element declarations can't contain namegroups in XML, so this is 
     pointless:
<!ENTITY % tbl.hdft.name        "(thead|tfoot)">
-->
<!ENTITY % tbl.hdft.mdl         "colspec*,row+">
<!ENTITY % tbl.hdft.excep       "">
<!ENTITY % tbl.row.mdl          "(entry|entrytbl)+">
<!ENTITY % tbl.row.excep        "">
<!ENTITY % tbl.entrytbl.mdl     "colspec*,spanspec*,thead?,tbody">
<!ENTITY % tbl.entrytbl.excep   "">
<!ENTITY % tbl.entry.mdl        "(para|warning|caution|note|legend|%paracon;)*">
<!ENTITY % tbl.entry.excep      "">

<!-- =====  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        CDATA           #IMPLIED
                        tocentry        %yesorno;       #IMPLIED
                        shortentry      %yesorno;       #IMPLIED
                        orient          (port|land)     #IMPLIED
                        pgwide          %yesorno;       #IMPLIED '
-->

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

<!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     CDATA            #IMPLIED '
-->

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

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

<!ELEMENT colspec EMPTY >

<!ATTLIST colspec
        colnum          CDATA                                   #IMPLIED
        colname         CDATA                                   #IMPLIED
        colwidth        CDATA                                   #IMPLIED
        colsep          %yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        align           (left|right|center|justify|char)        #IMPLIED
        char            CDATA                                   #IMPLIED
        charoff         CDATA                                   #IMPLIED
>

<!ELEMENT spanspec EMPTY >

<!ATTLIST spanspec
        namest          CDATA                                   #REQUIRED
        nameend         CDATA                                   #REQUIRED
        spanname        CDATA                                   #REQUIRED
        colsep          %yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        align           (left|right|center|justify|char)        #IMPLIED
        char            CDATA                                   #IMPLIED
        charoff         CDATA                                   #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 thead (%tbl.hdft.mdl;)>
<!ATTLIST thead
        valign          (top|middle|bottom)                     #IMPLIED
        %secur;
>

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

<!ELEMENT tbody (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 (%tbl.row.mdl;)>

<!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     CDATA           #IMPLIED '
-->

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

<!ATTLIST entrytbl
        cols            CDATA                                   #REQUIRED
        %tbl.tgroup.att;
        colname         CDATA                                   #IMPLIED
        spanname        CDATA                                   #IMPLIED
        namest          CDATA                                   #IMPLIED
        nameend         CDATA                                   #IMPLIED
        colsep          %yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        align           (left|right|center|justify|char)        #IMPLIED
        char            CDATA                                   #IMPLIED
        charoff         CDATA                                   #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 (%tbl.entry.mdl;)*>

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

<!-- End of CALS Table Model XML V1.0 ..................................... -->
<!-- ...................................................................... -->