<!--X.DTD (Experimental Markup Language).                              -->

<!-- ====================COPYRIGHT and DISCLAIMER====================  -->
<!--
 This file and accompanying files in the distribution are copyright
 Peter Murray-Rust, 1996, 1997.  There is no charge for their use 
 but they are not in the public domain and may not be modified.  The
 phrases Chemical Markup Language anf Technical Markup Language and
 the corresponding abbreviations CML and TecML are also copyright.

 These files may be freely used for private study or research but may not 
 be redistributed either in whole or part.

 The author makes no representation of the suitability of these files for 
 any purpose and disclaims any responsibility for their use for whatever
 purpose.
                                                                       -->
<!-- ================================================================  -->

<!-- 1996-12-28 major revision (CML 1.0)                               -->
<!ENTITY % tecml.dtd "IGNORE" -- Don't try to use this file twice      -->

<!-- HTML 2.0 adapted for TecML and CML                                -->

<!ENTITY % html20 PUBLIC "-//CML//DTD HTML (TecML)//EN"                 >
%html20;

<!--===================================================================-->
<!--                      PARAMETER ENTITIES                           -->
<!--===================================================================-->

<!--======================= Content Models ============================-->

<!--...................................................................-->
<!-- Generic description                                               -->
<!--...................................................................-->

<!ENTITY % x.descrip '(xhtml?)'                                          >

<!--...................................................................-->
<!-- %variable (generic variable )                                     -->
<!--...................................................................-->

<!ENTITY % xvariable '(#PCDATA)'                                         >

<!--...................................................................-->
<!-- Generic content                                                   -->
<!--...................................................................-->

<!ENTITY % x.content  '(%x.descrip;, (array | xlist| xvar)*)'            >

<!--======================= Attribute values ==========================-->

<!-- the TYPE of ARRAY or XVAR.  Default is "" which has the semantics -->
<!-- of 'string'.                                                      -->

<!ENTITY % x.type PUBLIC "-//CML//ENTITIES TecML X.TYPE//EN"             >


<!-- Fuzzy data (range, error limits, etc)                             -->

<!ENTITY % x.fuzzy PUBLIC "-//CML//ENTITIES TecML X.FUZZY//EN"           >


<!-- Type/structure of ARRAY (matrices, geometry, etc.)                -->

<!ENTITY % array.str PUBLIC "-//CML//ENTITIES TecML X.ARR.STR//EN"       >


<!-- Formats for images                                                -->

<!ENTITY % figure.format PUBLIC "-//CML//ENTITIES TecML X.FIG.FORMAT//EN">

<!-- Formats for notations                                             -->

<!ENTITY % notation.fmt PUBLIC "-//CML//ENTITIES TecML X.NOTATION.FMT//EN">

<!-- Values of CONTENT attribute for XLIST                             -->

<!ENTITY % xlist.contatt PUBLIC "-//CML//ENTITIES TecML X.LIST.CONTATT//EN">

<!-- Most ELEMENTS in TecML can act as heads or tails of links and the -->
<!-- HTML2.0 mechanism is used.                                        -->
<!-- NAME and HREF have the same meanings as in HTML2.0 and are used   -->
<!-- sufficiently frequently that we use a parameter entity.  The HREF -->
<!-- can have the additional attributes (%linkExtraAttributes) of HTML -->
<!-- These expand to: REL, REV, URN, TITLE and METHODS                 -->

<!ENTITY % href '
          href        CDATA                             #IMPLIED
          %linkExtraAttributes;
          '
                                                                         >
<!ENTITY % name '
          name        CDATA                             #IMPLIED
          '
                                                                         >

<!-- Use dictionary names for describing XLISTs, ARRAYs, XVARs         -->
<!-- This is an alternative to the use of the glossary mechanism       -->
<!-- dictname should only be used in conjunction with CONVENTION       -->

<!ENTITY % dictname '
          convention  CDATA                             #IMPLIED
          dictname    CDATA                             #IMPLIED
          '
                                                                         >

<!-- Type of an object (such as INTEGER, FLOAT, etc.)                  -->
<!-- applies to XVAR and ARRAY                                         -->
<!ENTITY % type '
          type        (%x.type;)                        #IMPLIED
          '
                                                                         >
<!-- Fuzzy objects can have ranges, multiple values, etc.              -->
<!-- applies to XVAR and ARRAY                                         -->
<!ENTITY % fuzzy '
          fuzzy       (%x.fuzzy;)                       #IMPLIED
          '
                                                                         >

<!-- MIME type of referred object (with TYPE= URL or ADDRESS)          -->
<!-- applies to XVAR and ARRAY                                         -->
<!ENTITY % mime '
          mime        CDATA                             #IMPLIED
          '
                                                                         >

<!-- type of referred object (usually an ELEMENT in subsidiary file    -->
<!-- applies to XVAR                                                   -->
<!ENTITY % targettype '
          targettype  CDATA                             #IMPLIED
          '
                                                                         >

<!-- Language (e.g. 2-letter code)                                     -->
<!-- applies to XVAR and ARRAY                                         -->
<!ENTITY % lang '
          lang        CDATA                             #IMPLIED
          '
                                                                         >

<!-- Scientific units                                                  -->
<!-- applies to XVAR and ARRAY                                         -->
<!ENTITY % units '
          units        CDATA                             #IMPLIED
          '
                                                                         >

<!-- Communal attributes for XVAR and ARRAY                            -->
<!ENTITY % vararr '
          %dictname;
          %type;
          %fuzzy;
          %mime;
          %lang;
          %units;
          %targettype;
          '
                                                                         >
          

<!--==============Inheritance from Other DTDs==========================-->

<!-- builtin variables can be defined by other applications which use  -->
<!-- TecML; examples of this are XLISTs of C.MOLs                      -->

<!-- XLIST, ARRAY and XVAR can inherit possible values for the BUILTIN
    attribute.  These must be constructed int he previous DTD (e.g.
    CML.DTD as the x.abc.inh parameter entity .  The definitions must
    all end with a trailing '|'                                        -->

<!ENTITY % tecml.arr.bui PUBLIC "-//CML//ENTITIES TecML ARR.BUI//EN">
<!ENTITY % array.bui '%tecml.arr.inh;  %tecml.arr.bui;'>

<!ENTITY % tecml.lis.bui PUBLIC "-//CML//ENTITIES TecML LIS.BUI//EN">
<!ENTITY % x.lis.bui '%tecml.lis.inh;  %tecml.lis.bui;'>

<!ENTITY % tecml.var.bui PUBLIC "-//CML//ENTITIES TecML VAR.BUI//EN">
<!ENTITY % xvar.bui "%tecml.var.inh;  %tecml.var.bui;">

<!--===================================================================-->
<!--                            NOTATIONs                              -->
<!--===================================================================-->

<!-- NOTATIONs that will be allowed (for validation, etc)              -->

<!NOTATION ascii   SYSTEM>
<!NOTATION c       SYSTEM>
<!NOTATION cpp     SYSTEM>
<!NOTATION fortran SYSTEM>
<!NOTATION html    SYSTEM>
<!NOTATION java    SYSTEM>
<!NOTATION perl    SYSTEM>
<!NOTATION tcl     SYSTEM>
<!NOTATION tex     SYSTEM>
<!NOTATION unk     SYSTEM>
<!NOTATION uue     SYSTEM>

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

<!-- implied XML declaration for whitespace (?not legal SGML)          -->
<!--
<!ATTLIST * -XML-SPACE (KEEP | COLLAPSE)                #IMPLIED         >
-->

<!ELEMENT tecml        - -    (
                              head?, 
                              (
                                xhtml | 
                                xaddr | array | person | bib | xlist | 
                                figure | xnotation | relation  | symbol | 
                                termentry | xvar
                              )*
                            )
                                                                         >
<!--...................................................................-->
<!ELEMENT admin     - -   (xhtml | xvar | xlist | person)*               >
<!ATTLIST admin
          %name;   
          %href;
          %dictname;
                                                                         >
<!--...................................................................-->
<!ELEMENT array     - -   %xvariable;                                    >
<!ATTLIST array
          %name;   
          %href;
          %vararr;
          builtin     (%array.bui;)                     #IMPLIED
          key         CDATA                             #IMPLIED
          expand      (yes | no)                        #IMPLIED
          struct      (%array.str;)                     #IMPLIED
          start       CDATA                             #IMPLIED
          delta       CDATA                             #IMPLIED
          columns     CDATA                             #IMPLIED
          rows        CDATA                             #IMPLIED
          size        CDATA                             #IMPLIED
                                                                         >
<!--...................................................................-->
<!ELEMENT bib     - -   (
                              %x.descrip;,
                              (xvar | person | xaddr)*
                           )
                                                                         >
<!ATTLIST bib
          %name;   
          %href;
          status      CDATA                             #IMPLIED
                                                                         >
<!--...................................................................-->
<!ELEMENT figure     - -   (
                              %x.descrip;,
                              xnotation?
                            )
                                                                         >
<!ATTLIST figure
          %name;   
          %href;   
          format      (%figure.format)                  #IMPLIED
          width       NUMBER                            #IMPLIED
          height      NUMBER                            #IMPLIED
                                                                         >
<!--...................................................................-->
<!ELEMENT xnotation     - -   CDATA                                       >
<!ATTLIST notation   
          %name;   
          %href;   
          %dictname;
          notation  NOTATION  (%notation.fmt)           #IMPLIED
                                                                         >
<!--...................................................................-->
<!ELEMENT person     - -  (
                            %x.descrip;,
                            (xvar | xaddr)*
                          )
                                                                         >
<!ATTLIST person
          %name;
          %href;
          role        CDATA                             #IMPLIED
                                                                         >
<!--...................................................................-->
<!ELEMENT relation     - -   (
                             (array | xvar),
                             (array | xvar),
                             %x.content
                          )
                                                                         >
<!ATTLIST relation
          %name;
          %href;
          direction  CDATA                              #IMPLIED
          fromcount  NUMBER                             #IMPLIED
          tocount    NUMBER                             #IMPLIED
                                                                         >

<!--...................................................................-->
<!ELEMENT symbol     - -   %xvariable;                                   >
<!ATTLIST symbol
          %name;   
          %href;
                                                                         >
<!--...................................................................-->
<!ELEMENT termentry - - (
                              (xvar | xhtml | array | admin)*
                           )
                                                                         >
<!ATTLIST termentry
          %name;   
          %href;
          %lang;
                                                                         >
<!--...................................................................-->
<!ELEMENT xaddr     - -   (xvar*)                                        >
<!ATTLIST xaddr
          %name;   
          %href;
                                                                         >
<!--...................................................................-->
<!ELEMENT xhtml     - -    (
                              body
                           )
                                                                         >
<!ATTLIST xhtml
          %version.attr;
          %name;
          %href;
          section     CDATA                             #IMPLIED
          lang        CDATA                             #IMPLIED
                                                                         >
<!--...................................................................-->
<!ELEMENT xlist     - -   ANY                                            >
<!ATTLIST xlist
          %name;   
          %href;
          %dictname;
          builtin     (%x.lis.bui;)                     #IMPLIED
          display     CDATA                             #IMPLIED
          size        NUMBER                            #IMPLIED
          struct      CDATA                             #IMPLIED
          type        CDATA                             #IMPLIED
          content     (%xlist.contatt;)                 #IMPLIED 
          columns     NUMBER                            #IMPLIED
          rows        NUMBER                            #IMPLIED
                                                                         >
<!--...................................................................-->
<!ELEMENT xvar     - -   %xvariable;                                     >
<!ATTLIST xvar
          %name;   
          %href;
          %vararr;
          builtin     (%xvar.bui;)                     #IMPLIED 
                                                                         >
