<!-- This DTD has been edited, with permission, from the HTML 2.0 version -->
<!-- It is to be used in TecML and CML, without alteration -->

<!-- Soon I intend to start using Murray Altheim's modular DTD for HTML-->
<!-- This will allow the omission of SDA and other parts we don't use  -->

<!-- NOTE - TecML is to be compatible with TecML so this version of HTML -->
<!-- has been edited to remove omittable tags                          -->

<!--              Ignore the deprecated parts of HTML 2.0              -->
<!ENTITY % HTML.Recommended "INCLUDE" -- Ignore the deprecated parts   -->

<!-- ignore FORMS                                                      -->
<!ENTITY % HTML.Forms       "IGNORE"  -- CML does not use FORMS        -->

<!-- In addition, two other changes have been made:
    All SDA* attributes have been commented out (the modular DTD also 
	extracts these and suggests a stylesheet mechanism instead.

    PRE has been commented out.  This is because it has mixed content
        with sugnificant record ends and whitespace.  IMO this leads to
        lazy markup (e.g. a 'formatted' table rather than a marked up one.
        It also requires implementers to be extremeley knowledgeable about
        record-ends in mixed content - which I am not :-)             -->

<!-- Peter Murray-Rust, May 1996                                      -->

<!-- ...............................................................  -->
<!-- HTML DTD starts here;  alterations are commented with 'PMR'      -->
<!-- ...............................................................  -->

<!--    html.dtd

        Document Type Definition for the HyperText Markup Language
                 (HTML DTD)

        $Id: html.dtd,v 1.29 1995/08/04 17:50:22 connolly Exp $

        Author: Daniel W. Connolly <connolly@w3.org>
        See Also: html.decl, html-1.dtd
          http://www.w3.org/hypertext/WWW/MarkUp/MarkUp.html
- -->

<!ENTITY % HTML.Version
        "-//IETF//DTD HTML 2.0//EN"

        -- Typical usage:

            <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
            <html>
            ...
            </html>
        --
        >


<!--============ Feature Test Entities ========================-->

<!ENTITY % HTML.Recommended "IGNORE"
        -- Certain features of the language are necessary for
           compatibility with widespread usage, but they may
           compromise the structural integrity of a document.
           This feature test entity enables a more prescriptive
           document type definition that eliminates
           those features.
        -->

<![ %HTML.Recommended [
        <!ENTITY % HTML.Deprecated "IGNORE">
]]>

<!ENTITY % HTML.Deprecated "INCLUDE"
        -- Certain features of the language are necessary for
           compatibility with earlier versions of the specification,
           but they tend to be used an implemented inconsistently,
           and their use is deprecated. This feature test entity
           enables a document type definition that eliminates
           these features.
        -->

<!ENTITY % HTML.Highlighting "INCLUDE"
        -- Use this feature test entity to validate that a
           document uses no highlighting tags, which may be
           ignored on minimal implementations.
        -->

<!ENTITY % HTML.Forms "INCLUDE"
        -- Use this feature test entity to validate that a document
           contains no forms, which may not be supported in minimal
           implementations
        -->

<!--============== Imported Names ==============================-->

<!ENTITY % Content-Type "CDATA"
        -- meaning an internet media type
           (aka MIME content type, as per RFC1521)
        -->

<!ENTITY % HTTP-Method "GET | POST"
        -- as per HTTP specification, in progress
        -->

<!--========= DTD "Macros" =====================-->

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">

<!ENTITY % list " UL | OL | DIR | MENU " >


<!--======= Character mnemonic entities =================-->

<!ENTITY % ISOlat1 PUBLIC
  "ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML">
%ISOlat1;

<!ENTITY amp CDATA "&#38;"     -- ampersand          -->
<!ENTITY gt CDATA "&#62;"      -- greater than       -->
<!ENTITY lt CDATA "&#60;"      -- less than          -->
<!ENTITY quot CDATA "&#34;"    -- double quote       -->


<!--========= SGML Document Access (SDA) Parameter Entities =====-->

<!-- HTML 2.0 contains SGML Document Access (SDA) fixed attributes
in support of easy transformation to the International Committee
for Accessible Document Design (ICADD) DTD
         "-//EC-USA-CDA/ICADD//DTD ICADD22//EN".
ICADD applications are designed to support usable access to
structured information by print-impaired individuals through
Braille, large print and voice synthesis.  For more information on
SDA & ICADD:
        - ISO 12083:1993, Annex A.8, Facilities for Braille,
          large print and computer voice
        - ICADD ListServ
          <ICADD%ASUACAD.BITNET@ARIZVM1.ccit.arizona.edu>
        - Usenet news group bit.listserv.easi
        - Recording for the Blind, +1 800 221 4792
- -->

<!-- PMR has commented out the SDA* stuff -->
<!ENTITY % SDAFORM  "SDAFORM  CDATA  #FIXED"
          -- one to one mapping        -->
<!ENTITY % SDARULE  "SDARULE  CDATA  #FIXED"
          -- context-sensitive mapping -->
<!ENTITY % SDAPREF  "SDAPREF  CDATA  #FIXED"
          -- generated text prefix     -->
<!ENTITY % SDASUFF  "SDASUFF  CDATA  #FIXED"
          -- generated text suffix     -->
<!ENTITY % SDASUSP  "SDASUSP  NAME   #FIXED"
          -- suspend transform process -->


<!--========== Text Markup =====================-->

<![ %HTML.Highlighting [

<!ENTITY % font " TT | B | I ">

<!ENTITY % phrase "EM | STRONG | CODE | SAMP | KBD | VAR | CITE ">

<!ENTITY % text "#PCDATA | A | IMG | BR | %phrase | %font">

<!ELEMENT (%font;|%phrase) - - (%text)*>
<!-- PMR comment out SDA
<!ATTLIST ( TT | CODE | SAMP | KBD | VAR )
        %SDAFORM; "Lit" >
        
<!ATTLIST ( B | STRONG )
        %SDAFORM; "B" >

<!ATTLIST ( I | EM | CITE )
        %SDAFORM; "It" >
-->

<!-- <TT>       Typewriter text                         -->
<!-- <B>        Bold text                               -->
<!-- <I>        Italic text                             -->

<!-- <EM>       Emphasized phrase                       -->
<!-- <STRONG>   Strong emphais                          -->
<!-- <CODE>     Source code phrase                      -->
<!-- <SAMP>     Sample text or characters               -->
<!-- <KBD>      Keyboard phrase, e.g. user input        -->
<!-- <VAR>      Variable phrase or substituable         -->
<!-- <CITE>     Name or title of cited work             -->

<!ENTITY % pre.content "#PCDATA | A | HR | BR | %font | %phrase">

]]>

<!ENTITY % text "#PCDATA | A | IMG | BR">

<!ELEMENT BR    - O EMPTY>
<!-- PMR comment out SDA
<!ATTLIST BR
        %SDAPREF; "&#RE;" >
-->

<!-- <BR>       Line break      -->


<!--========= Link Markup ======================-->

<!ENTITY % linkType "NAMES">

<!ENTITY % linkExtraAttributes
        "REL %linkType #IMPLIED
        REV %linkType #IMPLIED
        URN CDATA #IMPLIED
        TITLE CDATA #IMPLIED
        METHODS NAMES #IMPLIED
        ">

<![ %HTML.Recommended [
        <!ENTITY % A.content   "(%text)*"
        -- <H1><a name="xxx">Heading</a></H1>
                is preferred to
           <a name="xxx"><H1>Heading</H1></a>
        -->
]]>

<!ENTITY % A.content   "(%heading|%text)*">

<!ELEMENT A     - - %A.content -(A)>
        <!-- %SDAPREF; "<Anchor: #AttList>" -->
<!ATTLIST A
        HREF CDATA #IMPLIED
        NAME CDATA #IMPLIED
        %linkExtraAttributes;
        >
<!-- <A>                Anchor; source/destination of link      -->
<!-- <A NAME="...">     Name of this anchor                     -->
<!-- <A HREF="...">     Address of link destination             -->
<!-- <A URN="...">      Permanent address of destination        -->
<!-- <A REL=...>        Relationship to destination             -->
<!-- <A REV=...>        Relationship of destination to this     -->
<!-- <A TITLE="...">    Title of destination (advisory)         -->
<!-- <A METHODS="...">  Operations on destination (advisory)    -->


<!--========== Images ==========================-->

<!ELEMENT IMG    - O EMPTY>
        <!-- %SDAPREF; "<Fig><?SDATrans Img: #AttList>#AttVal(Alt)</Fig>" -->
<!ATTLIST IMG
        SRC CDATA  #REQUIRED
        ALT CDATA #IMPLIED
        ALIGN (top|middle|bottom) #IMPLIED
        ISMAP (ISMAP) #IMPLIED
        >

<!-- <IMG>              Image; icon, glyph or illustration      -->
<!-- <IMG SRC="...">    Address of image object                 -->
<!-- <IMG ALT="...">    Textual alternative                     -->
<!-- <IMG ALIGN=...>    Position relative to text               -->
<!-- <IMG ISMAP>        Each pixel can be a link                -->

<!--========== Paragraphs=======================-->

<!-- PMR comment out OMITTAG -->
<!--ELEMENT P     - O (%text)*-->
<!ELEMENT P     - - (%text)*>

<!-- PMR comment out SDA
<!ATTLIST P
        %SDAFORM; "Para" >
-->

<!-- <P>        Paragraph       -->


<!--========== Headings, Titles, Sections ===============-->

<!ELEMENT HR    - O EMPTY>
<!-- PMR comment out SDA
<!ATTLIST HR
        %SDAPREF; "&#RE;&#RE;" >
-->

<!-- <HR>       Horizontal rule -->

<!ELEMENT ( %heading )  - -  (%text;)*>
<!-- PMR comment out SDA
<!ATTLIST H1
        %SDAFORM; "H1" >
<!ATTLIST H2
        %SDAFORM; "H2" >
<!ATTLIST H3
        %SDAFORM; "H3" >
<!ATTLIST H4
        %SDAFORM; "H4" >
<!ATTLIST H5
        %SDAFORM; "H5" >
<!ATTLIST H6
        %SDAFORM; "H6" >
-->

<!-- <H1>       Heading, level 1 -->
<!-- <H2>       Heading, level 2 -->
<!-- <H3>       Heading, level 3 -->
<!-- <H4>       Heading, level 4 -->
<!-- <H5>       Heading, level 5 -->
<!-- <H6>       Heading, level 6 -->


<!--========== Text Flows ======================-->

<![ %HTML.Forms [
        <!ENTITY % block.forms "BLOCKQUOTE | FORM | ISINDEX">
]]>

<!ENTITY % block.forms "BLOCKQUOTE">

<![ %HTML.Deprecated [
        <!ENTITY % preformatted "PRE | XMP | LISTING">
]]>

<!-- PMR has commented out 'PRE' -->
<!ENTITY % block "P | %list | DL | %block.forms">
<!ENTITY % preformatted "PRE">

<!ENTITY % block "P | %list | DL
        | %preformatted
        | %block.forms">

<!ENTITY % flow "(%text|%block)*">

<!-- PMR commented this out
<!ENTITY % pre.content "#PCDATA | A | HR | BR">
<!ELEMENT PRE - - (%pre.content)*>
         %SDAFORM; "Lit" 
<!ATTLIST PRE
        WIDTH NUMBER #implied
        >
-->

<!-- <PRE>              Preformatted text               -->
<!-- <PRE WIDTH=...>    Maximum characters per line     -->

<![ %HTML.Deprecated [

<!ENTITY % literal "CDATA"
        -- historical, non-conforming parsing mode where
           the only markup signal is the end tag
           in full
        -->

<!ELEMENT (XMP|LISTING) - -  %literal>
        <!-- %SDAFORM; "Lit" -->
        <!-- %SDAPREF; "Example:&#RE;" -->
<!--ATTLIST XMP
        -->
        <!-- %SDAFORM; "Lit" -->
        <!-- %SDAPREF; "Listing:&#RE;" -->
<!--ATTLIST LISTING
        -->

<!-- <XMP>              Example section         -->
<!-- <LISTING>          Computer listing        -->

<!ELEMENT PLAINTEXT - O %literal>
<!-- <PLAINTEXT>        Plain text passage      -->

        <!-- %SDAFORM; "Lit" -->
<!--ATTLIST PLAINTEXT
        -->
]]>


<!--========== Lists ==================-->

<!ELEMENT DL    - -  (DT | DD)+>
        <!-- %SDAFORM; "List" -->
        <!-- %SDAPREF; "Definition List:" -->
<!ATTLIST DL
        COMPACT (COMPACT) #IMPLIED
        >

<!-- PMR comment out OMITTAG -->
<!-- ELEMENT DT    - O (%text)* -->
<!ELEMENT DT    - - (%text)*>
<!-- PMR comment out SDA
<!ATTLIST DT
        %SDAFORM; "Term" >
-->

<!-- PMR comment out OMITTAG -->
<!-- ELEMENT DD    - O %flow -->
<!ELEMENT DD    - - %flow>
<!-- PMR comment out SDA
<!ATTLIST DD
        %SDAFORM; "LItem" >
-->

<!-- <DL>               Definition list, or glossary    -->
<!-- <DL COMPACT>       Compact style list              -->
<!-- <DT>               Term in definition list         -->
<!-- <DD>               Definition of term              -->

<!ELEMENT (OL|UL) - -  (LI)+>
        <!-- %SDAFORM; "List" -->
<!ATTLIST OL
        COMPACT (COMPACT) #IMPLIED
        >
        <!-- %SDAFORM; "List" -->
<!ATTLIST UL
        COMPACT (COMPACT) #IMPLIED
        >
<!-- <UL>               Unordered list                  -->
<!-- <UL COMPACT>       Compact list style              -->
<!-- <OL>               Ordered, or numbered list       -->
<!-- <OL COMPACT>       Compact list style              -->


<!ELEMENT (DIR|MENU) - -  (LI)+ -(%block)>
        <!-- %SDAFORM; "List" -->
        <!-- %SDAPREF; "<LHead>Directory</LHead>" -->
<!ATTLIST DIR
        COMPACT (COMPACT) #IMPLIED
        >
        <!-- %SDAFORM; "List" -->
        <!-- %SDAPREF; "<LHead>Menu</LHead>" -->
<!ATTLIST MENU
        COMPACT (COMPACT) #IMPLIED
        >

<!-- <DIR>              Directory list                  -->
<!-- <DIR COMPACT>      Compact list style              -->
<!-- <MENU>             Menu list                       -->
<!-- <MENU COMPACT>     Compact list style              -->

<!-- PMR comment out OMITTAG -->
<!-- ELEMENT LI    - O %flow -->
<!ELEMENT LI    - - %flow>
<!-- PMR comment out SDA
<!ATTLIST LI
        %SDAFORM; "LItem" >
-->

<!-- <LI>               List item                       -->

<!--========== Document Body ===================-->

<![ %HTML.Recommended [
        <!ENTITY % body.content "(%heading|%block|HR|ADDRESS|IMG)*"
        -- <h1>Heading</h1>
           <p>Text ...
                is preferred to
           <h1>Heading</h1>
           Text ...
        -->
]]>

<!ENTITY % body.content "(%heading | %text | %block |
                                 HR | ADDRESS)*">

<!-- PMR comment out OMITTAG -->
<!-- ELEMENT BODY O O  %body.content -->
<!ELEMENT BODY - -  %body.content>

<!-- <BODY>     Document body   -->

<!ELEMENT BLOCKQUOTE - - %body.content>
<!--
<!ATTLIST BLOCKQUOTE
        %SDAFORM; "BQ" >
-->

<!-- <BLOCKQUOTE>       Quoted passage  -->

<!ELEMENT ADDRESS - - (%text|P)*>
<!--
<!ATTLIST  ADDRESS
        %SDAFORM; "Lit"
        %SDAPREF; "Address:&#RE;">
-->

<!-- <ADDRESS>  Address, signature, or byline   -->


<!--======= Forms ====================-->

<![ %HTML.Forms [

<!ELEMENT FORM - - %body.content -(FORM) +(INPUT|SELECT|TEXTAREA)>
<!ATTLIST FORM
        ACTION CDATA #IMPLIED
        METHOD (%HTTP-Method) GET
        ENCTYPE %Content-Type; "application/x-www-form-urlencoded"
        >
        <!-- %SDAPREF; "<Para>Form:</Para>" -->
        <!-- %SDASUFF; "<Para>Form End.</Para>" -->

<!-- <FORM>                     Fill-out or data-entry form     -->
<!-- <FORM ACTION="...">        Address for completed form      -->
<!-- <FORM METHOD=...>          Method of submitting form       -->
<!-- <FORM ENCTYPE="...">       Representation of form data     -->

<!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX |
                        RADIO | SUBMIT | RESET |
                        IMAGE | HIDDEN )">
<!ELEMENT INPUT - O EMPTY>
<!ATTLIST INPUT
        TYPE %InputType TEXT
        NAME CDATA #IMPLIED
        VALUE CDATA #IMPLIED
        SRC CDATA #IMPLIED
        CHECKED (CHECKED) #IMPLIED
        SIZE CDATA #IMPLIED
        MAXLENGTH NUMBER #IMPLIED
        ALIGN (top|middle|bottom) #IMPLIED
        >
        <!-- %SDAPREF; "Input: " -->

<!-- <INPUT>                    Form input datum                -->
<!-- <INPUT TYPE=...>           Type of input interaction       -->
<!-- <INPUT NAME=...>           Name of form datum              -->
<!-- <INPUT VALUE="...">        Default/initial/selected value  -->
<!-- <INPUT SRC="...">          Address of image                -->
<!-- <INPUT CHECKED>            Initial state is "on"           -->
<!-- <INPUT SIZE=...>           Field size hint                 -->
<!-- <INPUT MAXLENGTH=...>      Data length maximum             -->
<!-- <INPUT ALIGN=...>          Image alignment                 -->

<!ELEMENT SELECT - - (OPTION+) -(INPUT|SELECT|TEXTAREA)>
<!ATTLIST SELECT
        NAME CDATA #REQUIRED
        SIZE NUMBER #IMPLIED
        MULTIPLE (MULTIPLE) #IMPLIED
        >
        <!-- %SDAFORM; "List" -->
        <!-- %SDAPREF; 
        "<LHead>Select #AttVal(Multiple)</LHead>" -->

<!-- <SELECT>                   Selection of option(s)          -->
<!-- <SELECT NAME=...>          Name of form datum              -->
<!-- <SELECT SIZE=...>          Options displayed at a time     -->
<!-- <SELECT MULTIPLE>          Multiple selections allowed     -->

<!ELEMENT OPTION - O (#PCDATA)*>
<!ATTLIST OPTION
        SELECTED (SELECTED) #IMPLIED
        VALUE CDATA #IMPLIED
        >
        <!-- %SDAFORM; "LItem" -->
        <!-- %SDAPREF; 
        "Option: #AttVal(Value) #AttVal(Selected)" -->

<!-- <OPTION>                   A selection option              -->
<!-- <OPTION SELECTED>          Initial state                   -->
<!-- <OPTION VALUE="...">       Form datum value for this option-->

<!ELEMENT TEXTAREA - - (#PCDATA)* -(INPUT|SELECT|TEXTAREA)>
<!ATTLIST TEXTAREA
        NAME CDATA #REQUIRED
        ROWS NUMBER #REQUIRED
        COLS NUMBER #REQUIRED
        >
        <!-- %SDAFORM; "Para" -->
        <!-- %SDAPREF; "Input Text -- -- #AttVal(Name): " -->

<!-- <TEXTAREA>                 An area for text input          -->
<!-- <TEXTAREA NAME=...>        Name of form datum              -->
<!-- <TEXTAREA ROWS=...>        Height of area                  -->
<!-- <TEXTAREA COLS=...>        Width of area                   -->

]]>


<!--======= Document Head ======================-->

<![ %HTML.Recommended [
        <!ENTITY % head.extra "">
]]>
<!ENTITY % head.extra "& NEXTID?">

<!-- PMR (no need for ISINDEX in TecML) -->

<![ %HTML.Forms [
<!ENTITY % head.content "TITLE & ISINDEX? & BASE? %head.extra">
]]>
<!ENTITY % head.content "TITLE & BASE? %head.extra">

<!-- PMR comment out OMITTAG -->
<!-- ELEMENT HEAD O O  (%head.content) +(META|LINK) -->
<!ELEMENT HEAD - -  (%head.content) +(META|LINK)>

<!-- <HEAD>     Document head   -->

<!ELEMENT TITLE - -  (#PCDATA)*>
<!--
<!ATTLIST TITLE
        %SDAFORM; "Ti">
-->

<!-- <TITLE>    Title of document -->

<!ELEMENT LINK - O EMPTY>
<!ATTLIST LINK
        HREF CDATA #REQUIRED
        %linkExtraAttributes;
        >
        <!-- %SDAPREF; "Linked to : #AttVal (TITLE) (URN) (HREF)>"    -->

<!-- <LINK>             Link from this document                 -->
<!-- <LINK HREF="...">  Address of link destination             -->
<!-- <LINK URN="...">   Lasting name of destination             -->
<!-- <LINK REL=...>     Relationship to destination             -->
<!-- <LINK REV=...>     Relationship of destination to this     -->
<!-- <LINK TITLE="..."> Title of destination (advisory)         -->
<!-- <LINK METHODS="..."> Operations allowed (advisory)         -->

<!-- PMR comment out ISINDEX -->
<!--
<!ELEMENT ISINDEX - O EMPTY>
-->
<!--
<!ATTLIST ISINDEX
        %SDAPREF;
   "<Para>[Document is indexed/searchable.]</Para>">
-->

<!-- <ISINDEX>          Document is a searchable index          -->

<!ELEMENT BASE - O EMPTY>
<!ATTLIST BASE
        HREF CDATA #REQUIRED     >

<!-- <BASE>             Base context document                   -->
<!-- <BASE HREF="...">  Address for this document               -->

<!-- PMR commented this out
<!ELEMENT NEXTID - O EMPTY>
<!ATTLIST NEXTID
        N CDATA #REQUIRED     >
-->

<!-- <NEXTID>           Next ID to use for link name            -->
<!-- <NEXTID N=...>     Next ID to use for link name            -->

<!ELEMENT META - O EMPTY>
<!ATTLIST META
        HTTP-EQUIV  NAME    #IMPLIED
        NAME        NAME    #IMPLIED
        CONTENT     CDATA   #REQUIRED    >

<!-- <META>                     Generic Metainformation         -->
<!-- <META HTTP-EQUIV=...>      HTTP response header name       -->
<!-- <META NAME=...>            Metainformation name            -->
<!-- <META CONTENT="...">       Associated information          -->

<!--======= Document Structure =================-->

<![ %HTML.Deprecated [
        <!ENTITY % html.content "HEAD, BODY, PLAINTEXT?">
]]>
<!ENTITY % html.content "HEAD, BODY">

<!-- PMR comment out OMITTAG -->
<!-- ELEMENT HTML O O  (%html.content) -->
<!ELEMENT HTML - -  (%html.content)>
<!-- PMR commented this out -->
<!ENTITY % version.attr "">
<!ENTITY % version.attr "VERSION CDATA #FIXED '%HTML.Version;'">

<!--
<!ATTLIST HTML
        %version.attr;
        %SDAFORM; "Book">
-->

<!-- <HTML>                     HTML Document   -->


