<!-- ...................................................................... -->
<!-- XHTML 1.0 Strict + MathML DTD  ....................................... -->
<!-- file: XHTML1-m.dtd
-->

<!--  XHTML 1.0 Strict + MathML DTD

      This is an extension of XHTML 1.0, an XML reformulation of HTML 4.0.
 
      NOTE:  this is an experimental prototype, not a final version.

      Copyright 1998-1999 World Wide Web Consortium
         (Massachusetts Institute of Technology, Institut National de 
          Recherche en Informatique et en Automatique, Keio University).
          All Rights Reserved.

      Permission to use, copy, modify and distribute the XHTML 1.0 DTD and
      its accompanying documentation for any purpose and without fee is
      hereby granted in perpetuity, provided that the above copyright notice
      and this paragraph appear in all copies.  The copyright holders make 
      no representation about the suitability of the DTD for any purpose.  

      It is provided "as is" without expressed or implied warranty.

        Author:     Murray M. Altheim <altheim@eng.sun.com>
        Revision:   @(#)XHTML1-m.dtd 1.14 99/04/01 SMI

      The XHTML DTD is an XML variant based on the W3C HTML 4.0 DTD:

        Draft:      $Date: 1999/04/02 14:27:27 $

        Authors:    Dave Raggett <dsr@w3.org>
                    Arnaud Le Hors <lehors@w3.org>
                    Ian Jacobs <ij@w3.org>

-->
<!--  This is an experimental driver file for version 1.0 of the 
      XHTML Strict DTD with MathML extension.

      Any location that allows an anchor or image element now allows 
      a <math> element. Within the <math> element, the MathML DTD is 
      unmodified.

      Please use this formal public identifier to identify it:

          "-//W3C//DTD XHTML 1.0 Strict + Math//EN"

      Please use this URI to identify the default namespace:   

          "http://www.w3.org/XHTML1_MathML1"

      Please use this URI to identify the document profile:   

          "http://www.w3.org/profiles/xhtml1-sm.pfl"

      For example, if you are using XHTML 1.0 plus MathML directly
      (as a hybrid DTD), use the FPI in the DOCTYPE declaration, with 
      the xmlns attribute on the document element to identify the 
      default namespace:

        <?xml version="1.0" ?>
        <!DOCTYPE html
             PUBLIC "-//W3C//DTD XHTML 1.0-Based Extension Strict + Math//EN"
                    "XHTML1-m.dtd" >
        <html xmlns="http://www.w3.org/XHTML1_MathML1"
              xml:lang="en" lang="en" >
        <head profile="http://www.w3.org/profiles/xhtml1-m.pfl">
        ...
        </html>
-->

<!-- The version attribute has historically been a container 
     for the DTD's public identifier (an FPI):  -->
<!ENTITY % HTML.version  "-//W3C//DTD XHTML 1.0-Based Extension Strict + Math//EN" >

<!-- The xmlns attribute on <html> identifies the default namespace 
     to namespace-aware applications:  -->
<!ENTITY % XHTML.ns  "http://www.w3.org/XHTML1-MathML1" >

<!-- The profile attribute on <head> identifies the profile of this 
     document type to profile-aware applications:  -->
<!ENTITY % XHTML.profile  "http://www.w3.org/profiles/xhtml1-m.pfl" >


<!-- MathML Module ..................................... -->
<!ENTITY % XHTML1-math.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 MathML//EN"
            "XHTML1-math.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 MathML Module  ............................................. -->
<!-- file: XHTML1-math.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-math.mod 1.13 99/04/01 SMI

     This DTD module is identified within the XHTML 1.0 DTD
     by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 MathML//EN"
     SYSTEM "XHTML1-math.mod"

     Revisions:
# 1999-03-15    changed 'var' element to 'svar', 'select' to 'index'
     ....................................................................... -->

<!-- IMPORTANT: This module changes the element type names for two 
     elements in MathML to avoid conflict with existing HTML elements:

     var ('Statistical Variance') has been changed to svar
     select (an index into a vector, etc.) has been changed to index
-->
<!-- redeclare the inline special content model to include math -->

<!ENTITY % Inlspecial.class  "a | img | object | map | math" >

<!-- ............................................................... -->
<!--
  The MathML DTD                                 REC-MathML-19980407

  This module serves to provide the <math> top level mathematical
  element for embedding within an HTML document.
 
  ..............

  Parsing MathML
  
  MathML documents should be validated using the XML DTD below. Note
  in particular that the xml attribute xml:space is not used, so 
  whitespace characters in element content (ie. outside the presentation 
  token elements mi, mo, mn, mtext, mspace, mtext, ms , the content 
  token elements ci, cn and annotation) are not significant.
  
  If the MathML is parsed without a DTD (ie. as a well-formed XML 
  fragment), it is the responsibility of the processing application to 
  treat these whitespace characters as not significant.
  
  An SGML parser (such as nsgmls) can be used to validate MathML. In 
  this case an SGML declaration defining the constraints of XML 
  applicable to an SGML parser must be used. 

       See http://www.w3.org/TR/NOTE-sgml-xml 

-->
<!-- ............................................................... -->

<!-- ............................................................... -->
<!--
     Content model for content and presentation
     and browser interface tags in MathML

     initial draft 9.May.1997          syntax = XML
     author = s.buswell sb@stilo.demon.co.uk

     revised 14.May.1997 by Robert Miner
     revised 29.June.1997 and 2.July.1997 by s.buswell

     revised 15.December.1997  by s.buswell
     revised 8.February.1998   by s.buswell
     revised 4.april.1998      by s.buswell

     W3C Recommendation      7 April 1998
-->
<!-- ............................................................... -->

<!-- general attribute definitions for class & style & id & other    -->
<!-- : attributes shared by all mathml elements                      -->

<!ENTITY % att-globalatts 
   'class CDATA #IMPLIED
    style CDATA #IMPLIED
    id    ID    #IMPLIED
    other CDATA #IMPLIED'
  >

<!-- ............................................................... -->
<!-- Presentation element set                                        -->

<!-- presentation attribute definitions -->

<!ENTITY % att-fontsize     'fontsize CDATA #IMPLIED' >
<!ENTITY % att-fontweight   'fontweight (normal | bold) #IMPLIED' >
<!ENTITY % att-fontstyle    'fontstyle (normal | italic) #IMPLIED' >
<!ENTITY % att-fontfamily   'fontfamily CDATA   #IMPLIED' >
<!ENTITY % att-color        'color CDATA   #IMPLIED' >

<!ENTITY % att-fontinfo     
   '%att-fontsize;
    %att-fontweight;
    %att-fontstyle;
    %att-fontfamily;
    %att-color;' >

<!ENTITY % att-form         'form (prefix | infix | postfix) #IMPLIED' >
<!ENTITY % att-fence        'fence (true | false ) #IMPLIED' >
<!ENTITY % att-separator    'separator (true | false ) #IMPLIED' >
<!ENTITY % att-lspace       'lspace CDATA  #IMPLIED' >
<!ENTITY % att-rspace       'rspace CDATA  #IMPLIED' >
<!ENTITY % att-stretchy     'stretchy (true | false ) #IMPLIED' >
<!ENTITY % att-symmetric    'symmetric (true | false ) #IMPLIED' >
<!ENTITY % att-maxsize      'maxsize CDATA #IMPLIED' >
<!ENTITY % att-minsize      'minsize CDATA #IMPLIED' >
<!ENTITY % att-largeop      'largeop (true | false ) #IMPLIED' >
<!ENTITY % att-movablelimits  
   'movablelimits (true | false ) #IMPLIED' >
<!ENTITY % att-accent       'accent (true | false)  #IMPLIED'>

<!ENTITY % att-opinfo 
   '%att-form;
    %att-fence;
    %att-separator;
    %att-lspace;
    %att-rspace;
    %att-stretchy;
    %att-symmetric;
    %att-maxsize;
    %att-minsize;
    %att-largeop;
    %att-movablelimits;
    %att-accent;' >

<!ENTITY % att-width                'width CDATA #IMPLIED' >
<!ENTITY % att-height               'height CDATA #IMPLIED' >
<!ENTITY % att-depth                'depth CDATA #IMPLIED' >

<!ENTITY % att-sizeinfo     
   '%att-width;
    %att-height;
    %att-depth;' >

<!ENTITY % att-lquote               'lquote CDATA #IMPLIED' >
<!ENTITY % att-rquote               'rquote CDATA #IMPLIED' >

<!ENTITY % att-linethickness 'linethickness CDATA #IMPLIED' >

<!ENTITY % att-scriptlevel          'scriptlevel CDATA #IMPLIED'>
<!ENTITY % att-displaystyle         'displaystyle (true | false) #IMPLIED'>
<!ENTITY % att-scriptsizemultiplier 'scriptsizemultiplier CDATA #IMPLIED' >
<!ENTITY % att-scriptminsize        'scriptminsize CDATA #IMPLIED'>
<!ENTITY % att-background           'background CDATA #IMPLIED' >

<!ENTITY % att-open                 'open CDATA #IMPLIED' >
<!ENTITY % att-close                'close CDATA #IMPLIED' >
<!ENTITY % att-separators           'separators CDATA #IMPLIED' >

<!ENTITY % att-subscriptshift       'subscriptshift CDATA #IMPLIED'>
<!ENTITY % att-superscriptshift     'superscriptshift CDATA #IMPLIED' >

<!ENTITY % att-accentunder          'accentunder (true | false)
#IMPLIED'>

<!ENTITY % att-align                'align CDATA #IMPLIED' >
<!ENTITY % att-rowalign             'rowalign CDATA #IMPLIED' >
<!ENTITY % att-columnalign          'columnalign CDATA #IMPLIED' >
<!ENTITY % att-groupalign           'groupalign CDATA #IMPLIED' >
<!ENTITY % att-alignmentscope       'alignmentscope CDATA #IMPLIED' >

<!ENTITY % att-rowspacing           'rowspacing CDATA #IMPLIED' >
<!ENTITY % att-columnspacing        'columnspacing CDATA #IMPLIED' >
<!ENTITY % att-rowlines             'rowlines CDATA #IMPLIED' >
<!ENTITY % att-columnlines          'columnlines CDATA #IMPLIED' >
<!ENTITY % att-frame                'frame (none | solid | dashed)
#IMPLIED' >
<!ENTITY % att-framespacing         'framespacing CDATA #IMPLIED' >
<!ENTITY % att-equalrows            'equalrows CDATA #IMPLIED' >
<!ENTITY % att-equalcolumns         'equalcolumns CDATA #IMPLIED' >

<!ENTITY % att-tableinfo         
   '%att-align;
    %att-rowalign;
    %att-columnalign;
    %att-groupalign;
    %att-alignmentscope;
    %att-rowspacing;
    %att-columnspacing;
    %att-rowlines;
    %att-columnlines;
    %att-frame;
    %att-framespacing;
    %att-equalrows;
    %att-equalcolumns;
    %att-displaystyle;' >

<!ENTITY % att-rowspan        'rowspan CDATA #IMPLIED' >
<!ENTITY % att-columnspan     'columnspan CDATA #IMPLIED' >

<!ENTITY % att-edge           'edge (left | right)  #IMPLIED ' >

<!ENTITY % att-actiontype     'actiontype CDATA #IMPLIED' >
<!ENTITY % att-selection      'selection CDATA #IMPLIED ' >

<!-- presentation token schemata with content-->

<!ENTITY % ptoken "mi | mn | mo | mtext | ms" >

<!ATTLIST mi        %att-fontinfo;
                    %att-globalatts; >

<!ATTLIST mn        %att-fontinfo;
                    %att-globalatts; >

<!ATTLIST mo        %att-fontinfo;
                    %att-opinfo;
                    %att-globalatts; >

<!ATTLIST mtext     %att-fontinfo;
                    %att-globalatts; >

<!ATTLIST ms        %att-fontinfo;
                    %att-lquote;
                    %att-rquote;
                    %att-globalatts; >

<!-- empty presentation token schemata -->

<!ENTITY % petoken  "mspace" >
<!ELEMENT mspace     EMPTY >

<!ATTLIST mspace    %att-sizeinfo;
                    %att-globalatts; >

<!-- presentation general layout schemata -->

<!ENTITY % pgenschema 
    "mrow|mfrac|msqrt|mroot|mstyle|merror|mpadded| mphantom|mfenced" >

<!ATTLIST mrow      %att-globalatts; >

<!ATTLIST mfrac     %att-linethickness;
                    %att-globalatts; >

<!ATTLIST msqrt     %att-globalatts; >

<!ATTLIST mroot     %att-globalatts; >

<!ATTLIST mstyle    %att-fontinfo;
                    %att-opinfo;
                    %att-lquote;
                    %att-rquote;
                    %att-linethickness;
                    %att-scriptlevel;
                    %att-displaystyle;
                    %att-scriptsizemultiplier;
                    %att-scriptminsize;
                    %att-background;
                    %att-open;
                    %att-close;
                    %att-separators;
                    %att-subscriptshift;
                    %att-superscriptshift;
                    %att-accentunder;
                    %att-tableinfo;
                    %att-rowspan;
                    %att-columnspan;
                    %att-edge;
                    %att-actiontype;
                    %att-selection;
                    %att-globalatts; >

<!ATTLIST merror    %att-globalatts; >

<!ATTLIST mpadded   %att-sizeinfo;
                    %att-lspace;
                    %att-globalatts; >

<!ATTLIST mphantom  %att-globalatts; >

<!ATTLIST mfenced   %att-open;
                    %att-close;
                    %att-separators;
                    %att-globalatts; >

<!-- presentation  layout schemata : scripts and limits -->

<!ENTITY % pscrschema  
   "msub|msup|msubsup| munder|mover|munderover|mmultiscripts" >

<!ATTLIST msub      %att-subscriptshift;
                    %att-globalatts; >

<!ATTLIST msup      %att-superscriptshift;
                    %att-globalatts; >

<!ATTLIST msubsup   %att-subscriptshift;
                    %att-superscriptshift;
                    %att-globalatts; >

<!ATTLIST munder    %att-accentunder;
                    %att-globalatts; >

<!ATTLIST mover     %att-accent;
                    %att-globalatts; >

<!ATTLIST munderover %att-accent;
                     %att-accentunder;
                     %att-globalatts; >

<!ATTLIST mmultiscripts
                    %att-subscriptshift;
                    %att-superscriptshift;
                    %att-globalatts; >

<!-- presentation layout schemata: script empty elements -->

<!ENTITY % pscreschema "mprescripts|none" >

<!ELEMENT mprescripts   EMPTY >
<!ATTLIST mprescripts         %att-globalatts; >

<!ELEMENT none          EMPTY >
<!ATTLIST none      %att-globalatts; >

<!-- presentation layout schemata: tables -->

<!ENTITY % ptabschema "mtable|mtr|mtd" >

<!ATTLIST mtable    %att-tableinfo;
                    %att-globalatts; >

<!ATTLIST mtr       %att-rowalign;
                    %att-columnalign;
                    %att-groupalign;
                    %att-globalatts; >

<!ATTLIST mtd       %att-rowalign;
                    %att-columnalign;
                    %att-groupalign;
                    %att-rowspan;
                    %att-columnspan;
                    %att-globalatts; >

<!ENTITY % plschema  "%pgenschema;|%pscrschema;|%ptabschema;" >

<!-- empty presentation layout schemata -->

<!ENTITY % peschema "maligngroup | malignmark" >

<!ELEMENT  malignmark  EMPTY >

<!ATTLIST malignmark     %att-edge;
                         %att-globalatts; >

<!ELEMENT maligngroup    EMPTY >
<!ATTLIST maligngroup    %att-groupalign;
                         %att-globalatts; >

<!-- presentation action schemata -->

<!ENTITY % pactions "maction" >
<!ATTLIST maction   %att-actiontype;
                    %att-selection;
                    %att-globalatts; >

<!-- Presentation entity for substitution into content tag constructs -->
<!-- excludes elements which are not valid as expressions             -->

<!ENTITY % PresInCont 
   "%ptoken; | 
    %petoken; | 
    %plschema; | 
    %peschema; | 
    %pactions; " >

<!-- Presentation entity - all presentation constructs -->

<!ENTITY % Presentation  
   "%ptoken; | 
    %petoken; | 
    %pscreschema; |
    %plschema; | 
    %peschema; | 
    %pactions; " >

<!-- ............................................................... -->
<!-- Content element set                                             -->
<!-- attribute definitions                                           -->

<!ENTITY % att-base              'base CDATA "10"' >
<!ENTITY % att-closure           'closure CDATA "closed"' >
<!ENTITY % att-definition        'definitionURL CDATA ""' >
<!ENTITY % att-encoding          'encoding CDATA ""' >
<!ENTITY % att-nargs             'nargs CDATA "1"' >
<!ENTITY % att-occurence         'occurence CDATA "function-model"' >
<!ENTITY % att-order             'order CDATA "numeric"' >
<!ENTITY % att-scope             'scope CDATA "local"' >
<!ENTITY % att-type              'type CDATA #IMPLIED' >

<!-- content leaf token elements -->

<!ENTITY % ctoken "ci | cn" >

<!ATTLIST ci        %att-type;
                    %att-globalatts; >

<!ATTLIST cn        %att-type;
                    %att-base;
                    %att-globalatts; >

<!-- content elements - specials -->

<!ENTITY % cspecial "apply | reln | lambda" >

<!ATTLIST apply     %att-globalatts; >

<!ATTLIST reln      %att-globalatts; >

<!ATTLIST lambda    %att-globalatts; >

<!-- content elements - others -->

<!ENTITY % cother "condition | declare | sep" >

<!ATTLIST condition %att-globalatts; 
  >

<!ATTLIST declare   %att-type;
                    %att-scope;
                    %att-nargs;
                    %att-occurence;
                    %att-definition;
                    %att-globalatts; >

<!ELEMENT sep  EMPTY >
<!ATTLIST sep       %att-globalatts; >

<!-- content elements - semantic mapping -->

<!ENTITY % csemantics "semantics | annotation | annotation-xml" >

<!ATTLIST semantics           %att-definition;
                              %att-globalatts; >

<!ATTLIST annotation          %att-encoding;
                              %att-globalatts; >

<!ATTLIST annotation-xml      %att-encoding;
                              %att-globalatts; >

<!-- content elements - constructors -->

<!ENTITY % cconstructor 
   "interval | list | matrix | matrixrow | set | vector" >

<!ATTLIST interval     %att-closure;
                       %att-globalatts; >

<!ATTLIST set          %att-globalatts; >

<!ATTLIST list         %att-order;
                       %att-globalatts; >

<!ATTLIST vector       %att-globalatts; >

<!ATTLIST matrix       %att-globalatts; >

<!ATTLIST matrixrow    %att-globalatts; >

<!-- content elements - operators -->

<!ENTITY % cfuncop1ary "inverse | ident " >

<!ELEMENT inverse          EMPTY >
<!ATTLIST inverse      %att-definition;
                       %att-globalatts; >

<!ENTITY % cfuncopnary "fn |  compose" >

<!ATTLIST fn           %att-definition;
                       %att-globalatts; >

<!ELEMENT ident        EMPTY >
<!ATTLIST ident        %att-definition;
                       %att-globalatts; >

<!ELEMENT compose      EMPTY >
<!ATTLIST compose      %att-definition;
                       %att-globalatts; >

<!ENTITY % carithop1ary "abs | conjugate | exp | factorial" >

<!ELEMENT exp          EMPTY >
<!ATTLIST exp          %att-definition;
                       %att-globalatts; >

<!ELEMENT abs          EMPTY >
<!ATTLIST abs          %att-definition;
                       %att-globalatts; >

<!ELEMENT conjugate    EMPTY >
<!ATTLIST conjugate    %att-definition;
                       %att-globalatts; >

<!ELEMENT factorial    EMPTY >
<!ATTLIST factorial    %att-definition;
                       %att-globalatts; >

<!ENTITY % carithop1or2ary "minus" >

<!ELEMENT minus        EMPTY >
<!ATTLIST minus        %att-definition;
                       %att-globalatts; >

<!ENTITY % carithop2ary "quotient | divide | power | rem" >

<!ELEMENT quotient     EMPTY >
<!ATTLIST quotient     %att-definition;
                       %att-globalatts; >

<!ELEMENT divide       EMPTY >
<!ATTLIST divide       %att-definition;
                       %att-globalatts; >

<!ELEMENT power        EMPTY >
<!ATTLIST power        %att-definition;
                       %att-globalatts; >

<!ELEMENT rem          EMPTY >
<!ATTLIST rem          %att-definition;
                       %att-globalatts; >

<!ENTITY % carithopnary "plus | times | max | min | gcd" >

<!ELEMENT plus         EMPTY >
<!ATTLIST plus         %att-definition;
                       %att-globalatts; >

<!ELEMENT max          EMPTY >
<!ATTLIST max          %att-definition;
                       %att-globalatts; >

<!ELEMENT min          EMPTY >
<!ATTLIST min          %att-definition;
                       %att-globalatts; >

<!ELEMENT times        EMPTY >
<!ATTLIST times        %att-definition;
                       %att-globalatts; >

<!ELEMENT gcd          EMPTY >
<!ATTLIST gcd          %att-definition;
                       %att-globalatts; >

<!ENTITY % carithoproot "root" >

<!ELEMENT root         EMPTY >
<!ATTLIST root         %att-definition;
                       %att-globalatts; >

<!ENTITY % clogicopquant "exists | forall" >

<!ELEMENT exists       EMPTY >
<!ATTLIST exists       %att-definition;
                       %att-globalatts; >

<!ELEMENT forall       EMPTY >
<!ATTLIST forall       %att-definition;
                       %att-globalatts; >

<!ENTITY % clogicopnary "and | or | xor" >

<!ELEMENT and          EMPTY >
<!ATTLIST and          %att-definition;
                       %att-globalatts; >

<!ELEMENT or           EMPTY >
<!ATTLIST or           %att-definition;
                       %att-globalatts; >

<!ELEMENT xor          EMPTY >
<!ATTLIST xor          %att-definition;
                       %att-globalatts; >

<!ENTITY % clogicop1ary "not" >

<!ELEMENT not          EMPTY >
<!ATTLIST not          %att-definition;
                       %att-globalatts; >

<!ENTITY % clogicop2ary "implies" >

<!ELEMENT implies      EMPTY >
<!ATTLIST implies      %att-definition;
                       %att-globalatts; >

<!ENTITY % ccalcop "log | int | diff | partialdiff" >

<!ELEMENT log          EMPTY >
<!ATTLIST log          %att-definition;
                       %att-globalatts; >

<!ELEMENT int          EMPTY >
<!ATTLIST int          %att-definition;
                       %att-globalatts; >

<!ELEMENT diff         EMPTY >
<!ATTLIST diff         %att-definition;
                       %att-globalatts; >

<!ELEMENT partialdiff  EMPTY >
<!ATTLIST partialdiff  %att-definition;
                       %att-globalatts; >

<!ENTITY % ccalcop1ary "ln" >

<!ELEMENT ln           EMPTY >
<!ATTLIST ln           %att-definition;
                       %att-globalatts; >

<!ENTITY % csetop2ary "setdiff" >

<!ELEMENT setdiff      EMPTY >
<!ATTLIST setdiff      %att-definition;
                       %att-globalatts; >

<!ENTITY % csetopnary "union | intersect" >

<!ELEMENT union        EMPTY >
<!ATTLIST union        %att-definition;
                       %att-globalatts; >

<!ELEMENT intersect    EMPTY >
<!ATTLIST intersect    %att-definition;
                       %att-globalatts; >

<!ENTITY % cseqop "sum | product | limit" >

<!ELEMENT sum          EMPTY >
<!ATTLIST sum          %att-definition;
                       %att-globalatts; >

<!ELEMENT product      EMPTY >
<!ATTLIST product      %att-definition;
                       %att-globalatts; >

<!ELEMENT limit        EMPTY >
<!ATTLIST limit        %att-definition;
                       %att-globalatts; >

<!ENTITY % ctrigop "sin | cos | tan | sec | csc | cot | sinh
                | cosh | tanh | sech | csch | coth
                | arcsin | arccos | arctan" >

<!ELEMENT sin          EMPTY >
<!ATTLIST sin          %att-definition;
                       %att-globalatts; >

<!ELEMENT cos          EMPTY >
<!ATTLIST cos          %att-definition;
                       %att-globalatts; >

<!ELEMENT tan          EMPTY >
<!ATTLIST tan          %att-definition;
                       %att-globalatts; >

<!ELEMENT sec          EMPTY >
<!ATTLIST sec          %att-definition;
                       %att-globalatts; >

<!ELEMENT csc          EMPTY >
<!ATTLIST csc          %att-definition;
                       %att-globalatts; >

<!ELEMENT cot          EMPTY >
<!ATTLIST cot          %att-definition;
                       %att-globalatts; >

<!ELEMENT sinh         EMPTY >
<!ATTLIST sinh         %att-definition;
                       %att-globalatts; >

<!ELEMENT cosh         EMPTY >
<!ATTLIST cosh         %att-definition;
                       %att-globalatts; >

<!ELEMENT tanh         EMPTY >
<!ATTLIST tanh         %att-definition;
                       %att-globalatts; >

<!ELEMENT sech         EMPTY >
<!ATTLIST sech         %att-definition;
                       %att-globalatts; >

<!ELEMENT csch         EMPTY >
<!ATTLIST csch         %att-definition;
                       %att-globalatts; >

<!ELEMENT coth         EMPTY >
<!ATTLIST coth         %att-definition;
                       %att-globalatts; >

<!ELEMENT arcsin       EMPTY >
<!ATTLIST arcsin       %att-definition;
                       %att-globalatts; >

<!ELEMENT arccos       EMPTY >
<!ATTLIST arccos       %att-definition;
                       %att-globalatts; >

<!ELEMENT arctan       EMPTY >
<!ATTLIST arctan       %att-definition;
                       %att-globalatts; >

<!ENTITY % cstatopnary "mean | sdev | svar | median | mode" >

<!ELEMENT mean         EMPTY >
<!ATTLIST mean         %att-definition;
                       %att-globalatts; >

<!ELEMENT sdev         EMPTY >
<!ATTLIST sdev         %att-definition;
                       %att-globalatts; >

<!ELEMENT svar         EMPTY >
<!ATTLIST svar         %att-definition;
                       %att-globalatts; >

<!ELEMENT median       EMPTY >
<!ATTLIST median       %att-definition;
                       %att-globalatts; >

<!ELEMENT mode         EMPTY >
<!ATTLIST mode         %att-definition;
                       %att-globalatts; >

<!ENTITY % cstatopmoment "moment" >

<!ELEMENT moment       EMPTY >
<!ATTLIST moment       %att-definition;
                       %att-globalatts; >

<!ENTITY % clalgop1ary "determinant | transpose" >

<!ELEMENT determinant  EMPTY >
<!ATTLIST determinant  %att-definition;
                       %att-globalatts; >

<!ELEMENT transpose    EMPTY >
<!ATTLIST transpose    %att-definition;
                       %att-globalatts; >

<!ENTITY % clalgopnary "index" >

<!ELEMENT index        EMPTY >
<!ATTLIST index        %att-definition;
                       %att-globalatts; >

<!-- content elements -  relations  -->

<!ENTITY % cgenrel2ary "neq" >

<!ELEMENT neq          EMPTY >
<!ATTLIST neq          %att-definition;
                       %att-globalatts; >

<!ENTITY % cgenrelnary "eq | leq | lt | geq | gt" >

<!ELEMENT eq           EMPTY >
<!ATTLIST eq           %att-definition;
                       %att-globalatts; >

<!ELEMENT gt           EMPTY >
<!ATTLIST gt           %att-definition;
                       %att-globalatts; >

<!ELEMENT lt           EMPTY >
<!ATTLIST lt           %att-definition;
                       %att-globalatts; >

<!ELEMENT geq          EMPTY >
<!ATTLIST geq          %att-definition;
                       %att-globalatts; >

<!ELEMENT leq          EMPTY >
<!ATTLIST leq          %att-definition;
                       %att-globalatts; >

<!ENTITY % csetrel2ary "in | notin | notsubset | notprsubset" >

<!ELEMENT in           EMPTY >
<!ATTLIST in           %att-definition;
                       %att-globalatts; >

<!ELEMENT notin        EMPTY >
<!ATTLIST notin        %att-definition;
                       %att-globalatts; >

<!ELEMENT notsubset    EMPTY >
<!ATTLIST notsubset    %att-definition;
                       %att-globalatts; >

<!ELEMENT notprsubset  EMPTY >
<!ATTLIST notprsubset  %att-definition;
                       %att-globalatts; >

<!ENTITY % csetrelnary "subset | prsubset" >

<!ELEMENT subset       EMPTY >
<!ATTLIST subset       %att-definition;
                       %att-globalatts; >

<!ELEMENT prsubset     EMPTY >
<!ATTLIST prsubset     %att-definition;
                       %att-globalatts; >

<!ENTITY % cseqrel2ary "tendsto" >

<!ELEMENT tendsto      EMPTY >
<!ATTLIST tendsto      %att-definition;
                       %att-type;
                       %att-globalatts; >

<!-- content elements -  quantifiers  -->

<!ENTITY % cquantifier "lowlimit | uplimit | bvar | degree | logbase" >

<!ATTLIST lowlimit     %att-globalatts; >

<!ATTLIST uplimit      %att-globalatts; >

<!ATTLIST bvar         %att-globalatts; >

<!ATTLIST degree       %att-globalatts; >

<!ATTLIST logbase      %att-globalatts; >

<!-- operator groups -->

<!ENTITY % cop1ary 
   "%cfuncop1ary;| 
    %carithop1ary; | 
    %clogicop1ary; | 
    %ccalcop1ary; | 
    %ctrigop; | 
    %clalgop1ary; " >

<!ENTITY % cop2ary 
   "%carithop2ary; | 
    %clogicop2ary;| 
    %csetop2ary; " >

<!ENTITY % copnary 
   "%cfuncopnary; | 
    %carithopnary; | 
    %clogicopnary; | 
    %csetopnary; | 
    %cstatopnary; | 
    %clalgopnary; " >

<!ENTITY % copmisc 
   "%carithoproot; | 
    %carithop1or2ary; | 
    %ccalcop; | 
    %cseqop; | 
    %cstatopmoment; | 
    %clogicopquant; " >

<!-- relation groups -->

<!ENTITY % crel2ary 
   "%cgenrel2ary; | 
    %csetrel2ary; | 
    %cseqrel2ary; " >

<!ENTITY % crelnary 
   "%cgenrelnary; | 
    %csetrelnary;" >

<!-- content constructs - all -->

<!ENTITY % Content 
   "%ctoken; | 
    %cspecial; | 
    %cother; | 
    %csemantics; |
    %cconstructor; | 
    %cquantifier; |
    %cop1ary; |
    %cop2ary; |
    %copnary; |
    %copmisc; |
    %crel2ary; |
    %crelnary;" > 

<!-- content constructs for substitution in presentation structures -->

<!ENTITY % ContInPres 
   "ci | cn  | apply  | fn | lambda | reln | 
    interval | list | matrix |matrixrow | set | vector" >

<!-- ............................................................... -->

<!-- recursive definition for content of expressions             -->
<!-- include presentation tag constructs at lowest level         -->
<!-- so presentation layout schemata hold presentation or Content -->
<!-- include Content tag constructs at lowest level              -->
<!-- so Content tokens hold PCDATA or Presentation at leaf level -->
<!-- (for permitted substitutable elements in context)           -->

<!ENTITY % ContentExpression   "(%Content; | %PresInCont;)* " >
<!ENTITY % PresExpression      "(%Presentation; | %ContInPres;)* " >
<!ENTITY % MathExpression      "(%PresInCont; | %ContInPres;)* " >

<!--  content token elements (may hold embedded presentation constructs)
-->

<!ELEMENT ci             (#PCDATA | %PresInCont;)* >
<!ELEMENT cn             (#PCDATA | sep | %PresInCont;)* >

<!--  content special elements    -->

<!ELEMENT apply          (%ContentExpression;) >
<!ELEMENT reln           (%ContentExpression;) >
<!ELEMENT lambda         (%ContentExpression;) >

<!--  content other elements    -->

<!ELEMENT condition      (%ContentExpression;) >
<!ELEMENT declare        (%ContentExpression;) >

<!--  content semantics elements    -->

<!ELEMENT semantics      (%ContentExpression;) >
<!ELEMENT annotation     (#PCDATA) >
<!ELEMENT annotation-xml (%ContentExpression;) >

<!--  content constructor elements    -->

<!ELEMENT interval       (%ContentExpression;) >
<!ELEMENT set            (%ContentExpression;) >
<!ELEMENT list           (%ContentExpression;) >
<!ELEMENT vector         (%ContentExpression;) >
<!ELEMENT matrix         (%ContentExpression;) >
<!ELEMENT matrixrow      (%ContentExpression;) >

<!--  content operator element (user-defined)    -->

<!ELEMENT fn       (%ContentExpression;) >

<!--  content quantifier elements    -->

<!ELEMENT lowlimit       (%ContentExpression;) >
<!ELEMENT uplimit        (%ContentExpression;) >
<!ELEMENT bvar           (%ContentExpression;) >
<!ELEMENT degree         (%ContentExpression;) >
<!ELEMENT logbase        (%ContentExpression;) >

<!-- ............................................................... -->
<!-- presentation layout schema contain tokens, layout and 
     content schema  -->

<!ELEMENT mstyle          (%PresExpression;) >
<!ELEMENT merror          (%PresExpression;) >
<!ELEMENT mphantom        (%PresExpression;) >
<!ELEMENT mrow            (%PresExpression;) >
<!ELEMENT mfrac           (%PresExpression;) >
<!ELEMENT msqrt           (%PresExpression;) >
<!ELEMENT mroot           (%PresExpression;) >
<!ELEMENT msub            (%PresExpression;) >
<!ELEMENT msup            (%PresExpression;) >
<!ELEMENT msubsup         (%PresExpression;) >
<!ELEMENT mmultiscripts   (%PresExpression;) >
<!ELEMENT munder          (%PresExpression;) >
<!ELEMENT mover           (%PresExpression;) >
<!ELEMENT munderover      (%PresExpression;) >
<!ELEMENT mtable          (%PresExpression;) >
<!ELEMENT mtr             (%PresExpression;) >
<!ELEMENT mtd             (%PresExpression;) >
<!ELEMENT maction         (%PresExpression;) >
<!ELEMENT mfenced         (%PresExpression;) >
<!ELEMENT mpadded         (%PresExpression;) >

<!-- presentation tokens contain PCDATA or malignmark constructs -->

<!ELEMENT mi     (#PCDATA | malignmark )* >
<!ELEMENT mn     (#PCDATA | malignmark )* >
<!ELEMENT mo     (#PCDATA | malignmark )* >
<!ELEMENT mtext  (#PCDATA | malignmark )* >
<!ELEMENT ms     (#PCDATA | malignmark )* >

<!-- ............................................................... -->
<!-- browser interface definition -->

<!-- attributes for top level math element -->

<!ENTITY  %     att-macros      'macros CDATA #IMPLIED' >
<!ENTITY  %     att-mode        'mode   CDATA #IMPLIED' >

<!ENTITY  %     att-topinfo    
   '%att-globalatts;
    %att-macros;
    %att-mode; ' >

<!-- attributes for browser interface element element -->

<!ENTITY  %     att-name        'name CDATA #IMPLIED' >
<!ENTITY  %     att-height      'height CDATA #IMPLIED' >
<!ENTITY  %     att-width       'width CDATA #IMPLIED' >
<!ENTITY  %     att-baseline    'baseline CDATA #IMPLIED' >
<!ENTITY  %     att-overflow    
   'overflow (scroll|elide|truncate|scale) "scroll"' >
<!ENTITY  %     att-altimg      'altimg CDATA #IMPLIED' >
<!ENTITY  %     att-alttext     'alttext CDATA #IMPLIED' >

<!ENTITY  %     att-browif      
   '%att-type;
    %att-name;
    %att-height;
    %att-width;
    %att-baseline;
    %att-overflow;
    %att-altimg;
    %att-alttext; ' >

<!-- the top level math element                         -->
<!-- math contains MathML encoded mathematics           -->
<!-- math has the browser info attributes iff it is the
     browser interface element also                
-->

<!ELEMENT  math     (%MathExpression;) >

<!ATTLIST  math     %att-topinfo;
                    %att-browif; >

<!-- end of XHTML1-math.mod DTD fragment -->


<!-- declare and instantiate the XHTML Strict DTD -->
<!ENTITY % XHTML1-s.dtd
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
            "XHTML1-s.dtd" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Strict DTD  ................................................ -->
<!-- file: XHTML1-s.dtd
-->

<!--  XHTML 1.0 Strict DTD

      This is XHTML 1.0, an XML reformulation of HTML 4.0.

      Copyright 1998-1999 World Wide Web Consortium
         (Massachusetts Institute of Technology, Institut National de 
          Recherche en Informatique et en Automatique, Keio University).
          All Rights Reserved.

      Permission to use, copy, modify and distribute the XHTML 1.0 DTD and
      its accompanying documentation for any purpose and without fee is
      hereby granted in perpetuity, provided that the above copyright notice
      and this paragraph appear in all copies.  The copyright holders make 
      no representation about the suitability of the DTD for any purpose.  

      It is provided "as is" without expressed or implied warranty.

        Author:     Murray M. Altheim <altheim@eng.sun.com>
        Revision:   @(#)XHTML1-s.dtd 1.14 99/04/01 SMI

      The XHTML 1.0 DTD is an XML variant based on the W3C HTML 4.0 DTD:

        Draft:      $Date: 1999/04/02 14:27:27 $

        Authors:    Dave Raggett <dsr@w3.org>
                    Arnaud Le Hors <lehors@w3.org>
                    Ian Jacobs <ij@w3.org>

-->
<!--  This is the driver file for version 1.0 of the XHTML Strict DTD.

      Please use this formal public identifier to identify it:

          "-//W3C//DTD XHTML 1.0 Strict//EN"

      Please use this URI to identify the default namespace:   

          "http://www.w3.org/TR/1999/REC-html-in-xml"

      For example, if you are using XHTML 1.0 directly, use the FPI 
      in the DOCTYPE declaration, with the xmlns attribute on the 
      document element to identify the default namespace:

        <?xml version="1.0" ?>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                              "XHTML1-s.dtd" >
        <html xmlns="http://www.w3.org/TR/1999/REC-html-in-xml"
              xml:lang="en" lang="en" >
        ...
        </html>
-->

<!-- The version attribute has historically been a container for the 
     DTD's public identifier (an FPI), but is unused in Strict:  -->
<!ENTITY % HTML.version  "" >
<!ENTITY % Version.attrib "" >

<!-- The xmlns attribute on <html> identifies the 
     default namespace to namespace-aware applications:  -->
<!ENTITY % XHTML.ns  "http://www.w3.org/TR/1999/REC-html-in-xml" >

<!-- reserved for future use with document profiles -->
<!ENTITY % XHTML.profile  "" >

<!-- used to ignore Transitional features within modules -->
<!ENTITY % XHTML.Transitional    "IGNORE" >


<!-- XHTML Base Architecture Module (optional) ......... -->
<!ENTITY % XHTML1-arch.module "IGNORE" >
<![%XHTML1-arch.module;[
<!ENTITY % XHTML1-arch.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Base Architecture//EN"
            "XHTML1-arch.mod" >
%XHTML1-arch.mod;
]]>

<!-- Common Names Module ............................... -->
<!ENTITY % XHTML1-names.module "INCLUDE" >
<![%XHTML1-names.module;[
<!ENTITY % XHTML1-names.mod 
     PUBLIC "-//W3C//ENTITIES XHTML 1.0 Common Names//EN" 
            "XHTML1-names.mod" > 
<!-- ...................................................................... -->
<!-- XHTML 1.0 Document Common Names Module  .............................. -->
<!-- file: XHTML1-names.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-names.mod 1.16 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ENTITIES XHTML 1.0 Common Names//EN"
     SYSTEM "XHTML1-names.mod"

     Revisions:
# 1999-01-31  added URIs PE for multiple URI attribute values
     ....................................................................... -->

<!-- i. Common Names

     defines the following common names, many of these imported 
     from other specifications and standards.
-->

<!-- ....  Imported Names  .... -->

<!-- media type, as per [RFC2045] -->
<!ENTITY % ContentType "CDATA" >

<!-- comma-separated list of media types, as per [RFC2045] -->
<!ENTITY % ContentTypes "CDATA" >

<!-- a character encoding, as per [RFC2045] -->
<!ENTITY % Charset "CDATA" >

<!-- a space separated list of character encodings, as per [RFC2045] -->
<!ENTITY % Charsets "CDATA" >

<!-- date and time information. ISO date format -->
<!ENTITY % Datetime "CDATA" >

<!-- a single character from [ISO10646] -->
<!ENTITY % Character "CDATA" >

<!-- a language code, as per [RFC1766] -->
<!ENTITY % LanguageCode "NMTOKEN" >

<!-- space-separated list of link types -->
<!ENTITY % LinkTypes "NMTOKENS" >

<!-- single or comma-separated list of media descriptors -->
<!ENTITY % MediaDesc "CDATA" >

<!-- one or more digits (NUMBER) -->
<!ENTITY % Number "CDATA" >

<!-- a Uniform Resource Identifier, see [URI] -->
<!ENTITY % URI "CDATA" >

<!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
<!ENTITY % URIs "CDATA" >

<!-- script expression -->
<!ENTITY % Script "CDATA" >

<!-- style sheet data -->
<!ENTITY % StyleSheet "CDATA" >

<!ENTITY % Text "CDATA" >

<!-- Length defined in strict DTD for cellpadding/cellspacing -->

<!-- nn for pixels or nn% for percentage length -->
<!ENTITY % Length "CDATA" >

<!-- pixel, percentage, or relative -->
<!ENTITY % MultiLength "CDATA" >

<!-- comma-separated list of MultiLength -->
<!ENTITY % MultiLengths "CDATA" >

<!-- integer representing length in pixels -->
<!ENTITY % Pixels "CDATA" >

<!-- render in this frame --> 
<!ENTITY % FrameTarget "CDATA" >

<!-- a color using sRGB: #RRGGBB as Hex values --> 
<!ENTITY % Color "CDATA" >

<!-- end of XHTML1-names.mod -->
 
]]>

<!-- Character Entities Module ......................... -->
<!ENTITY % XHTML1-charent.module "INCLUDE" >
<![%XHTML1-charent.module;[
<!ENTITY % XHTML1-charent.mod
     PUBLIC "-//W3C//ENTITIES XHTML 1.0 Character Entities//EN"
            "XHTML1-charent.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Character Entities Module  ................................. -->
<!-- file: XHTML1-charent.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-charent.mod 1.16 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ENTITIES XHTML 1.0 Character Entities//EN"
     SYSTEM "XHTML1-charent.mod"

     Revisions:
     (none)
     ....................................................................... -->

<!-- v. Character Entities for XHTML

     declares the set of character entities for XHTML, including Latin 1,
     symbol and special characters.
-->

<!-- to exclude character entity declarations from a normalized 
     DTD, declare %XHTML1.ents; as "IGNORE" in the internal 
     subset of the dummy XHTML file used for normalization.
-->
<!ENTITY % XHTML1.ents "INCLUDE" >

<![%XHTML1.ents;[
<!ENTITY % XHTML1-lat1 
    PUBLIC "-//W3C//ENTITIES Latin 1//EN//XML"
           "XHTML1-lat1.ent" >
%XHTML1-lat1;

<!ENTITY % XHTML1-symbol 
    PUBLIC "-//W3C//ENTITIES Symbols//EN//XML"
           "XHTML1-symbol.ent" >
%XHTML1-symbol;

<!ENTITY % XHTML1-special 
    PUBLIC "-//W3C//ENTITIES Special//EN//XML"
           "XHTML1-special.ent" >
%XHTML1-special;
]]>

<!-- end of XHTML1-charent.mod -->

]]>

<!-- Intrinsic Events Module ........................... --> 
<!ENTITY % XHTML1-events.module "INCLUDE" >
<![%XHTML1-events.module;[
<!ENTITY % XHTML1-events.mod
     PUBLIC "-//W3C//ENTITIES XHTML 1.0 Intrinsic Events//EN" 
            "XHTML1-events.mod" > 
<!-- ...................................................................... -->
<!-- XHTML 1.0 Intrinsic Events Module  ................................... -->
<!-- file: XHTML1-events.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-events.mod 1.16 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ENTITIES XHTML 1.0 Intrinsic Events//EN"
     SYSTEM "XHTML1-events.mod"

     Revisions:
#1999-01-14  transferred onfocus and onblur ATTLIST for 'a' from link module
#1999-04-01  transferred remaining events attributes from other modules
     ....................................................................... -->

<!-- iv. Intrinsic Event Attributes

     These are the event attributes defined in HTML 4.0,
     Section 18.2.3 "Intrinsic Events"

    "Note: Authors of HTML documents are advised that changes are likely to 
     occur in the realm of intrinsic events (e.g., how scripts are bound to 
     events). Research in this realm is carried on by members of the W3C 
     Document Object Model Working Group (see the W3C Web site at 
     http://www.w3.org/ for more information)."
-->

<!ENTITY % Events.attrib
     "onclick      %Script;                 #IMPLIED
      ondblclick   %Script;                 #IMPLIED
      onmousedown  %Script;                 #IMPLIED
      onmouseup    %Script;                 #IMPLIED
      onmouseover  %Script;                 #IMPLIED
      onmousemove  %Script;                 #IMPLIED
      onmouseout   %Script;                 #IMPLIED
      onkeypress   %Script;                 #IMPLIED
      onkeydown    %Script;                 #IMPLIED
      onkeyup      %Script;                 #IMPLIED"
>

<!-- additional attributes on anchor element -->

<!ATTLIST a
     onfocus      %Script;                  #IMPLIED
     onblur       %Script;                  #IMPLIED  
>

<!-- additional attributes on form element -->

<!ATTLIST form
      onsubmit     %Script;                 #IMPLIED
      onreset      %Script;                 #IMPLIED
>

<!-- additional attributes on label element -->

<!ATTLIST label
      onfocus      %Script;                 #IMPLIED
      onblur       %Script;                 #IMPLIED
>

<!-- additional attributes on input element -->

<!ATTLIST input
      onfocus      %Script;                 #IMPLIED
      onblur       %Script;                 #IMPLIED
      onselect     %Script;                 #IMPLIED
      onchange     %Script;                 #IMPLIED
>

<!-- additional attributes on select element -->

<!ATTLIST select
      onfocus      %Script;                 #IMPLIED
      onblur       %Script;                 #IMPLIED
      onchange     %Script;                 #IMPLIED
>

<!-- additional attributes on textarea element -->

<!ATTLIST textarea
      onfocus      %Script;                 #IMPLIED
      onblur       %Script;                 #IMPLIED
      onselect     %Script;                 #IMPLIED
      onchange     %Script;                 #IMPLIED
>

<!-- additional attributes on button element -->

<!ATTLIST button
      onfocus      %Script;                 #IMPLIED
      onblur       %Script;                 #IMPLIED
>

<!-- additional attributes on body element -->

<!ATTLIST body
      onload       %Script;                 #IMPLIED
      onunload     %Script;                 #IMPLIED
>

<!-- additional attributes on area element -->

<!ATTLIST area 
      onfocus      %Script;                 #IMPLIED
      onblur       %Script;                 #IMPLIED
>

<!ENTITY % XHTML1-frames.module "IGNORE" >
<![%XHTML1-frames.module;[
<!-- additional attributes on frameset element -->

<!ATTLIST frameset 
      onload       %Script;                 #IMPLIED
      onunload     %Script;                 #IMPLIED
>
]]>

<!-- end of XHTML1-events.mod -->
 
]]>

<!-- Common Attributes Module .......................... --> 
<!ENTITY % XHTML1-attribs.module "INCLUDE" >
<![%XHTML1-attribs.module;[
<!ENTITY % align "" >
<!ENTITY % XHTML1-attribs.mod
     PUBLIC "-//W3C//ENTITIES XHTML 1.0 Common Attributes//EN" 
            "XHTML1-attribs.mod" > 
<!-- ...................................................................... -->
<!-- XHTML 1.0 Common Attributes Module  .................................. -->
<!-- file: XHTML1-attribs.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0. 
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-attribs.mod 1.14 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ENTITIES XHTML 1.0 Common Attributes//EN"
     SYSTEM "XHTML1-attribs.mod"

     Revisions:
# 1999-02-24  changed PE names for attribute classes to *.attrib; 
     ....................................................................... -->

<!-- ii. Common Attributes

     This modules declares many of the common attributes for the Strict DTD.
-->

<!ENTITY % Core.attrib
     "id           ID                       #IMPLIED
      class        CDATA                    #IMPLIED
      style        %StyleSheet;             #IMPLIED
      title        %Text;                   #IMPLIED"
>

<!ENTITY % I18n.attrib
    "lang          %LanguageCode;           #IMPLIED
     xml:lang      %LanguageCode;           #IMPLIED
     dir           (ltr|rtl)                #IMPLIED"
>

<!-- HTML intrinsic event attributes declared previously -->
<!ENTITY % Events.attrib "" >

<!ENTITY % Common.attrib 
     "%Core.attrib; 
      %I18n.attrib; 
      %Events.attrib;" >

<!ENTITY % Align.attrib "" >

<!ENTITY % XLink.attribs  "INCLUDE" >
<![%XLink.attribs;[
<!-- XLink attributes for a simple 'a' style link -->

<!ENTITY % Alink.attrib
     "xml:link     CDATA                    #FIXED   'simple' 
      role         CDATA                    #IMPLIED
      inline       CDATA                    #FIXED   'true'
      content-role CDATA                    #IMPLIED
      content-title CDATA                   #IMPLIED
      show         CDATA                    #FIXED   'replace'
      activate     CDATA                    #FIXED   'user'
      behavior     CDATA                    #IMPLIED"
>
]]>
<!ENTITY % Alink.attrib  "" >

<!-- end of XHTML1-attribs.mod -->
 
]]>

<!-- Document Model Module ............................. -->
<!ENTITY % XHTML1-model.module "INCLUDE" >
<![%XHTML1-model.module;[
<!ENTITY % XHTML1-model.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Document Model//EN"
            "XHTML1-model.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Document Model Module  ..................................... -->
<!-- file: XHTML1-model.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-model.mod 1.12 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Document Model//EN"
     SYSTEM "XHTML1-model.mod"

     Revisions:
     (none)
     ....................................................................... -->

<!-- iii. Document Model

     This modules declares entities describing all text flow 
     elements, excluding Transitional elements. This module 
     describes the groupings of elements that make up HTML's 
     document model. 

     HTML has two basic content models:

         %Inline.mix;  character-level elements 
         %Block.mix;   block-like elements, eg., paragraphs and lists

     The reserved word '#PCDATA' (indicating a text string) is now 
     included explicitly with each element declaration, as XML requires 
     that the reserved word occur first in a content model specification..
-->

<!-- .................  Miscellaneous Elements  ................ -->

<!-- These elements are neither block nor inline, and can 
     essentially be used anywhere in the document body -->

<!ENTITY % Misc.class 
       "ins | del | script | noscript" > 

<!-- ....................  Inline Elements  .................... -->

<!ENTITY % Inlstruct.class
       "bdo | br | span" >

<!ENTITY % Inlpres.class  "tt | i | b | big | small | sub | sup" >

<!ENTITY % Inlphras.class  
     "em | strong | dfn | code | samp | kbd | var | cite | abbr | acronym | q" >

<!ENTITY % Inlspecial.class  "a | img | object | map" >

<!ENTITY % Formctrl.class  "input | select | textarea | label | button" >

<!-- %Inline.class; includes all inline elements, used as a component in mixes -->

<!ENTITY % Inline.class  
     "%Inlstruct.class; 
      | %Inlpres.class; 
      | %Inlphras.class; 
      | %Inlspecial.class; 
      | %Formctrl.class;"
>

<!-- %Inline.mix; includes all inline elements, including %Misc.class; -->

<!ENTITY % Inline.mix  
     "%Inline.class; 
      | %Misc.class;"
>

<!-- %Inline-noa.class; includes all non-anchor inlines,
     used as a component in mixes -->

<!ENTITY % Inline-noa.class  
     "%Inlstruct.class; 
      | %Inlpres.class; 
      | %Inlphras.class; 
      | img | object | map 
      | %Formctrl.class;"
>

<!-- %Inline-noa.mix; includes all non-anchor inlines -->

<!ENTITY % Inline-noa.mix  
     "%Inline-noa.class; 
      | %Misc.class;"
>

<!-- .....................  Block Elements  .................... -->

<!-- In the HTML 4.0 DTD, heading and list elements were included 
     in the %block; parameter entity. The %Heading.class; and 
     %List.class; parameter entities must now be included explicitly 
     on element declarations where desired.
-->

<!--  There are six levels of headings from H1 (the most important)
      to H6 (the least important).
  -->
<!ENTITY % Heading.class  "h1 | h2 | h3 | h4 | h5 | h6" >

<!ENTITY % List.class "ul | ol | dl" >

<!ENTITY % Blkstruct.class  "p | div" >

<!ENTITY % Blkpres.class "hr" >

<!ENTITY % Blkphras.class  "pre | blockquote | address" >

<!ENTITY % Blkform.class  "form | fieldset" >

<!ENTITY % Blkspecial.class  "table" >

<!-- %Block.class; includes all block elements, 
     used as an component in mixes -->

<!ENTITY % Block.class 
     "%Blkstruct.class; 
      | %Blkpres.class; 
      | %Blkphras.class; 
      | %Blkform.class;
      | %Blkspecial.class;"
>

<!-- %Block.mix; includes all block elements plus %Misc.class; -->

<!ENTITY % Block.mix
     "%Block.class;
      | %Misc.class;"
> 

<!-- %Block-noform.class; includes all non-form block elements,
     used as a component in mixes -->

<!ENTITY % Block-noform.class 
     "%Blkstruct.class; 
      | %Blkpres.class; 
      | %Blkphras.class; 
      | %Blkspecial.class;"
>

<!-- %Block-noform.mix; includes all non-form block elements,
     plus %Misc.class; -->

<!ENTITY % Block-noform.mix 
     "%Block-noform.class;
      | %Misc.class;"
>

<!-- ................  All Content Elements  .................. -->

<!-- %Flow.mix; includes all text content, block and inline -->

<!ENTITY % Flow.mix
       "%Heading.class; 
      | %List.class; 
      | %Block.class;
      | %Inline.class;
      | %Misc.class;"
>

<!-- end of XHTML1-model.mod -->

]]>

<!-- Inline Structural Module .......................... -->
<!ENTITY % XHTML1-inlstruct.module "INCLUDE" >
<![%XHTML1-inlstruct.module;[
<!ENTITY % XHTML1-inlstruct.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Inline Structural//EN"
            "XHTML1-inlstruct.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Inline Phrasal Module  ..................................... -->
<!-- file: XHTML1-inlstruct.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-inlstruct.mod 1.10 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Inline Structural//EN"
     SYSTEM "XHTML1-inlstruct.mod"

     Revisions:
     (none)
     ....................................................................... -->

<!-- c1. Inline Structural 

        bdo, br, del, ins, span
-->

<!ENTITY % Bdo.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT bdo  %Bdo.content; >
<!ATTLIST bdo
      %Core.attrib;
      lang         %LanguageCode;           #IMPLIED
      dir          (ltr|rtl)                #REQUIRED
>

<!ENTITY % Br.content  "EMPTY" >
<!ELEMENT br  %Br.content; >
<!ATTLIST br
      %Core.attrib;
>

<!ENTITY % Del.content  "( #PCDATA | %Flow.mix; )*" >
<!ELEMENT del  %Del.content; >
<!ATTLIST del
      %Common.attrib;
      cite         %URI;                    #IMPLIED
      datetime     %Datetime;               #IMPLIED
>

<!ENTITY % Ins.content  "( #PCDATA | %Flow.mix; )*" >
<!ELEMENT ins  %Ins.content; >
<!ATTLIST ins
      %Common.attrib;
      cite         %URI;                    #IMPLIED
      datetime     %Datetime;               #IMPLIED
>

<!ENTITY % Span.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT span  %Span.content; >
<!ATTLIST span
      %Common.attrib;
>

<!-- end of XHTML1-inlstruct.mod -->

]]>

<!-- Inline Presentational Module ...................... -->
<!ENTITY % XHTML1-inlpres.module "INCLUDE" >
<![%XHTML1-inlpres.module;[
<!ENTITY % XHTML1-inlpres.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Inline Presentational//EN"
            "XHTML1-inlpres.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Inline Presentational Module  .............................. -->
<!-- file: XHTML1-inlpres.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-inlpres.mod 1.13 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Inline Presentational//EN"
     SYSTEM "XHTML1-inlpres.mod"

     Revisions:
     (none)
     ....................................................................... -->

<!-- c3. Inline Presentational 

        b, big, i, small, sub, sup, tt

     A conditional section includes additional declarations for the Transitional DTD

        basefont, font, s, strike, u
-->

<!ENTITY % B.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT b  %B.content; >
<!ATTLIST b
      %Common.attrib;
>

<!ENTITY % Big.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT big  %Big.content; >
<!ATTLIST big
      %Common.attrib;
>

<!ENTITY % I.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT i  %I.content; >
<!ATTLIST i
      %Common.attrib;
>

<!ENTITY % Small.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT small  %Small.content; >
<!ATTLIST small
      %Common.attrib;
>

<!ENTITY % Sub.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT sub  %Sub.content; >
<!ATTLIST sub
      %Common.attrib;
>

<!ENTITY % Sup.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT sup  %Sup.content; >
<!ATTLIST sup
      %Common.attrib;
>

<!ENTITY % Tt.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT tt    %Tt.content; >
<!ATTLIST tt
      %Common.attrib;
>

<![%XHTML.Transitional;[

<!ENTITY % Basefont.content  "EMPTY" >
<!ELEMENT basefont  %Basefont.content; >
<!ATTLIST basefont
      id           ID                       #IMPLIED
      size         CDATA                    #REQUIRED
      color        %Color;                  #IMPLIED
      face         CDATA                    #IMPLIED
>

<!ENTITY % Font.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT font  %Font.content; >
<!ATTLIST font
      %Core.attrib;
      %I18n.attrib;
      size         CDATA                    #IMPLIED
      color        %Color;                  #IMPLIED
      face         CDATA                    #IMPLIED
>

<!ENTITY % S.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT s  %S.content; >
<!ATTLIST s
      %Common.attrib;
>

<!ENTITY % Strike.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT strike  %Strike.content; >
<!ATTLIST strike
      %Common.attrib;
>

<!ENTITY % U.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT u  %U.content; >
<!ATTLIST u
      %Common.attrib;
>

]]>

<!-- end of XHTML1-inlpres.mod -->

]]>

<!-- Inline Phrasal Module ............................. -->
<!ENTITY % XHTML1-inlphras.module "INCLUDE" >
<![%XHTML1-inlphras.module;[
<!ENTITY % XHTML1-inlphras.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Inline Phrasal//EN"
            "XHTML1-inlphras.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Inline Phrasal Module  ..................................... -->
<!-- file: XHTML1-inlphras.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-inlphras.mod 1.14 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Inline Phrasal//EN"
     SYSTEM "XHTML1-inlphras.mod"

     Revisions:
#1999-01-29  moved bdo, br, del, ins, span to inline structural module
     ....................................................................... -->

<!-- c2. Inline Phrasal 

        abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
-->

<!ENTITY % Abbr.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT abbr  %Abbr.content; >
<!ATTLIST abbr
      %Common.attrib;
>

<!ENTITY % Acronym.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT acronym  %Acronym.content; >
<!ATTLIST acronym
      %Common.attrib;
>

<!ENTITY % Cite.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT cite  %Cite.content; >
<!ATTLIST cite
      %Common.attrib;
>

<!ENTITY % Code.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT code  %Code.content; >
<!ATTLIST code
      %Common.attrib;
>

<!ENTITY % Dfn.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT dfn  %Dfn.content; >
<!ATTLIST dfn
      %Common.attrib;
>

<!ENTITY % Em.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT em  %Em.content; >
<!ATTLIST em
      %Common.attrib;
>

<!ENTITY % Kbd.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT kbd  %Kbd.content; >
<!ATTLIST kbd
      %Common.attrib;
>

<!ENTITY % Q.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT q  %Q.content; >
<!ATTLIST q 
      %Common.attrib; 
      cite         %URI;                    #IMPLIED
>

<!ENTITY % Samp.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT samp  %Samp.content; >
<!ATTLIST samp
      %Common.attrib;
>

<!ENTITY % Strong.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT strong  %Strong.content; >
<!ATTLIST strong
      %Common.attrib;
>

<!ENTITY % Var.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT var  %Var.content; >
<!ATTLIST var
      %Common.attrib;
>

<!-- end of XHTML1-inlphras.mod -->

]]>

<!-- Block Structural Module ........................... -->
<!ENTITY % XHTML1-blkstruct.module "INCLUDE" >
<![%XHTML1-blkstruct.module;[
<!ENTITY % XHTML1-blkstruct.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Block Structural//EN"
            "XHTML1-blkstruct.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Block Structural Module  ................................... -->
<!-- file: XHTML1-blkstruct.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-blkstruct.mod 1.10 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Block Structural//EN"
     SYSTEM "XHTML1-blkstruct.mod"

     Revisions:
     (none)
     ....................................................................... -->

<!-- b1. Block Structural

        div, p
-->

<!ENTITY % Div.content  "( #PCDATA | %Flow.mix; )*" >
<!ELEMENT div  %Div.content; >
<!ATTLIST div
      %Common.attrib;
      %Align.attrib;
>

<!ENTITY % P.content  "( #PCDATA | %Inline.mix; )*" > 
<!ELEMENT p  %P.content; > 
<!ATTLIST p 
      %Common.attrib;
>
  
<!-- end of XHTML1-blkstruct.mod -->

]]>

<!-- Block Presentational Module ....................... -->
<!ENTITY % XHTML1-blkpres.module "INCLUDE" >
<![%XHTML1-blkpres.module;[
<!ENTITY % XHTML1-blkpres.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Block Presentational//EN"
            "XHTML1-blkpres.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Block Presentational Module  ............................... -->
<!-- file: XHTML1-blkpres.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-blkpres.mod 1.15 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Block Presentational//EN"
     SYSTEM "XHTML1-blkpres.mod"

     Revisions:
# 1999-01-31  added I18n.attrib to hr (errata)
     ....................................................................... -->

<!-- b3. Block Presentational

        hr 

     A conditional section includes additional declarations for the Transitional DTD

        center
-->

<!ENTITY % Hr.content  "EMPTY" >
<!ELEMENT hr  %Hr.content; >
<!ATTLIST hr 
      %Core.attrib;
      %I18n.attrib;
      %Events.attrib; 
>

<![%XHTML.Transitional;[
<!ENTITY % Center.content  "( #PCDATA | %Flow.mix; )*" >
<!ELEMENT center  %Center.content; >
<!ATTLIST center 
      %Common.attrib;
> 

<!-- additional attributes on hr -->
<!ATTLIST hr 
      align        (left|center|right)      #IMPLIED 
      noshade      (noshade)                #IMPLIED 
      size         %Pixels;                 #IMPLIED 
      width        %Length;                 #IMPLIED 
>
]]>

<!-- end of XHTML1-blkpres.mod -->

]]>

<!-- Block Phrasal Module .............................. -->
<!ENTITY % XHTML1-blkphras.module "INCLUDE" >
<![%XHTML1-blkphras.module;[
<!ENTITY % XHTML1-blkphras.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Block Phrasal//EN"
            "XHTML1-blkphras.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Block Phrasal Module  ...................................... -->
<!-- file: XHTML1-blkphras.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-blkphras.mod 1.13 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Block Phrasal//EN"
     SYSTEM "XHTML1-blkphras.mod"

     Revisions:
# 1998-11-10  removed pre exclusions - content model changed to mimic HTML 4.0
# 1999-01-29  moved div and p to block structural module
     ....................................................................... -->

<!-- b2. Block Phrasal

        address, blockquote, pre, h1, h2, h3, h4, h5, h6
-->

<!ENTITY % Address.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT address  %Address.content; >
<!ATTLIST address
      %Common.attrib;
>

<![%XHTML.Transitional;[
<!ENTITY % Blockquote.content  "( %Flow.mix; )*" > 
]]>
<!ENTITY % Blockquote.content
     "( %Heading.class; 
      | %List.class; 
      | %Block.mix; )+"
>

<!ELEMENT blockquote  %Blockquote.content; >
<!ATTLIST blockquote 
      %Common.attrib;
      cite         %URI;                    #IMPLIED
> 

<!ENTITY % Pre.content  
     "( #PCDATA | tt | i | b 
      | %Inlstruct.class; | %Inlphras.class; 
      | a | script | map 
      | %Formctrl.class; )*"
>

<!ELEMENT pre  %Pre.content; >
<!ATTLIST pre 
      %Common.attrib;
      xml:space    CDATA                    #FIXED "preserve"    
> 
 
<!-- ...................  Heading Elements  ................... -->

<!ENTITY % Heading.content  "( #PCDATA | %Inline.mix; )*" >

<!ELEMENT h1  %Heading.content; >
<!ATTLIST h1
      %Common.attrib;
      %Align.attrib;
>

<!ELEMENT h2  %Heading.content; >
<!ATTLIST h2
      %Common.attrib;
      %Align.attrib;
>

<!ELEMENT h3  %Heading.content; >
<!ATTLIST h3
      %Common.attrib;
      %Align.attrib;
>

<!ELEMENT h4  %Heading.content; >
<!ATTLIST h4
      %Common.attrib;
      %Align.attrib;
>

<!ELEMENT h5  %Heading.content; >
<!ATTLIST h5
      %Common.attrib;
      %Align.attrib;
>

<!ELEMENT h6  %Heading.content; >
<!ATTLIST h6
      %Common.attrib;
      %Align.attrib;
>

<!-- end of XHTML1-blkphras.mod -->

]]>

<!-- Scripting Module .................................. -->
<!ENTITY % XHTML1-script.module "INCLUDE" >
<![%XHTML1-script.module;[
<!ENTITY % XHTML1-script.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Scripting//EN"
            "XHTML1-script.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Document Scripting Module  ................................. -->
<!-- file: XHTML1-script.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-script.mod 1.13 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Scripting//EN"
     SYSTEM "XHTML1-script.mod"

     Revisions:
# 1999-01-30  added xml:space to script
# 1999-02-01  removed for and event attributes from script
     ....................................................................... -->

<!-- d4. Scripting

        script, noscript
-->

<!ENTITY % Script.content  "( #PCDATA )" >
<!ELEMENT script  %Script.content; >
<!ATTLIST script
      charset      %Charset;                #IMPLIED
      type         %ContentType;            #REQUIRED
      src          %URI;                    #IMPLIED
      defer        (defer)                  #IMPLIED
      xml:space    CDATA                    #FIXED 'preserve'
>

<!ENTITY % Noscript.content
     "( %Heading.class; 
      | %List.class; 
      | %Block.mix; )+"
>
<!ELEMENT noscript  %Noscript.content; >
<!ATTLIST noscript
      %Common.attrib;
>

<!-- end of XHTML1-script.mod -->

]]>

<!-- Stylesheets Module ................................ -->
<!ENTITY % XHTML1-style.module "INCLUDE" >
<![%XHTML1-style.module;[
<!ENTITY % XHTML1-style.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Stylesheets//EN"
            "XHTML1-style.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Document Stylesheet Module  ................................ -->
<!-- file: XHTML1-style.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-style.mod 1.13 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//DTD XHTML 1.0 Stylesheets//EN"
     SYSTEM "XHTML1-style.mod"

     Revisions:
# 1999-01-30  added xml:space to style
     ....................................................................... -->

<!-- d5. Stylesheets 

        style
-->

<!ENTITY % Style.content  "( #PCDATA )" >
<!ELEMENT style  %Style.content; >
<!ATTLIST style
      %I18n.attrib;
      type         %ContentType;            #REQUIRED
      media        %MediaDesc;              #IMPLIED
      title        %Text;                   #IMPLIED
      xml:space    CDATA                    #FIXED 'preserve'
>

<!-- end of XHTML1-style.mod -->

]]>

<!-- Image Module ...................................... -->
<!ENTITY % XHTML1-image.module "INCLUDE" >
<![%XHTML1-image.module;[
<!ENTITY % XHTML1-image.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Images//EN"
            "XHTML1-image.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Images Module  ............................................. -->
<!-- file: XHTML1-image.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-image.mod 1.15 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Images//EN"
     SYSTEM "XHTML1-image.mod"

     Revisions:
# 1999-01-31  corrected transitional attributes (errata)
     ....................................................................... -->

<!-- d3.1. Images 

        img
-->

<!-- To avoid problems with text-only UAs as well as 
     to make image content understandable and navigable 
     to users of non-visual UAs, you need to provide
     a description with ALT, and avoid server-side image maps 
-->

<!ENTITY % Img.content  "EMPTY" >
<!ELEMENT img  %Img.content; >
<!ATTLIST img
      %Common.attrib;
      src          %URI;                    #REQUIRED
      alt          %Text;                   #REQUIRED
      longdesc     %URI;                    #IMPLIED
      height       %Length;                 #IMPLIED
      width        %Length;                 #IMPLIED
      usemap       %URI;                    #IMPLIED
      ismap        (ismap)                  #IMPLIED
>

<!-- USEMAP points to a MAP element which may be in this document or 
     an external document, although the latter is not widely supported 
-->

<![%XHTML.Transitional;[
<!-- additional Transitional attributes -->
<!ATTLIST img
      %IAlign.attrib;
      border       %Pixels;                 #IMPLIED
      hspace       %Pixels;                 #IMPLIED
      vspace       %Pixels;                 #IMPLIED
>
]]>

<!-- end of XHTML1-image.mod -->

]]>

<!-- Frames Module ..................................... -->
<!ENTITY % XHTML1-frames.module  "IGNORE" >
<![%XHTML1-frames.module;[
<!ENTITY % XHTML1-frames.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Frames//EN"
            "XHTML1-frames.mod" >
%XHTML1-frames.mod;
]]>

<!-- Linking Module .................................... -->
<!ENTITY % XHTML1-linking.module "INCLUDE" >
<![%XHTML1-linking.module;[
<!ENTITY % XHTML1-linking.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Linking//EN"
            "XHTML1-linking.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Linking Module  ............................................ -->
<!-- file: XHTML1-linking.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-linking.mod 1.13 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Linking//EN"
     SYSTEM "XHTML1-linking.mod"

     Revisions:
# 1998-10-27  exclusion on 'a' within 'a' removed for XML
# 1998-11-15  moved shape and coords attributes on 'a' to csismap module
# 1999-01-14  moved onfocus and onblur attributes on 'a' to events module
     ....................................................................... -->

<!-- d2. Linking

        a, base, link
-->

<!-- ............  Anchor Element  ............ -->

<!ENTITY % Shape "(rect|circle|poly|default)">
<!ENTITY % Coords "CDATA" >

<!ENTITY % A.content  "( #PCDATA | %Inline-noa.mix; )*" >
<!ELEMENT a  %A.content; >
<!ATTLIST a
      %Common.attrib;
      name         CDATA                    #IMPLIED
      href         %URI;                    #IMPLIED
      %Alink.attrib;
      charset      %Charset;                #IMPLIED
      type         %ContentType;            #IMPLIED
      hreflang     %LanguageCode;           #IMPLIED
      rel          %LinkTypes;              #IMPLIED
      rev          %LinkTypes;              #IMPLIED
      accesskey    %Character;              #IMPLIED
      tabindex     %Number;                 #IMPLIED
>

<!-- ............  Base Element  ............ -->

<!ENTITY % Base.content  "EMPTY" >
<!ELEMENT base  %Base.content; >
<!ATTLIST base 
      href         %URI;                    #REQUIRED
> 

<!-- ............  Link Element  ............ -->

<!-- Relationship values can be used in principle:

   a) for document specific toolbars/menus when used
      with the LINK element in document head e.g.
      start, contents, previous, next, index, end, help
   b) to link to a separate style sheet (rel=stylesheet)
   c) to make a link to a script (rel=script)
   d) by stylesheets to control how collections of
      html nodes are rendered into printed documents
   e) to make a link to a printable version of this document
      e.g. a postscript or pdf version (rel=alternate media=print)
-->

<!ENTITY % Link.content  "EMPTY" >
<!ELEMENT link  %Link.content; >
<!ATTLIST link
      %Common.attrib;
      charset      %Charset;                #IMPLIED
      href         %URI;                    #IMPLIED
      hreflang     %LanguageCode;           #IMPLIED
      type         %ContentType;            #IMPLIED
      rel          %LinkTypes;              #IMPLIED
      rev          %LinkTypes;              #IMPLIED
      media        %MediaDesc;              #IMPLIED
>

<!-- end of XHTML1-linking.mod -->

]]>

<!-- Client-side Image Map Module ...................... -->
<!ENTITY % XHTML1-csismap.module "INCLUDE" >
<![%XHTML1-csismap.module;[
<!ENTITY % XHTML1-csismap.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Client-side Image Map//EN"
            "XHTML1-csismap.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Client-side Image Map Module  .............................. -->
<!-- file: XHTML1-csismap.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-csismap.mod 1.15 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Client-side Image Maps//EN"
     SYSTEM "XHTML1-csismap.mod"

     Revisions:
# 1999-01-31  fixed map content model (errata)
     ....................................................................... -->

<!-- d3.2. Client-side Image Maps

        area, map
-->

<!-- These can be placed in the same document or grouped in a
     separate document although this isn't widely supported -->

<!ENTITY % Map.content  "(( %Heading.class; | %List.class; | %Block.mix; ) | area)+" >
<!ELEMENT map  %Map.content; >
<!ATTLIST map
      %Common.attrib;
      name         CDATA                    #REQUIRED
>

<!ENTITY % Area.content  "EMPTY" >
<!ELEMENT area  %Area.content; >
<!ATTLIST area
      %Common.attrib;
      href         %URI;                    #IMPLIED
      shape        %Shape;                  'rect'
      coords       %Coords;                 #IMPLIED
      nohref       (nohref)                 #IMPLIED
      alt          %Text;                   #REQUIRED
      tabindex     %Number;                 #IMPLIED
      accesskey    %Character;              #IMPLIED
>

<!-- modify anchor (<a>) attribute definition list to 
     allow for client-side image maps -->

<!ATTLIST a
      shape        %Shape;                  'rect'
      coords       %Coords;                 #IMPLIED
>

<!-- end of XHTML1-csismap.mod -->

]]>

<!-- Object Element Module ............................. -->
<!ENTITY % XHTML1-object.module "INCLUDE" >
<![%XHTML1-object.module;[
<!ENTITY % XHTML1-object.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Object Element//EN"
            "XHTML1-object.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 External Inclusion Module  ................................. -->
<!-- file: XHTML1-object.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-object.mod 1.16 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Object Element//EN"
     SYSTEM "XHTML1-object.mod"

     Revisions:
# 1999-01-31  changed object's archive attr to allow for multiple URIs
# 1999-01-31  corrected transitional attributes (errata)
     ....................................................................... -->

<!-- d3.3. Objects

        object, param

     object is used to embed objects as part of HTML pages;
     param elements should precede other content. 
-->

<!ENTITY % Object.content  "( %Flow.mix; | param )*" >
<!ELEMENT object  %Object.content; >
<!ATTLIST object
      %Common.attrib;
      declare      (declare)                #IMPLIED
      classid      %URI;                    #IMPLIED
      codebase     %URI;                    #IMPLIED
      data         %URI;                    #IMPLIED
      type         %ContentType;            #IMPLIED
      codetype     %ContentType;            #IMPLIED
      archive      %URIs;                   #IMPLIED
      standby      %Text;                   #IMPLIED
      height       %Length;                 #IMPLIED
      width        %Length;                 #IMPLIED
      usemap       %URI;                    #IMPLIED
      name         CDATA                    #IMPLIED
      tabindex     %Number;                 #IMPLIED
>

<![%XHTML.Transitional;[
<!-- additional Transitional attributes -->
<!ATTLIST object
      %IAlign.attrib;
      border       %Pixels;                 #IMPLIED
      hspace       %Pixels;                 #IMPLIED
      vspace       %Pixels;                 #IMPLIED
>
]]>

<!ENTITY % Param.content  "EMPTY" >
<!ELEMENT param  %Param.content; >
<!ATTLIST param
      id           ID                       #IMPLIED
      name         CDATA                    #REQUIRED
      value        CDATA                    #IMPLIED
      valuetype    (data|ref|object)        'data'
      type         %ContentType;            #IMPLIED
>

<!-- end of XHTML1-object.mod -->

]]>

<!-- Lists Module ...................................... -->
<!ENTITY % XHTML1-list.module "INCLUDE" >
<![%XHTML1-list.module;[
<!ENTITY % XHTML1-list.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Lists//EN"
            "XHTML1-list.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Lists Module  .............................................. -->
<!-- file: XHTML1-list.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-list.mod 1.13 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Lists//EN"
     SYSTEM "XHTML1-list.mod"

     Revisions:
     (none)
     ....................................................................... -->

<!-- a3. Lists 

        dl, dt, dd, ol, ul, li

     A conditional section includes additional declarations for the Transitional DTD

        dir, menu
-->

<!-- definition lists - DT for term, DD for its definition -->

<!ENTITY % Dl.content  "( dt | dd )+" >
<!ELEMENT dl  %Dl.content; >
<!ATTLIST dl
      %Common.attrib;
>

<!ENTITY % Dt.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT dt  %Dt.content; >
<!ATTLIST dt
      %Common.attrib;
>

<!ENTITY % Dd.content  "( #PCDATA | %Flow.mix; )*" >
<!ELEMENT dd  %Dd.content; >
<!ATTLIST dd
      %Common.attrib;
>

<!-- Ordered Lists (ol) numbered styles -->

<!ENTITY % Ol.content  "( li )+" >
<!ELEMENT ol  %Ol.content; >
<!ATTLIST ol
      %Common.attrib;
>

<!-- Unordered Lists (ul) bullet styles -->

<!ENTITY % Ul.content  "( li )+" >
<!ELEMENT ul  %Ul.content; >
<!ATTLIST ul 
      %Common.attrib;
>

<!ENTITY % Li.content  "( #PCDATA | %Flow.mix; )*" >
<!ELEMENT li  %Li.content; >
<!ATTLIST li
      %Common.attrib;
>

<![%XHTML.Transitional;[
<!-- Ordered lists (ol) Numbering style 
 
    1   arabic numbers      1, 2, 3, ... 
    a   lower alpha         a, b, c, ... 
    A   upper alpha         A, B, C, ... 
    i   lower roman         i, ii, iii, ... 
    I   upper roman         I, II, III, ... 
 
    The style is applied to the sequence number which by default 
    is reset to 1 for the first list item in an ordered list. 
-->

<!ENTITY % OlStyle "CDATA" >

<!ATTLIST ol
      type         %OlStyle;                #IMPLIED
      compact      (compact)                #IMPLIED
      start        %Number;                 #IMPLIED
>

<!-- Unordered Lists (ul) bullet styles --> 
<!ENTITY % UlStyle "(disc|square|circle)" > 

<!ATTLIST ul
      type         %UlStyle;                #IMPLIED
      compact      (compact)                #IMPLIED 
>

<!ENTITY % Dir.content  "( li )+" >
<!ELEMENT dir  %Dir.content; >
<!ATTLIST dir 
      %Common.attrib; 
      compact      (compact)                #IMPLIED 
> 

<!ENTITY % Menu.content  "( li )+" >
<!ELEMENT menu  %Menu.content; >
<!ATTLIST menu 
      %Common.attrib; 
      compact      (compact)                #IMPLIED 
> 
]]>

<!-- end of XHTML1-list.mod -->

]]>

<!-- Forms Module ...................................... -->
<!ENTITY % XHTML1-form.module "INCLUDE" >
<![%XHTML1-form.module;[
<!ENTITY % XHTML1-form.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Forms//EN"
            "XHTML1-form.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Forms Module  .............................................. -->
<!-- file: XHTML1-form.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-form.mod 1.18 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Forms//EN"  
     SYSTEM "XHTML1-form.mod"

     Revisions:
# 1998-10-27  exclusion on form within form removed for XML
# 1998-11-10  changed button content model to mirror exclusions
# 1999-01-31  added 'accept' attribute on form (errata)
     ....................................................................... -->

<!-- d7. Forms

        form, label, input, select, optgroup, option, textarea, 
        fieldset, legend, button
-->

<![%XHTML.Transitional;[
<!ENTITY % Form.content
     "( %Heading.class; 
      | %List.class; 
      | %Inline.class; 
      | %Block-noform.mix; 
      | fieldset )*"
>
]]>
<!ENTITY % Form.content
     "( %Heading.class; 
      | %List.class; 
      | %Block-noform.mix; 
      | fieldset )+"
>

<!ELEMENT form  %Form.content; >
<!ATTLIST form
      %Common.attrib;
      action       %URI;                    #REQUIRED
      method       (get|post)               'get'
      enctype      %ContentType;            'application/x-www-form-urlencoded'
      accept-charset %Charsets;             #IMPLIED
      accept       %ContentTypes;           #IMPLIED
>

<!-- Each label must not contain more than ONE field -->

<!ENTITY % Label.content 
     "( #PCDATA 
      | %Inlstruct.class; 
      | %Inlpres.class; 
      | %Inlphras.class; 
      | %Inlspecial.class; 
      | input | select | textarea | button
      | %Misc.class; )*"
>
<!ELEMENT label  %Label.content; >
<!ATTLIST label
      %Common.attrib;
      for          IDREF                    #IMPLIED
      accesskey    %Character;              #IMPLIED
>

<!ENTITY % InputType.class
     "( text | password | checkbox | radio | submit 
      | reset | file | hidden | image | button )"
>

<!-- attribute name required for all but submit & reset -->

<!ENTITY % Input.content  "EMPTY" >
<!ELEMENT input  %Input.content; >
<!ATTLIST input
      %Common.attrib;
      type         %InputType.class;        'text'
      name         CDATA                    #IMPLIED
      value        CDATA                    #IMPLIED
      checked      (checked)                #IMPLIED
      disabled     (disabled)               #IMPLIED
      readonly     (readonly)               #IMPLIED
      size         CDATA                    #IMPLIED
      maxlength    %Number;                 #IMPLIED
      src          %URI;                    #IMPLIED
      alt          CDATA                    #IMPLIED
      usemap       %URI;                    #IMPLIED
      tabindex     %Number;                 #IMPLIED
      accesskey    %Character;              #IMPLIED
      accept       %ContentTypes;           #IMPLIED
>

<!ENTITY % Select.content  "( optgroup | option )+" >
<!ELEMENT select  %Select.content; >
<!ATTLIST select
      %Common.attrib;
      name         CDATA                    #IMPLIED
      size         %Number;                 #IMPLIED
      multiple     (multiple)               #IMPLIED
      disabled     (disabled)               #IMPLIED
      tabindex     %Number;                 #IMPLIED
>

<!ENTITY % Optgroup.content  "( option )+" >
<!ELEMENT optgroup  %Optgroup.content; >
<!ATTLIST optgroup
      %Common.attrib;
      disabled     (disabled)               #IMPLIED
      label        %Text;                   #REQUIRED
>

<!ENTITY % Option.content  "( #PCDATA )" >
<!ELEMENT option  %Option.content; >
<!ATTLIST option
      %Common.attrib;
      selected     (selected)               #IMPLIED
      disabled     (disabled)               #IMPLIED
      label        %Text;                   #IMPLIED
      value        CDATA                    #IMPLIED
>

<!ENTITY % Textarea.content  "( #PCDATA )" >
<!ELEMENT textarea  %Textarea.content; >
<!ATTLIST textarea
      %Common.attrib;
      name         CDATA                    #IMPLIED
      rows         %Number;                 #REQUIRED
      cols         %Number;                 #REQUIRED
      disabled     (disabled)               #IMPLIED
      readonly     (readonly)               #IMPLIED
      tabindex     %Number;                 #IMPLIED
      accesskey    %Character;              #IMPLIED
>

<!-- #PCDATA is to solve the mixed content problem, per
     specification only whitespace is allowed there!
 -->

<!ENTITY % Fieldset.content  "( #PCDATA | legend | %Flow.mix; )*" >
<!ELEMENT fieldset  %Fieldset.content; >
<!ATTLIST fieldset
      %Common.attrib;
>

<![%XHTML.Transitional;[
<!ENTITY % LegendAlign.attrib
     "align        (top|bottom|left|right)  #IMPLIED" >
]]>
<!ENTITY % LegendAlign.attrib  "" >

<!ENTITY % Legend.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT legend  %Legend.content; >
<!ATTLIST legend
      %Common.attrib;
      accesskey    %Character;              #IMPLIED
      %LegendAlign.attrib;
>

<!ENTITY % Button.content  
     "( #PCDATA 
      | %Heading.class; 
      | %List.class; 
      | %Inlpres.class; 
      | %Inlphras.class; 
      | %Block-noform.mix; 
      | img | object | map )*"
>
<!ELEMENT button  %Button.content; > 
<!ATTLIST button
      %Common.attrib;
      name         CDATA                    #IMPLIED
      value        CDATA                    #IMPLIED
      type         (button|submit|reset)    'submit'
      disabled     (disabled)               #IMPLIED
      tabindex     %Number;                 #IMPLIED
      accesskey    %Character;              #IMPLIED
>

<!-- end of forms.mod -->

]]>

<!-- Tables Module ..................................... -->
<!ENTITY % XHTML1-table.module "INCLUDE" >
<![%XHTML1-table.module;[
<!ENTITY % XHTML1-table.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Tables//EN"
            "XHTML1-table.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Table Module  .............................................. -->
<!-- file: XHTML1-table.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-table.mod 1.15 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Tables//EN"
     SYSTEM "XHTML1-table.mod"

     Revisions:
     (none)
     ....................................................................... -->

<!-- d6. HTML 4.0 Tables 

        caption, col, colgroup, table, tbody, td, tfoot, th, thead, tr 

     A conditional section includes additional declarations for the Transitional DTD
-->

<!-- IETF HTML table standard, see [RFC1942] -->

<!-- The border attribute sets the thickness of the frame around the
     table. The default units are screen pixels.

     The frame attribute specifies which parts of the frame around
     the table should be rendered. The values are not the same as
     CALS to avoid a name clash with the valign attribute.

     The value "border" is included for backwards compatibility with
     <table border> which yields frame=border and border=implied
     For <table border="1"> you get border="1" and frame="implied". In 
     this case, it is appropriate to treat this as frame=border for 
     backwards compatibility with deployed browsers.
-->

<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">

<!-- The rules attribute defines which rules to draw between cells:

     If rules is absent then assume:

       "none" if border is absent or border="0" otherwise "all"
-->

<!ENTITY % TRules "(none | groups | rows | cols | all)">
  
<!-- horizontal placement of table relative to document -->
<!ENTITY % TAlign "(left|center|right)">

<!-- horizontal alignment attributes for cell contents -->
<!ENTITY % CellHAlign.attrib
     "align        (left|center|right|justify|char) #IMPLIED
      char         %Character;              #IMPLIED
      charoff      %Length;                 #IMPLIED"
>

<!-- vertical alignment attributes for cell contents -->
<!ENTITY % CellVAlign.attrib
     "valign       (top|middle|bottom|baseline) #IMPLIED"
>

<!ENTITY % CaptionAlign "(top|bottom|left|right)">

<!-- Scope is simpler than axes attribute for common tables -->

<!ENTITY % Scope "(row|col|rowgroup|colgroup)" >

<!ENTITY % Table.content
      "( caption?, ( col* | colgroup* ), (( thead?, tfoot?, tbody+ ) | ( tr+ )))"
>
<!ELEMENT table  %Table.content; >
<!ATTLIST table
      %Common.attrib;
      summary      %Text;                   #IMPLIED
      width        %Length;                 #IMPLIED
      border       %Pixels;                 #IMPLIED
      frame        %TFrame;                 #IMPLIED
      rules        %TRules;                 #IMPLIED
      cellspacing  %Length;                 #IMPLIED
      cellpadding  %Length;                 #IMPLIED
      datapagesize CDATA                    #IMPLIED
>

<!ENTITY % Caption.content  "( #PCDATA | %Inline.mix; )*" >
<!ELEMENT caption  %Caption.content; >
<!ATTLIST caption
      %Common.attrib;
>

<!ENTITY % Thead.content  "( tr )+" >
<!ELEMENT thead  %Thead.content; >
<!-- Use thead to duplicate headers when breaking table
     across page boundaries, or for static headers when
     TBODY sections are rendered in scrolling panel.

     Use tfoot to duplicate footers when breaking table
     across page boundaries, or for static footers when
     TBODY sections are rendered in scrolling panel.

     Use multiple tbody sections when rules are needed
     between groups of table rows.
-->
<!ATTLIST thead
      %Common.attrib;
      %CellHAlign.attrib;
      %CellVAlign.attrib;
>

<!ENTITY % Tfoot.content  "( tr )+" >
<!ELEMENT tfoot  %Tfoot.content; >
<!ATTLIST tfoot
      %Common.attrib;
      %CellHAlign.attrib;
      %CellVAlign.attrib;
>

<!ENTITY % Tbody.content  "( tr )+" >
<!ELEMENT tbody  %Tbody.content; >
<!ATTLIST tbody
      %Common.attrib;
      %CellHAlign.attrib;
      %CellVAlign.attrib;
>

<!ENTITY % Colgroup.content  "( col )*" >
<!ELEMENT colgroup  %Colgroup.content; >
<!-- colgroup groups a set of col elements. It allows you to group
     several semantically related columns together.
-->
<!ATTLIST colgroup
      %Common.attrib;
      span         %Number;                 '1'
      width        %MultiLength;            #IMPLIED
      %CellHAlign.attrib;
      %CellVAlign.attrib;
>

<!ENTITY % Col.content  "EMPTY" >
<!ELEMENT col  %Col.content; >
<!-- col elements define the alignment properties for cells in
     one or more columns.

     The width attribute specifies the width of the columns, e.g.

       width="64"        width in screen pixels
       width="0.5*"      relative width of 0.5

     The span attribute causes the attributes of one
     col element to apply to more than one column.
  -->
<!ATTLIST col
      %Common.attrib;
      span         %Number;                 '1'
      width        %MultiLength;            #IMPLIED
      %CellHAlign.attrib;
      %CellVAlign.attrib;
>

<!ENTITY % Tr.content  "( th | td )+" >
<!ELEMENT tr  %Tr.content; >
<!ATTLIST tr
      %Common.attrib;
      %CellHAlign.attrib;
      %CellVAlign.attrib;
>

<!-- th is for headers, td for data, but for cells acting as both use td -->

<!ENTITY % Th.content  "( #PCDATA | %Flow.mix; )*" >
<!ELEMENT th  %Th.content; >
<!ATTLIST th
      %Common.attrib;
      abbr         %Text;                   #IMPLIED
      axis         CDATA                    #IMPLIED
      headers      IDREFS                   #IMPLIED
      scope        %Scope;                  #IMPLIED
      rowspan      %Number;                 '1'
      colspan      %Number;                 '1'
      %CellHAlign.attrib;
      %CellVAlign.attrib;
>

<!ENTITY % Td.content  "( #PCDATA | %Flow.mix; )*" >
<!ELEMENT td  %Td.content; >
<!ATTLIST td
      %Common.attrib;
      abbr         %Text;                   #IMPLIED
      axis         CDATA                    #IMPLIED
      headers      IDREFS                   #IMPLIED
      scope        %Scope;                  #IMPLIED
      rowspan      %Number;                 '1'
      colspan      %Number;                 '1'
      %CellHAlign.attrib;
      %CellVAlign.attrib;
>

<![%XHTML.Transitional;[
<!-- additional Transitional attributes for XHTML tables:
     (in XML, multiple ATTLIST declarations are merged)
-->

<!ATTLIST table
      align       %TAlign;                  #IMPLIED
      bgcolor     %Color;                   #IMPLIED
>

<!ATTLIST caption
      align       %CaptionAlign;            #IMPLIED
>

<!ATTLIST tr
      bgcolor     %Color;                   #IMPLIED
>

<!ATTLIST th
      nowrap      (nowrap)                  #IMPLIED
      bgcolor     %Color;                   #IMPLIED
      width       %Pixels;                  #IMPLIED
      height      %Pixels;                  #IMPLIED
>

<!ATTLIST td
      nowrap       (nowrap)                 #IMPLIED
      bgcolor      %Color;                  #IMPLIED
      width        %Pixels;                 #IMPLIED
      height       %Pixels;                 #IMPLIED
>
]]>

<!-- end of XHTML1-table.mod -->

]]>

<!-- Document Metainformation Module ................... -->
<!ENTITY % XHTML1-meta.module "INCLUDE" >
<![%XHTML1-meta.module;[
<!ENTITY % XHTML1-meta.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Metainformation//EN"
            "XHTML1-meta.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Document Metainformation Module  ........................... -->
<!-- file: XHTML1-meta.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-meta.mod 1.14 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Metainformation//EN"
     SYSTEM "XHTML1-meta.mod"

     Revisions:
# 1998-11-11  title content model changed - exclusions no longer necessary
# 1999-02-01  removed isindex
     ....................................................................... -->

<!-- d1. Meta Information 

        meta, title
-->

<!-- The title element is not considered part of the flow of text. 
     It should be displayed, for example as the page header or 
     window title. Exactly one title is required per document. 
--> 

<!ENTITY % Title.content  "( #PCDATA )" >
<!ELEMENT title  %Title.content; >
<!ATTLIST title
      %I18n.attrib;
>

<!ENTITY % Meta.content  "EMPTY" >
<!ELEMENT meta  %Meta.content; >
<!ATTLIST meta
      %I18n.attrib;
      http-equiv   NMTOKEN                  #IMPLIED
      name         NMTOKEN                  #IMPLIED
      content      CDATA                    #REQUIRED
      scheme       CDATA                    #IMPLIED
>

<!-- end of XHTML1-meta.mod -->

]]>

<!-- Document Structure Module ......................... -->
<!ENTITY % XHTML1-struct.module "INCLUDE" >
<![%XHTML1-struct.module;[
<!ENTITY % XHTML1-struct.mod
     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Document Structure//EN"
            "XHTML1-struct.mod" >
<!-- ...................................................................... -->
<!-- XHTML 1.0 Structure Module  .......................................... -->
<!-- file: XHTML1-struct.mod

     This is XHTML 1.0, an XML reformulation of HTML 4.0.
     Copyright 1998-1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
     Revision: @(#)XHTML1-struct.mod 1.15 99/04/01 SMI

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS XHTML 1.0 Document Structure//EN"
     SYSTEM "XHTML1-struct.mod"

     Revisions:
# 1998-10-27  content model on head changed to exclude multiple title or base
# 1998-11-11  ins and del inclusions on body removed, added to indiv. elements
# 1998-11-15  added head element version attribute (restoring from HTML 3.2)
# 1999-03-24  %Profile.attrib; unused, but reserved for future use
     ....................................................................... -->

<!-- a1. Document Structure 

        body, head, html
-->

<!ENTITY % Head-opts.mix  "( script | style | meta | link | object )*" > 

<!ENTITY % Head.content "( title, base?, %Head-opts.mix; )" > 

<!-- reserved for future use with document profiles -->
<!ENTITY % Profile.attrib 
     "profile      %URI;                    #FIXED '%XHTML.profile;'" >

<!ELEMENT head  %Head.content; > 
<!ATTLIST head 
      %I18n.attrib;
      profile      %URI;                    #IMPLIED
> 

<![%XHTML.Transitional;[
<!-- in Transitional, allow #PCDATA and inlines directly within body -->

<!ENTITY % Body.content  "( #PCDATA | %Flow.mix; )*" > 
]]>
<!ENTITY % Body.content
     "( %Heading.class; 
      | %List.class; 
      | %Block.class; 
      | %Misc.class; )+"
>

<!ELEMENT body  %Body.content; >
<!ATTLIST body
      %Common.attrib;
>

<![%XHTML.Transitional;[
<!-- ....  additional Transitional attributes on body .... -->

<!-- There are also 16 widely known color names with their sRGB values: 
 
    Black  = #000000   Maroon = #800000   Green  = #008000   Navy   = #000080 
    Silver = #C0C0C0   Red    = #FF0000   Lime   = #00FF00   Blue   = #0000FF 
    Gray   = #808080   Purple = #800080   Olive  = #808000   Teal   = #008080 
    White  = #FFFFFF   Fuchsia= #FF00FF   Yellow = #FFFF00   Aqua   = #00FFFF 
--> 

<!ATTLIST body
      bgcolor      %Color;                  #IMPLIED
      text         %Color;                  #IMPLIED
      link         %Color;                  #IMPLIED
      vlink        %Color;                  #IMPLIED
      alink        %Color;                  #IMPLIED
      background   %URI;                    #IMPLIED
>
]]>

<!ENTITY % Html.content  "( head, body )" >

<!-- version and namespace attribute values defined in driver -->
<!ENTITY % Version.attrib 
     "version      CDATA                    #FIXED '%HTML.version;'" >
<!ENTITY % Ns.attrib 
     "xmlns        %URI;                    #FIXED '%XHTML.ns;'" >

<!ELEMENT html  %Html.content; >
<!ATTLIST html
      %I18n.attrib;
      %Version.attrib;
      %Ns.attrib;
>

<!-- end of XHTML1-struct.mod -->
]]>

<!-- end of XHTML 1.0 Strict DTD  ......................................... -->
<!-- ...................................................................... -->

<!-- end of XHTML 1.0 Strict + Math DTD  .................................. -->
<!-- ...................................................................... -->
