<!-- (C) International Organization for Standardization 1988, 1989,
     1990, 1991, 1992.
     Permission to copy in any form is granted for use with
     conforming SGML systems and applications as defined in
     ISO 8879, provided this notice is included in all copies.

     Creator:  Anders Berglund.

     Version: 2.10   1992-07-30
-->

<!ENTITY % doctype "standard"    -- Document type generic identifier -->
<!ENTITY % idref   "IDREF"    -- default value - can be set to CDATA -->
<!ENTITY % idrefs  "IDREFS"   -- default value - can be set to CDATA -->
<!ENTITY % stdata  "CDATA"    -- default value                       -->
<!ENTITY % math.mp  "-- --"                                            >
<!ENTITY % df.type  "-- --"                                            >
<!ENTITY % df.ref   "-- --"                                            >
<!ENTITY % main.ex  "dummy"       -- exclusions at the doctype level -->
<!ENTITY % EHyTime  "dummy?"           -- HyTime elements for extref -->
<!ENTITY % AHyTime  "-- --"          -- HyTime attributes for extref -->

<!--This is a document type definition for standards.
It follows as closely as possible the Document Type Definition in Annex
E of ISO 8879-1986                                                   -->

<!NOTATION cgmchar  PUBLIC "ISO 8632-2:1987//NOTATION Information
                           processing systems - Computer Graphics -
                           Metafile for the storage and transfer of
                           picture description information -
                           Part 2: Character encoding//EN"         >
<!NOTATION cgmclear PUBLIC "ISO 8632-4:1987//NOTATION Information
                           processing systems - Computer Graphics -
                           Metafile for the storage and transfer of
                           picture description information -
                           Part 4: Clear text encoding//EN"        >
<!NOTATION iges     PUBLIC "NBS IR 88-3813//NOTATION Initial
                           Graphics Exchange Specification (IGES)
                           //EN"                                   >
<!NOTATION fax      PUBLIC "CCITT VII.3 T 6//NOTATION Blue book -
                           Terminal equipment and protocols for
                           telematic services - Facsimile encoding
                           schemes and coding control functions for
                           group 4 facsimile apparatus//EN"        >
<!NOTATION spdl     PUBLIC "ISO/IEC 10180:1992//NOTATION Information
                           technology - Text communication -
                           Standard Page Description Language
                           (SPDL)//EN"                             >

                 <!-- Entity Naming Conventions -->
<!--
                   Prefix = where usee:
     p.  = in paragraphs (also in phrases if .ph suffix)
     s.  = in sections (i.e., among paragraphs)
     ps. = in paragraphs and sections
     i.  = where allowed by inclusion exceptions
     m.  = content model or declared content
     a.  = attribute definition
     NONE= specific use defined in models
                 Suffix = allowed content:
     .ph = elements whose content is %m.ph
     .d  = elements whose content has same definition
     NONE= elements with unique definitions
-->
                        <!-- Element Tokens -->
<!ENTITY % p.em.ph "hp1|hp2|hp3|hp4|hp0|cit"   -- Emphasized phrases -->
<!ENTITY % p.rf.ph "hdref|figref|tabref|rtref|atref"
                                                -- Reference phrases -->
<!ENTITY % p.rf.d  "fnref|noteref|liref|iref|bibref|tnref|dfref|xmpref"
                                               -- References (empty) -->
<!ENTITY % p.tm.ph "bot|zoo|microb|term"             -- Term phrases -->
<!ENTITY % p.zz.ph "f|cf|q|sub|sup|tol|fillin|sv|sk|sd|sdr|stv|stc|flmat|
(%p.em.ph;)|(%p.tm.ph;)|(%p.rf.ph;)|(%p.rf.d;)|extref|refref"
                                                        --All phrases-->
<!ENTITY % ps.ul.d "ol|ul|sl|nl"                  -- Unit-item lists -->
<!ENTITY % ps.list "%ps.ul.d;|dl|syml|varl|bl|rl|al|tl" -- All lists -->
<!ENTITY % ps.elem "xmp|xmps|cptr|lq|lines|artwork|note|
caution|warning|tabmat|form|compexp"               -- Other elements -->
<!ENTITY % ps.snot "syn"                         -- Special notations-->
<!ENTITY % ps.zz   "%ps.elem;|%ps.list;|%ps.snot;|alterns"
                                            -- Para/sect subelements -->
<!ENTITY % s.p.d   "p|lp|alterns"               -- Simple paragraphs -->
<!ENTITY % s.zz    "p|lp|(%ps.zz;)"           -- Section subelements -->
<!ENTITY % i.float "fig|tab|fn"                 -- Floating elements -->
<!ENTITY % bd.d    "scope|conf|symabb|syms"          -- Body elements-->
<!ENTITY % ix      "i1|i2|i3|ih1|ih2|ih3|iref"      -- Index elements-->

                         <!-- Model Groups -->
<!ENTITY % m.ph    "(#PCDATA|(%p.zz.ph;))*"          -- Phrase model -->
<!-- former entity m.p split up into m.p1 & m.p2 to be avoid having
     a litteral > 240 chars. Note that use is ((%m.p1;|%m.p2;)*)
-->
<!ENTITY % m.p1    "#PCDATA|df|dfg|cdf|(%p.zz.ph;)"
                                           -- Paragraph model part 1 -->
<!ENTITY % m.p2    "(%ps.zz;)"             -- Paragraph model part 2 -->
<!ENTITY % m.pseq  "(p, (%s.zz;)*)"              --Paragraph sequence-->

                    <!-- overall document structure -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT %doctype;   O O  (bibinfo*,%fm.d;,genwarn?,body,
                            %annxs;,index*,backm?)
                            -(%main.ex;) +(%ix;|%i.float;|revmark)     >
<!ELEMENT dummy       - O  EMPTY
                            -- dummy element to keep 8879:1986 happy -->

<!-- ***************************************************************
     *                                                             *
     *                    BIBLIOGRAPHIC INFORMATION                *
     *                                                             *
     *************************************************************** -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT bibinfo     - O  (titles,edition,version?,language,refnums,
                            sourceod?,notes?,endorsmt?,developc,replaces*,
                            replaced*,abstract?,classifn*,keyword*,relstd*,
                            prodinfo?,otherprm*,othertxt*)  -(%i.float)
                                        -- bibliographic information -->

<!ELEMENT titles      O O  (mtitle,ptitle?)+  -- titles (in different
                                          languages) of the standard -->
<!ELEMENT mtitle      - O  (tline+)         -- title of the standard -->
<!ELEMENT tline       O O  %m.ph;                      -- title line -->
<!ELEMENT ptitle      - O  (ptline+)            -- title of the part -->
<!ELEMENT ptline      O O  %m.ph;                      -- title line -->

<!ELEMENT edition     - O  (#PCDATA)                                   >
<!ELEMENT version     - O  (#PCDATA)                                   >
<!ELEMENT language    - O  (#PCDATA)                                   >

<!ELEMENT refnums     O O  (wdnumber?,number,part?,type?)
                                                -- reference numbers -->
<!ELEMENT wdnumber    - O  (com,sernum)
                                -- document number for working draft -->
<!ELEMENT  com        O O  (#PCDATA)                                   >
<!ELEMENT  sernum     - O  (#PCDATA)                                   >
<!ELEMENT number      - O  (#PCDATA)       -- number of the document -->
<!ELEMENT part        - O  (#PCDATA)           -- number of the part -->
<!ELEMENT type        - O  (#PCDATA)
              -- type of document (types of Technical Report for ISO -->

<!ELEMENT sourceod    - O  (#PCDATA) --source of document(ISO|ISOIEC)-->
<!ELEMENT notes       - O  (#PCDATA)           -- notes for document -->
<!ELEMENT endorsmt    - O  ((endorsdn,endorsnt?)+)                     >
<!ELEMENT endorsdn    - O  (#PCDATA)
                            -- document numnber of endorsed standard -->
<!ELEMENT endorsnt    - O  %m.pseq;  +(%i.float) -- endorsement note -->

<!ELEMENT (replaces|replaced)
                      - - (extref,replcom)   -- reference to replacement
                                                document and comment -->
<!ELEMENT replcom     - O %m.pseq;                                     >

<!ELEMENT developc    - O  (status,scdate,votestrt?,voteend?,report?)+
                                  -- stages in the development cycle -->
<!ELEMENT status      - O  (#PCDATA)           -- status of document -->
<!ELEMENT scdate      - O  (#PCDATA)   -- date for the status change -->
<!ELEMENT votestrt    - O  (#PCDATA)   -- date for the start of vote -->
<!ELEMENT voteend     - O  (#PCDATA)     -- date for the end of vote -->
<!ELEMENT report      - O  %m.pseq;  +(%i.float)           -- report -->

<!ELEMENT abstract    - O  %m.pseq;                      -- abstract -->

<!ELEMENT classifn    - O  (#PCDATA)   -- classification of standard -->
<!ELEMENT keyword     - O  (#PCDATA)                      -- keyword -->
<!ELEMENT relstd      - O  (#PCDATA)             -- related standard -->

<!ELEMENT prodinfo    - O  (prodparm,prodval)*
                                  -- production specific information -->
<!ELEMENT prodparm    - O  (#PCDATA) -- name of production parameter -->
<!ELEMENT prodval     - O  (#PCDATA) -- value of production parameter-->

<!ELEMENT otherprm    - O  (#PCDATA)  -- other parameter information -->
<!ELEMENT othertxt    - O  %m.pseq;  +(%i.float)
                                        -- other textual information -->

<!--      ELEMENTS         NAME     VALUE     DEFAULT                -->
<!ATTLIST bibinfo          apply    CDATA     #REQUIRED                >
<!ATTLIST mtitle           langcode CDATA     #REQUIRED                >
<!ATTLIST classifn         type     CDATA     UDC                      >
<!ATTLIST otherprm         type     CDATA     #REQUIRED                >
<!ATTLIST othertxt         type     CDATA     #REQUIRED                >
<!ATTLIST (tline|ptline)   type     CDATA     #IMPLIED  -- used for e.g.
                    introductory title, main title, subsidiary title -->

<!-- ***************************************************************
     *                                                             *
     *                    BODY                                     *
     *                                                             *
     *************************************************************** -->
<!--                                                                 -->
<!ELEMENT genwarn     - -  (p,(%s.zz;)*)          -- General Warning -->
<!ELEMENT body        - O  ((gensec,section*)|(scopesec,section*)|
                           (scope, conf?, refs?, defs?, (symabb|syms)?,
                                                                h1*))  >
<!ELEMENT backm       - O  (%bm.d;)                                    >
<!ELEMENT index       - O  EMPTY      -- index has generated content -->

<!-- foreword and introduction are included below                    -->

                   <!-- Sections and Clauses -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT gensec      - O  (scope, conf?, refs?, defs?,
                            (symabb|syms)?,h1*)                        >
<!ELEMENT scopesec    - O  ((%s.zz;)*)    -- section with only scope -->
<!ELEMENT section     - O  (h0t, (%s.zz;)*, h1*)          -- Section -->
<!ELEMENT h1          - O  (h1t, (%s.zz;)*, (h2*|p2*))     -- Clause -->
<!ELEMENT (annexn|annexi)  - O (h0t, (%s.zz;)*, (h1*|p1*))             >
<!ELEMENT (%bd.d;)    - O  ((%s.zz;)*, (h2*|p2*))
                                           -- Clauses with fix title -->
<!ELEMENT refs        - O  (p*,reflist)         -- normative references -->
<!ELEMENT reflist     O O  ((refref,reftit?)+) -- list of references -->
<!ELEMENT refref      - O  (#PCDATA, cit?)    -(%i.float)     -- reference -->
<!ELEMENT reftit      - O  (%m.ph;)  -(refref) -- title of reference -->
<!ELEMENT defs        - O  (p*,defref*,dl?)              -- definitions -->
<!ELEMENT defref      - O  (#PCDATA)    -(%i.float)     -- reference -->
<!ELEMENT h2          - O  (h2t, (%s.zz;)*, (h3*|p3*))  -- Subclause -->
<!ELEMENT h3          - O  (h3t, (%s.zz;)*, (h4*|p4*)) -- S.s.clause -->
<!ELEMENT h4          - O  (h4t, (%s.zz;)*, (h5*|p5*))  -- ...clause -->
<!ELEMENT h5          - O  (h5t, (%s.zz;)*, (h6*|p6*))  -- ...clause -->
<!ELEMENT h6          - O  (h6t, (%s.zz;)*)             -- ...clause -->
<!ELEMENT  (h0t|h1t|h2t|h3t|h4t|h5t|h6t)
                      O O  %m.ph;   -(fig|tab|%ix;) -- Clause titles -->

                    <!-- Numbered Paragraphs -->
        <!-- These are treated as subclauses without titles -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT p1          - O  (p, (%s.zz;)*, (h2*|p2*))       -- Clause -->
<!ELEMENT p2          - O  (p, (%s.zz;)*, (h3*|p3*))    -- Subclause -->
<!ELEMENT p3          - O  (p, (%s.zz;)*, (h4*|p4*)) -- Subsubclause -->
<!ELEMENT p4          - O  (p, (%s.zz;)*, (h5*|p5*))    -- ...clause -->
<!ELEMENT p5          - O  (p, (%s.zz;)*, (h6*|p6*))    -- ...clause -->
<!ELEMENT p6          - O  (p, (%s.zz;)*)               -- ...clause -->

              <!-- Elements in Sections or Paragraphs -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT artwork     - O  EMPTY                                       >
<!ELEMENT tol         - -
           (tol.base,tol.unit?,((pos,neg,tol.unit?)|(posneg,tol.unit?)))
                                                        -- tolerance -->
<!ELEMENT  tol.base   O O  (#PCDATA)                  -- basic value -->
<!ELEMENT  tol.unit   - O  (#PCDATA)               -- units of value -->
<!ELEMENT  pos        - O  (#PCDATA)           -- positive tolerance -->
<!ELEMENT  neg        - O  (#PCDATA)           -- negative tolerance -->
<!ELEMENT  posneg     - O  (#PCDATA)                    -- tolerance -->
<!ELEMENT revmark     - O  EMPTY                    -- revision mark -->
<!ELEMENT dl          - -  (((dt+, (dd|ddg))|(dth,dl))*)               >
<!ELEMENT  dt         - O  %m.ph;                 -- Definition term -->
<!ELEMENT  dth        - O  %m.ph;             -- Definition term head-->
<!ELEMENT  dd         - O  %m.pseq;        -- Definition description -->
<!ELEMENT  ddg        - O  (dd+)     -- Definition description group -->
<!ELEMENT syml        - -  ((sym, desc)*)            -- Symbols list -->
<!ELEMENT  sym        - O  (#PCDATA|(%p.zz.ph;)|artwork)*
                                           -- Symbol or abbreviation -->
<!ELEMENT  desc       - O  %m.pseq;            -- Symbol description -->
<!ELEMENT varl        - -  ((var, desc)*)           -- Variables list-->
<!ELEMENT  var        - O  %m.ph;          -- Symbol or abbreviation -->
<!ELEMENT (%ps.ul.d;) - -  (li*)                  -- Unit item lists -->
<!ELEMENT  li         - O  %m.pseq;                     -- List item -->
<!ELEMENT bl          - -  (bib+)             -- Bibliography (list) -->
<!--
     Design based on ISO 690
-->
<!ELEMENT  bib        - O ((name+,arttitle?,pubtitle,tittrans?,pubedit?,
                            publoc?,
                            publish?,pubyear?,pubvols?,pubref?,pubsize?,
                            pubpag?,pubibs?,pubctit?,pubprice?)|
                           (arttitle?,pubtitle,tittrans?,pubfreq?,publoc?,
                            publish?,
                            pubsince?,pubref?,pubsize?,pubibs?,
                            pubprice?,pubotit?)|refref)
                             -- information for a book and for a
                              periodical or other serial publication -->
<!ELEMENT   name      - O (sname,cname?)        -- name of author(s) -->
<!ELEMENT    sname    O O (#PCDATA)                       -- surname -->
<!ELEMENT    cname    - O (#PCDATA)                      -- forename -->
<!ELEMENT   arttitle  - O %m.ph;                    -- article title -->
<!ELEMENT   pubtitle  - O %m.ph;                            -- title -->
<!ELEMENT   tittrans  - O %m.ph;                 -- translated title -->
<!ELEMENT   pubedit   - O (#PCDATA)                       -- edition -->
<!ELEMENT   pubfreq   - O (#PCDATA)         -- publication frequency -->
<!ELEMENT   publoc    - O (#PCDATA)          -- publication location -->
<!ELEMENT   publish   - O %m.ph;                        -- publisher -->
<!ELEMENT   pubyear   - O (#PCDATA)           -- year of publication -->
<!ELEMENT   pubsince  - O (#PCDATA)     -- first year of publication -->
<!ELEMENT   pubvols   - O (#PCDATA)             -- number of volumes -->
<!ELEMENT   pubref    - O %m.ph;       -- volume or page referred to -->
<!ELEMENT   pubsize   - O (#PCDATA)                 -- physical size -->
<!ELEMENT   pubpag    - O (#PCDATA)               -- number of pages -->
<!ELEMENT   pubibs    - O %m.ph;         -- ills, bibliog, summaries -->
<!ELEMENT   pubprice  - O (#PCDATA)                         -- price -->
<!ELEMENT   pubctit   - O %m.ph;              -- title of collection -->
<!ELEMENT   pubotit   - O %m.ph;            -- old publication title -->

<!ELEMENT lines       O O  %m.pseq;                 -- Line elements -->
<!ELEMENT lq          - -  %m.pseq; -(%i.float;)   -- Long quotation -->
<!ELEMENT xmps        - -  (xmp+)                        -- Examples -->
<!ELEMENT xmp         - -  %m.pseq; -(%i.float;)          -- Example -->
<!ELEMENT cptr        - -  %m.ph;                -- Computer example -->
<!ELEMENT (p|lp)      O O  ((%m.p1;|%m.p2;)*)          -- Paragraphs -->
<!ELEMENT (note|caution|warning)  - -  (p,(%s.zz;)*)        -- Notes -->

              <!-- Special notations -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT syn         - -  ((synt,synd)+) --(SGML) syntax productions-->
<!ELEMENT  synt       - O  (#PCDATA)                         -- term -->
<!ELEMENT  synd       - O  ((sv|sk|sd|sdr|stv|stc|#PCDATA)*)
                                                       -- definition -->
<!ELEMENT   sv        - O  (#PCDATA)                     -- variable -->
<!ELEMENT   sk        - O  (#PCDATA)                      -- literal -->
<!ELEMENT   sd        - O  (#PCDATA)             -- syntax delimiter -->
<!ELEMENT   sdr       - O  (#PCDATA)        -- syntax delimiter role -->
<!ELEMENT   stv       - O  (#PCDATA)    -- syntax terminal, variable -->
<!ELEMENT   stc       - O  (#PCDATA)    -- syntax terminal, constant -->

                           <!-- Phrases -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT (%p.em.ph;) - -  %m.ph;              -- Emphasized phrases -->
<!ELEMENT q           - -  %m.ph;                       -- Quotation -->
<!ELEMENT (%p.rf.ph;) - O  %m.ph;               -- Reference phrases -->
<!ELEMENT (%p.rf.d;)  - O  EMPTY             -- Generated references -->
<!ELEMENT extref      - -  (refref,reftit?,refspec?,%EHyTime;)
                                               -- external reference -->
<!ELEMENT refspec     - O  (#PCDATA)    -- specific part referred to -->
<!ELEMENT (%p.tm.ph;) - -  %m.ph;                    -- Term phrases -->
<!ELEMENT flmat       - -  %m.ph;       -- Foreign language material -->

                    <!-- Includable Subelements -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT fig         - -  (figbody, (figcap, figdesc?)?) -(%i.float;) >
<!ELEMENT  figbody    O O  (figcomm?,(%s.zz;)*)       -- Figure body -->
<!ELEMENT  figcomm    - O  %m.ph;                  -- Figure comment -->
<!ELEMENT  figcap     - O  %m.ph;                  -- Figure caption -->
<!ELEMENT  figdesc    - O  %m.pseq;            -- Figure description -->
<!ELEMENT fn          - -  %m.pseq; -(%i.float;)         -- Footnote -->
<!ELEMENT (i1|i2|i3)  - O  (#PCDATA) -(%ix;)          -- Index entry -->
<!ELEMENT (ih1|ih2|ih3) - O  (#PCDATA) -(%ix;) -- Index header entry -->
                  <!--  " simple forms "          -->
<!ELEMENT form        - -  ((%s.zz;|fillin)*)                -- Form -->
<!--
  e.g. <FILLIN WIDTH=8cm><ITEM>Name:<SUBITEM WIDTH=3cm>(initials)
       <SUBITEM>(surname)</FILLIN>
-->
<!ELEMENT fillin      - -  (item?,unit?,subitem*)
                                              -- Question to fill in -->
<!ELEMENT  item       - O  (%m.ph;)  -(fillin)     -- item in fillin -->
<!ELEMENT  unit       - O  (%m.ph;)  -(fillin)       -- unit of item -->
<!ELEMENT  subitem    - O  (%m.ph;)  -(fillin)  -- subitem in fillin -->

<!--     components (of a description) and their explanation
                      <COMPEXP>
                      <COMP>ISO/IEC </COMP>
                      <EXP>Source of document
                      <COMP>TR </COMP>
                      <EXP>Type of document
                      <COMP>9573</COMP>
                      <EXP>Number of document
                      <COMP>-1
                      <EXP>Number of part
                      <COMP>:1991
                      <EXP>Year of publication
                      </COMPEXP>
-->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT compexp     - -  ((comp,exp)+)  --Explanation of components-->
<!ELEMENT  comp       - O  (#PCDATA)                    -- Component -->
<!ELEMENT  exp        - O  %m.pseq;                   -- Explanation -->

<!--     alternatives and their condition
                      <ALTERNS>
                      <COND ID=wood>For wooden houses.
                      <ALTERN REFID=wood>The roof shall be of tile or
                      cedar shingles.
                      <COND ID=stone>For stone houses.
                      <ALTERN REFID=stone>The roof shall be of tile.
                      </ALTERNS>
                      <ALTERNS>
                      <ALTERN REFID=wood>There shall be at least one
                      door per floor.
                      </ALTERNS>
-->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT alterns     - -  ((cond?,altern?)+)        -- alternatives -->
<!ELEMENT  cond       - O  %m.pseq;     -- condition for alternative -->
<!ELEMENT  altern     - O  %m.pseq;           -- text of alternative -->
<!ATTLIST  cond            id       ID        #IMPLIED
                           label    CDATA     #IMPLIED                 >
<!ATTLIST  altern          refid    IDREF     #IMPLIED                 >

                  <!-- Attribute Definition Lists -->
<!--      ELEMENTS         NAME     VALUE     DEFAULT                -->
<!ATTLIST body             cols     (1|2|offset)  %cols;               >
<!ATTLIST (section|gensec|scopesec|h2|
                                         scope|conf|symabb|syms)
                           id       ID        #IMPLIED
                           stitle   %stdata;  #IMPLIED>
<!ATTLIST (annexn|annexi)  page     (yes|no)  yes
                           cols     (1|2|offset) %cols;
                           colsh    NUMBER    1
                           id       ID        #IMPLIED
                           origin   CDATA     #IMPLIED
                           stitle   %stdata;  #IMPLIED                 >
<!ATTLIST index            id       ID        #IMPLIED
                           langcode NMTOKEN   #IMPLIED
                           stitle   %stdata;  #IMPLIED>
<!ATTLIST h1
                           id       ID        #IMPLIED
                           content  (material|desman|matdsman|require|
sampling|testmeth|inspec|class|classdes|marking|labeling|packing|
marklbpk|terms|other)
                                              #IMPLIED
 -- material       materials
    desman         design and materials
    matdsman       material, design, and manufacturing
    require        requirements
    sampling       sampling
    testmeth       testmethods
    inspec         inspection
    class          classification
    classdes       classification and designation
    marking        marking
    labeling       labeling
    packing        packing
    marklbpk       marking, labeling, and packaging
    terms          terminology
    other          non-specific/classified content
 --
                           stitle   %stdata;  #IMPLIED>
<!ATTLIST (h3|h4|h5|h6)    id       ID        #IMPLIED                 >
<!ATTLIST (p1|p2|p3|p4|p5|p6) id    ID        #IMPLIED                 >
<!ATTLIST (refs|defs)      apply    (all|part) all
                           id       ID        #IMPLIED                 >
<!ATTLIST defref           nrdefs   (singular|plural) plural           >
<!ATTLIST (%ps.ul.d;)      compact  (compact) #IMPLIED                 >
<!ATTLIST (syml|varl)      tsize    NUMBER    %tsize;                  >
<!ATTLIST li               id       ID        #IMPLIED                 >
<!ATTLIST (dt|dth)         type     (none|syn|depr|depsense|depban) none
                           country  CDATA     #IMPLIED
                           lang     CDATA     #IMPLIED
                           qual     CDATA     #IMPLIED
                           id       ID        #IMPLIED                 >
<!ATTLIST dd               source   CDATA     #IMPLIED                 >
<!ATTLIST xmp              id       ID        #IMPLIED                 >
<!ATTLIST cptr             type     (source|listing) source
                           keep     NMTOKEN   all
                           width    (column|page)       column
                           place    (display|inline)    display
                           lines    (flow|lines) lines                 >
<!ATTLIST (%p.rf.ph;)      refid    %idrefs   #CONREF
                           initial  (uc|lc)   lc
                           boolean  (and|or)  and
                           page     (yes|no)  no                       >
<!ATTLIST extref           %AHyTime;
                           refid    IDREF     #IMPLIED                 >
<!ATTLIST flmat            langcode (%f.lang;)  %f.langd;
                           language CDATA     #IMPLIED                 >
<!ATTLIST note             number   (number|nonum) number
                           id       ID        #IMPLIED                 >
<!ATTLIST fnref            refid    %idrefs   #REQUIRED
                           initial  (uc|lc)   lc
                           boolean  (and|or)  and
                           page     (yes|no)  no                       >
<!ATTLIST noteref          refid    %idrefs   #REQUIRED
                           initial  (uc|lc)   lc
                           boolean  (and|or)  and
                           page     (yes|no)  no                       >
<!ATTLIST tnref            refid    %idref    #REQUIRED                >
<!ATTLIST bibref           refid    %idrefs   #REQUIRED
                           initial  (uc|lc)   lc
                           boolean  (and|or)  and
                           pres     (sup|phrase) sup
                           page     (yes|no)  no                       >
<!ATTLIST liref            refid    %idrefs   #REQUIRED
                           initial  (uc|lc)   lc
                           boolean  (and|or)  and
                           page     (yes|no)  no                       >
<!ATTLIST xmpref           refid    %idrefs   #REQUIRED
                           initial  (uc|lc)   lc
                           boolean  (and|or)  and
                           page     (yes|no)  no                       >
<!ATTLIST fig              id       ID        #IMPLIED
                           frame    (box|rule|none)     none
                           place    (top|fixed|bottom)  top
                           width    (column|page)       page
                           align    (left|center|right) center
                           lines    (flow|lines)        lines
                           type     (fig|plate|flowchrt|diagram|graph)
                                              fig
                           number   CDATA     #IMPLIED                 >
<!ATTLIST i1               id       ID        #IMPLIED
                           langcode NMTOKEN   #IMPLIED
                           indexid  %idref    #IMPLIED
                           page     CDATA     #IMPLIED                 >
<!ATTLIST (i2|i3)          id       ID        #IMPLIED
                           refid    %idref    #IMPLIED
                           langcode NMTOKEN   #IMPLIED
                           indexid  %idref    #IMPLIED
                           page     CDATA     #IMPLIED                 >
<!ATTLIST (ih1|ih2)        id       ID        #IMPLIED
                           seeid    %idref    #IMPLIED
                           see      CDATA     #IMPLIED
                           langcode NMTOKEN   #IMPLIED
                           indexid  %idref    #IMPLIED
                           print    CDATA     #IMPLIED                 >
<!ATTLIST ih3              id       ID        #IMPLIED
                           langcode NMTOKEN   #IMPLIED
                           indexid  %idref    #IMPLIED
                           print    CDATA     #IMPLIED                 >
<!ATTLIST iref             refid    %idref    #REQUIRED
                           see      CDATA     #IMPLIED
                           seeid    %idref    #IMPLIED
                           langcode NMTOKEN   #IMPLIED
                           indexid  %idref    #IMPLIED
                           page     CDATA     #IMPLIED                 >
<!ATTLIST fn               id       ID        #IMPLIED
                           symbol   CDATA     #IMPLIED                 >
<!ATTLIST bib              id       ID        #IMPLIED                 >
<!ATTLIST artwork          name     ENTITY    #REQUIRED
                           place    (inline|line) line                 >
<!ATTLIST   revmark        onoff    (on|off)   #REQUIRED
                           version  NMTOKEN    #IMPLIED
                           status   (new|del)  new                     >
<!ATTLIST   name           type     (organiz|person)     person        >
<!ATTLIST  fillin          width    CDATA     #IMPLIED                 >
<!ATTLIST  item            punct    CDATA     ":"                      >
<!ATTLIST  subitem         width    CDATA     #IMPLIED
                           ofence   CDATA     "LSQB"
                           cfence   CDATA     "RSQB"                   >

                <!-- Entities for Short References -->
<!ENTITY   qtag    STARTTAG "q"           -- Quoted phrase start-tag -->
<!ENTITY   qetag   ENDTAG   "q"             -- Quoted phrase end-tag -->
<!ENTITY   endtag  ENDTAG   ""      -- Empty end-tag for any element -->
<!ENTITY   tolunit STARTTAG "tol.unit"        -- units in tolerances -->
<!ENTITY   f.percnt CDATA " percent "                                  >

<!SHORTREF docmap                              -- Map for general use --
                  '"'          qtag                      -- " is <q> -->
<!USEMAP   docmap %doctype;                                            >
<!SHORTREF qmap                             -- Map for quoted phrases --
                  '"'          qetag                    -- " is </q> -->
<!USEMAP   qmap q                                                      >
<!USEMAP  #EMPTY cptr                                                  >
<!SHORTREF ixmap                             -- Map for index entries --
                  "&#RE;"      endtag           -- Record end is </> -->
<!USEMAP   ixmap (i1|i2|i3|ih1|ih2|ih3)                                >

<!SHORTREF tolumap                     -- Map for units in tolerances --
                  ' '          tolunit        -- space is <tol.unit> -->
<!USEMAP   tolumap (tol.base|neg|posneg)                               >
<!SHORTREF tnmap                               -- Map for ; in TN     --
                  ';'          semi                     -- to entity -->
<!USEMAP   tnmap  tn                                                   >
<!SHORTREF compmap                     -- Map for spaces in components--
                  ' '          nbsp           -- space is "nbsp"     -->
<!USEMAP   compmap (comp)                                              >
<!SHORTREF tolunit             -- Map for percent signs                --
                  "%"     f.percnt    -- percent sign         --
>
<!USEMAP   tolunit (tol.unit)                                          >

<!-- ***************************************************************
     *                                                             *
     *                    TERMINOLOGY                              *
     *                                                             *
     *************************************************************** -->

<!-- (C) International Organization for Standardization 1988, 1989,
     1990, 1991.
     Permission to copy in any form is granted for use with
     conforming SGML systems and applications as defined in
     ISO 8879, provided this notice is included in all copies.

     Creator:  Anders Berglund.

     Design based on ISO/DIS 10241, ISO/CD 1951

-->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT tl          - -  (tentry+)             -- Terminology list -->
<!ELEMENT tentry      - O  (tentnr?,(tlentry+|
                            (termprf+,termnprf*,termorep*,termdef,
                            (note|nl)?,xmp?)))
                                                -- terminology entry -->
<!ELEMENT tentnr      - O  (#PCDATA)                 -- entry number -->
<!ELEMENT tlentry     - O  (termprf+,termnprf*,termorep*,termdef?,
                            (note|nl)?,xmp?)
                                    -- entry content in one language -->
<!ELEMENT (termprf|termnprf) - O  (tterm,tpronce?,tsymbol?)
                              -- preferred and non-preferred term(s) -->
<!ELEMENT tterm       O O  %m.ph;                -- text of the term -->
<!ELEMENT tpronce     - O  %m.ph;          -- pronounciation of term -->
<!ELEMENT tsymbol     - O  %m.ph;                 -- symbol for term -->
<!ELEMENT termorep    - O  %m.ph;   -- other representation for term -->
<!ELEMENT termdef     - O  %m.pseq;            -- definition of term -->

<!--      ELEMENTS         NAME     VALUE     DEFAULT                -->
<!ATTLIST tlentry          langcode CDATA     #REQUIRED                >
<!ATTLIST (termprf|termnprf)
                           country  CDATA     #IMPLIED
                           meaning  NUMBER    #IMPLIED
                           type     (term|nolingex) term
                           abbrev   CDATA     #IMPLIED
                           abbrp    (yes|no)  no
                           inflex   CDATA     #IMPLIED
                           wordclas (noun|adj|verb) #IMPLIED
                           gender   (m|f|n|c) #IMPLIED
                           number   (pl|sing) #IMPLIED
                           verbfeat (trans|intrans) #IMPLIED
                           see      %idref    #IMPLIED
                           cf       %idref    #IMPLIED
                           id       ID        #IMPLIED
                           nprf     (none|adm|depr|obsol|supers) none  >
<!ATTLIST termdef          field    CDATA     #IMPLIED
                           source   CDATA     #IMPLIED                 >

<!-- ***************************************************************
     *                                                             *
     *                    TABLES                                   *
     *                                                             *
     *************************************************************** -->

<!-- (C) International Organization for Standardization 1988, 1989,
     1990, 1991.
     Permission to copy in any form is granted for use with
     conforming SGML systems and applications as defined in
     ISO 8879, provided this notice is included in all copies.

     Creator:  Anders Berglund.

-->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT tab         - -  (tabcap?, tabdesc?, tabcomm?, tabmat,
                            (%s.zz;)*)                -(%i.float;)     >
<!ELEMENT  tabcap     - O  %m.ph;                   -- Table caption -->
<!ELEMENT  tabdesc    - O  %m.pseq;             -- Table description -->
<!ELEMENT  tabcomm    - O  %m.ph;                   -- Table comment -->
<!ELEMENT  tabmat     - -  (tabhead?, tabfoot?, tabbody)
                           -(%i.float;|tabmat)       -- Table matter -->
<!ELEMENT   (tabhead|tabfoot)  - O   (arow)         -- header/footer -->
<!ELEMENT   tabbody   - O   (arow+)       --Body of tabular material -->
<!ELEMENT    arow     - O  (c+)                      -- Arranged row -->
<!ELEMENT     c       - O  (sc+)                -- Table matter cell -->
<!ELEMENT      sc     O O  (#PCDATA|hrule|%s.zz;|%p.zz.ph;)* +(tn)
                                             --Table matter sub-cell -->
<!ELEMENT      tn     - -  %m.pseq;                     -- Tablenote -->
<!ELEMENT      hrule  - O  EMPTY                  -- horizontal rule -->
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST tab              id       ID        #IMPLIED
                           width    CDATA     page
                           place    (top|fixed|bottom)  top
                           align    (left|center|right) center
                           type     (tab|chart|table|form|listing)
                                              tab
                           number   CDATA     #IMPLIED                 >
<!ATTLIST tabmat           rotate   (0|90|180|270) 0
                           width    CDATA     #IMPLIED
                           compact  (compact) #IMPLIED
                           pointsz  (6|7|8|9|10|11|12|14|16|18|20) %tab.pz;
                           trules   CDATA     "T B L R"
                           domains  NMTOKENS  none
                   -- attributes specifying defaults for lower levels --
                           gridx    CDATA     "*"
                           gridy    CDATA     "*"
                           arrange  CDATA     "none"
                           rrules   CDATA     "T B L R"
                           crules   CDATA     "T B L R"
                           cvalign  (T|C|B)   "T"
                           caligns  CDATA     "L"
                           calignps CDATA     "-"
                                                    >
<!ATTLIST tabhead          headhi   (0|1|2|3)      %tab.hhi;
                                                    >
<!ATTLIST tabbody     --   brules   CDATA     "T B L R"  --
                   -- attributes specifying defaults for lower levels --
                           gridx    CDATA     #IMPLIED
                           gridy    CDATA     #IMPLIED
                           arrange  CDATA     #IMPLIED
                           rrules   CDATA     #IMPLIED
                           crules   CDATA     #IMPLIED
                           cvalign  (T|C|B)   #IMPLIED
                           caligns  CDATA     #IMPLIED
                           calignps CDATA     #IMPLIED
                                                    >
<!ATTLIST arow             pointsz  (6|7|8|9|10|11|12|14|16|18|20) #IMPLIED
                           split    (yes|no)  no
                           gridx    CDATA     #IMPLIED
                           gridy    CDATA     #IMPLIED
                           arrange  CDATA     #IMPLIED
                           rrules   CDATA     #IMPLIED
                   -- attributes specifying defaults for lower levels --
                           crules   CDATA     #IMPLIED
                           cvalign  (T|C|B)   #IMPLIED
                           caligns  CDATA     #IMPLIED
                           calignps CDATA     #IMPLIED
                                                    >
<!ATTLIST c                nr       NUTOKEN   #IMPLIED
                           pointsz  (6|7|8|9|10|11|12|14|16|18|20) #IMPLIED
                           type     (head|body) body
                           rotate   (0|90|180|270) 0
                           crules   CDATA     #IMPLIED
                           cvalign  (T|C|B)   #IMPLIED
                           calign   CDATA     #IMPLIED
                           calignp  CDATA     #IMPLIED
                           domain   NMTOKEN   "none"
                                                    >
<!ATTLIST tn               id       ID        #IMPLIED>
<!--      End of Tables                                              -->

<!-- ***************************************************************
     *                                                             *
     *                    MATHEMATICS                              *
     *                                                             *
     *************************************************************** -->

<!-- (C) International Organization for Standardization 1988, 1989,
     1990, 1991.
     Permission to copy in any form is granted for use with
     conforming SGML systems and applications as defined in
     ISO 8879, provided this notice is included in all copies.

     Creator:  Anders Berglund.

-->
<!-- element type definition for mathematical formula notation
          aimed at the author and thus minimization of keystrokes
          has not been of prime importance                            -->
<!--
                                                                      -->
<!ENTITY % f.oper  "mark|markref|break|sup|sub|
                    sum|integral|product|plex|
                    frac|diff|sqrt|root|square|power|
                    pile|matrix|fence|middle|tensor|mfn|
                    box|cf"
                          -- all the operators + chemical formula     -->
<!ENTITY % f.text  "#PCDATA|roman|italic|ov|vec" -- "text"            -->
<!ENTITY % f.align "center|left|right"  -- alignment of elements      -->
<!ENTITY % f.pos   "post|pre|mid"       -- position of elements       -->
<!ENTITY % f.style "single|double|triple|dash|dots|bold"
                                        -- style of elements          -->
<!ENTITY % f.type  "paren|bracket|angbrack|brace|bar|none"
                                                     -- fencetype     -->
<!ENTITY % f.ov    "dot|dotdot|dot3|dot4|tie|tiebrace|hat|haczeck|
  acute|grave|cedil|ring|macron|ogonek|dblac|
  breve|tilde|vec|rvec|dyad|bar"                       -- over chars  -->
<!ENTITY % f.diff  "normal|partial"     -- types of differentiation   -->
<!ENTITY % f.func1 "and|antilog|arc|arccos|arcsin|arctan|arg|
                    colog|cos|cosh|cot|coth|csc|ctn|deg|det|
                    dim|exp|for|gcd|glb|hom|if|Im|ker|lg|lim|
                    ln|log|lub|max|min"
                          -- 32 first functions                       -->
<!ENTITY % f.func2 "mod|Re|sec|sin|sinh|tan|tanh"
                          -- remaining functions                      -->
<!ENTITY   f.lpar  "<FENCE TYPE=paren><!USEMAP infencep>"               >
<!ENTITY   f.lsqu  "<FENCE TYPE=bracket><!USEMAP infences>"             >
<!ENTITY   f.lbra  "<FENCE TYPE=brace><!USEMAP infenceb>"               >
<!ENTITY   f.lbar  "<FENCE TYPE=bar><!USEMAP infencer>"                 >
<!ENTITY   f.rpar  "</FENCE>"                                           >
<!ENTITY   f.rsqu  "</FENCE>"                                           >
<!ENTITY   f.rbra  "</FENCE>"                                           >
<!ENTITY   f.rbar  "</FENCE>"                                           >
<!SHORTREF fence               -- Map for open brackets                --
                  "("     f.lpar      -- left parenthesis     --
                  "["     f.lsqu      -- left square bracket  --
                  "{"     f.lbra      -- left brace           --
                  "|"     f.lbar      -- left bar             --
                  %math.mp;
>
<!SHORTREF infencep            -- Map for open and close brackets      --
                  "("     f.lpar      -- left parenthesis     --
                  "["     f.lsqu      -- left square bracket  --
                  "{"     f.lbra      -- left brace           --
                  "|"     f.lbar      -- left bar             --
                  ")"     f.rpar      -- right parenthesis    --
                  %math.mp;
>
<!SHORTREF infences            -- Map for open and close brackets      --
                  "("     f.lpar      -- left parenthesis     --
                  "["     f.lsqu      -- left square bracket  --
                  "{"     f.lbra      -- left brace           --
                  "|"     f.lbar      -- left bar             --
                  "]"     f.rsqu      -- right square bracket --
                  %math.mp;
>
<!SHORTREF infenceb            -- Map for open and close brackets      --
                  "("     f.lpar      -- left parenthesis     --
                  "["     f.lsqu      -- left square bracket  --
                  "{"     f.lbra      -- left brace           --
                  "|"     f.lbar      -- left bar             --
                  "}"     f.rbra      -- right brace          --
                  %math.mp;
>
<!SHORTREF infencer            -- Map for open and close brackets      --
                  "("     f.lpar      -- left parenthesis     --
                  "["     f.lsqu      -- left square bracket  --
                  "{"     f.lbra      -- left brace           --
                  "|"     f.rbar      -- right bar            --
                  %math.mp;
>
<!--
       inline formula
             Example:  <f><frac>a<over>b</frac></f>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT f           - -  (%f.text;|%f.oper;)+                        >
<!USEMAP  fence       f                                                >
<!--
       display formula
             Example:  <df><frac>a<over>b</frac></df>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT df          - -  (%f.text;|%f.oper;)+                        >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST df          id       ID          #IMPLIED
                      %df.type;
                      align    (%f.align)  left
                      hmove    CDATA       0
                      num      CDATA       #IMPLIED                    >
<!USEMAP  fence       df                                               >
<!--
       display formula group
             Example:  <dfg>
                       <df><frac>a<over>b</frac></df>
                       <df><frac>c<over>d</frac></df>
                       </dfg>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT dfg         - -  (df)+                                       >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST dfg         id       ID          #IMPLIED
                      align    (%f.align)  left
                      num      CDATA       #IMPLIED                    >
<!--
       formula reference
             Example:  <dfref refid=x>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!--
<!ELEMENT dfref       - O  EMPTY                                       >
-->
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST dfref       page     (yes|no)    no
                      %df.ref;
                      refid    %idrefs     #REQUIRED                   >
<!--
       mark and markref - for horizontal alignment
       break - for division points in formula
             Example:  <mark id=x>
                       <markref refid=x>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT mark        - O  EMPTY                                       >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST mark        id       ID          #REQUIRED                   >
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT markref     - O  EMPTY                                       >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST markref     refid    %idref      #REQUIRED                   >
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT break       - O  EMPTY                                       >
<!--      ELEMENTS    NAME     VALUE                DEFAULT          -->
<!ATTLIST break       type     (required|optional)  required           >
<!--
       boxes
             Example:  <BOX>....</BOX>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT box         - -   (%f.text;|%f.oper;)+                       >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST box         style    (%f.style;) single                      >
<!--
       "over" embellishments
             Example:  <OV>....</OV>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT ov          - -   (%f.text;|%f.oper;)+                       >
<!--      ELEMENTS    NAME     VALUE              DEFAULT            -->
<!ATTLIST ov          type     (%f.ov;)           bar
                      pos      (above|below|mid)  above
                      style    (%f.style;)        single               >
<!--
       super and subscripts
             Example:  x<sup/2/
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT (sup|sub)   - -   (%f.text;|%f.oper;)+                       >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST (sup|sub)   pos      (%f.pos;)   post                        >
<!--
       tensors
             Example:  <tensor suffix="i j k"/A/
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT tensor      - -   (#PCDATA)                                  >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST tensor      posf     (sup|sub)   sup
                      suffix   CDATA       #REQUIRED                   >
<!--
       roman and italic fonts
             Example:  <roman/text/
                                                                     -->
<!--      ELEMENTS        MIN  CONTENT (EXCEPTIONS)                  -->
<!ELEMENT (roman|italic)  - -  (#PCDATA)                               >
<!--
       vectors
             Example:  <vec/v/
                                                                     -->
<!--      ELEMENTS        MIN  CONTENT (EXCEPTIONS)                  -->
<!ELEMENT vec             - -  (#PCDATA)                               >
<!--
       sum, integral, product, and general plex ("limits")
             Example:  <sum><from>i=1<to>10<of>a<sub/i/</sum>
                       <plex>&cup;<from>i=1<to>10<of>a<sub/i/</plex>
                                                                     -->
<!--      ELEMENTS      MIN  CONTENT (EXCEPTIONS)                    -->
<!ELEMENT sum           - -  ((from|to)*,of?)                          >
<!ELEMENT integral      - -  ((from|to)*,of?)                          >
<!ELEMENT product       - -  ((from|to)*,of?)                          >
<!ELEMENT plex          - -  (operator,(from|to)*,of?)                 >
<!ELEMENT (from|to|of)  - O  (%f.text;|%f.oper;)+                      >
<!ELEMENT operator      O O  (%f.text;)                                >
<!--
       fractions
             Example:  <frac>a<over>b+c</frac>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT frac        - -   (numer,over)                               >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST frac        align    (%f.align;) center                      >
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT numer       O O  (%f.text;|%f.oper;)+                        >
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT over        - O  (%f.text;|%f.oper;)+                        >
<!--
       differentials
             Example:  <diff>x<by>y</diff>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT diff        - -   (diffof,by)                                >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST diff        type     (%f.diff;)  normal                      >
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT diffof      O O  (%f.text;|%f.oper;)+                        >
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT by          - O  (%f.text;|%f.oper;)+                        >
<!--
       piles
             Example:  <pile>a<above>b<above>c</pile>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT pile        - -   (above1,(above)+)                          >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST pile        align    (%f.align;) center                      >
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT above1      O O  (%f.text;|%f.oper;)+                        >
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT above       - O  (%f.text;|%f.oper;)+                        >
<!--
       matrices
             Example:  <matrix>
                       <col>1<above>2</col>
                       <col>0<above>3</col>
                       </matrix>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT matrix      - -  ((col)+)                                    >
<!ELEMENT col         - -  (above1,(above)+)                           >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST col         align    (%f.align;) center                      >
<!--
       square root and n-root
             Example:  <sqrt>a+x</sqrt>
                       <root><degree>4<of>a+x</root>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT sqrt        - -  (%f.text;|%f.oper;)+                        >
<!ELEMENT root        - -  (degree,of)                                 >
<!ELEMENT degree      O O  (%f.text;|%f.oper;)+                        >
<!--
       square and power
             Example:  <square>a+x</square>
                       <power><degree>4<of>a+x</power>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT square      - -  (%f.text;|%f.oper;)+                        >
<!ELEMENT power       - -  (degree,of)                                 >
<!--
       mathematical functions
             Example:  <mfn ln>1+x</mfn>
                       <mfn cos/&pi;/
                       <mfn><fname>myfunc<of>x+y</mfn>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT mfn         - -  ((fname,of)|(%f.text;|%f.oper;)+)           >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST mfn         type1    (%f.func1;) #IMPLIED
                      type2    (%f.func2;) #IMPLIED                    >
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT fname       - O  (#PCDATA)                                   >
<!--
       fences and posts, open and close brackets
             Example: <fence>a+b</fence>
                      <fence open="(" close="]">a+b</fence>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT fence       - -  (%f.text;|%f.oper;)+                        >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST fence       type     (%f.type;)  paren
                      open     CDATA       #IMPLIED
                      close    CDATA       #IMPLIED
                      style    (%f.style;) single                      >
<!USEMAP  fence       fence                                            >
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT middle      - -  (%f.text;)                                  >
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST middle      style    (%f.style;) single                      >
<!USEMAP  #EMPTY      middle                                           >
<!--      End of Mathematics                                         -->

<!-- ***************************************************************
     *                                                             *
     *                    CHEMISTRY                                *
     *                                                             *
     *************************************************************** -->

<!-- (C) International Organization for Standardization 1988, 1989,
     1990, 1991.
     Permission to copy in any form is granted for use with
     conforming SGML systems and applications as defined in
     ISO 8879, provided this notice is included in all copies.

     Creator:  Anders Berglund.

-->
<!--      Reagents list                                              -->
<!ELEMENT rl          - -  ((rt,rq?,rd?,rl?)*)                         >
<!ELEMENT  rt         - O  %m.ph;                         -- reagent -->
<!ELEMENT  rq         - O  %m.ph;               -- reagent qualifier -->
<!ELEMENT  rd         - O  ((%s.zz;)*|(compons|prepare|rdh)*)
                                              -- reagent description -->
<!ELEMENT  compons    - O  %m.pseq;                    -- components -->
<!ELEMENT  prepare    - O  %m.pseq;                   -- preparation -->
<!ELEMENT  rdh        - O  (rdht,%m.pseq;) --reagentdescriptionheader-->
<!ELEMENT   rdht      O O  %m.ph;  --reagent description header title-->
<!ATTLIST (compons|prepare|rdh)
                           id       ID        #IMPLIED                 >
<!--      Apparatus list                                             -->
<!ELEMENT al          - -  ((at,aq?,ad?,al?)*)                         >
<!ELEMENT  at         - O  %m.ph;                        -- aparatus -->
<!ELEMENT  aq         - O  %m.ph;              -- aparatus qualifier -->
<!ELEMENT  ad         - O  ((%s.zz;)*|(adh)*)
                                             -- aparatus description -->
<!ELEMENT  adh        - O  (adht,%m.pseq;) --aparatusdescriptionheader-->
<!ELEMENT   adht      O O  %m.ph;  --aparatusdescription header title-->
<!ATTLIST adh              id       ID        #IMPLIED                 >
<!ATTLIST (rt|at)          id       ID        #IMPLIED
                           punct    (punct|nopunct)   punct
                           char     CDATA     #IMPLIED                 >
<!-- element type definition for chemical formula notation
          aimed at the author and thus minimization of keystrokes
          has not been of prime importance                           -->
<!--                 entities for elements                           -->
<!ENTITY % cf.agrp  "h2o|hcl" -- crystal water, hcl,                 -->
<!--                 entities for reactions                          -->
<!ENTITY equilib    "<ch.oper>&ch.equil;</ch.oper>"  -- equilibrium  -->
<!ENTITY yields     "<ch.oper>&ch.rarr;</ch.oper>" --yields          -->
<!ENTITY yieldsrv   "<ch.oper>&ch.larr;</ch.oper>" --yields- reversed-->
<!--                 entities for bindings                           -->
<!ENTITY bond1      "&minus;"                        -- - binding    -->
<!ENTITY bond2      "="                              -- = binding    -->
<!ENTITY bond3      "&equiv;"                        -- (3-) binding -->
<!--
       chemical formula
             Example:  <cf><mol><a>H<n>2<a>O</mol></cf>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT (cf|cdf)    - -  (ch.term,(ch.oper,ch.term)?) --ch. formula-->
<!ELEMENT ch.term     O O  (#PCDATA|mol|a|%cf.agrp;|conc)+
                                                     --chem. term    -->
<!ELEMENT ch.oper     - -  (#PCDATA)                --chem. operator -->
<!--
       atom
             Example:  <a>H
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT a           - O  (an,n?)                 -- atom           -->
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST a
                      ion      CDATA       #IMPLIED   -- ionization  --
                      excite   CDATA       #IMPLIED   -- excitation  --
                      nucl     NUTOKEN     #IMPLIED   -- # nucleons  --
                      atomnr   NUTOKEN     #IMPLIED  -- atomic number-->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT an          O O  (#PCDATA)               -- atom name      -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT n           - O  (#PCDATA)               -- # of atoms     -->
<!--
       (parenthesised) molecule
             Example:  <mol n=2> <a>S <a>O<n>4</mol>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT mol         - -  ((a|smol)+,(%cf.agrp;)?,state?)
                                          -- parenthesized molecule  -->
<!ELEMENT smol        - -  ((a|smol)+,(%cf.agrp;)?)
                                                    -- sub-molecule  -->
<!ELEMENT state       - O  (#PCDATA)             -- state (e.g. gas) -->
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST mol         n        NMTOKEN     #IMPLIED   -- # repeated  --
                      quan     CDATA       #IMPLIED     -- quantity  --
                      ion      CDATA       #IMPLIED   -- ionization  --
                      style    (noionp|ionp) noionp   -- ionization
                               presented without or with parenthesis -->
<!ATTLIST smol        n        NMTOKEN     #IMPLIED   -- # repeated  --
                      ion      CDATA       #IMPLIED   -- ionization  -->
<!--
       concentration
             Example:  <conc>x<mol> <a>S <a>O<n>4</mol></conc>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT conc        - -  (ch.conc,mol)            -- concentration -->
<!ELEMENT ch.conc     O O  (#PCDATA)     -- concentration designator -->
<!--
       crystal water, hydrochloric accid
             Example:  <h2o n=2>
                                                                     -->
<!--      ELEMENTS    MIN  CONTENT (EXCEPTIONS)                      -->
<!ELEMENT (%cf.agrp)  - O  EMPTY                   -- crystal water  -->
<!--      ELEMENTS    NAME     VALUE       DEFAULT                   -->
<!ATTLIST (%cf.agrp)  n        NUTOKEN     #IMPLIED   -- # repeated  -->
<!--      End of Chemistry                                           -->

                <!-- define a few special entities -->
<!--
  public entities as per ISO/IEC 9573
-->
<!ENTITY % ISOLAT1  PUBLIC
   "ISO 8879-1986//ENTITIES Added Latin 1//EN" "e:\fmsgml5\sgml\isoents\isolat1.ent">
<!ENTITY % ISOLAT2  PUBLIC
   "ISO 8879-1986//ENTITIES Added Latin 2//EN" "e:\fmsgml5\sgml\isoents\isolat2.ent">
<!ENTITY % ISONUM   PUBLIC
   "ISO 8879-1986//ENTITIES Numeric and Special Graphic//EN" "e:\fmsgml5\sgml\isoents\isonum.ent">
<!ENTITY % ISODIA   PUBLIC
   "ISO 8879-1986//ENTITIES Diacritical Marks//EN" "e:\fmsgml5\sgml\isoents\isodia.ent">
<!ENTITY % ISOPUB   PUBLIC
   "ISO 8879-1986//ENTITIES Publishing//EN" "e:\fmsgml5\sgml\isoents\isopub.ent">
<!ENTITY % ISOTECH  PUBLIC
   "ISO 9573-13:1991//ENTITIES General Technical//EN" "e:\fmsgml5\sgml\isoents\isotech.ent">
<!ENTITY % ISOGRK3  PUBLIC
   "ISO 9573-13:1991//ENTITIES Greek Symbols//EN" "e:\fmsgml5\sgml\isoents\isogrk3.ent">
<!ENTITY % ISOAMSO  PUBLIC
   "ISO 9573-13:1991//ENTITIES Added Math Symbols: Ordinary//EN" "e:\fmsgml5\sgml\isoents\isoamso.ent">
<!ENTITY % ISOAMSB  PUBLIC
   "ISO 9573-13:1991//ENTITIES Added Math Symbols: Binary Operators//EN" "e:\fmsgml5\sgml\isoents\isoamsb.ent">
<!ENTITY % ISOAMSR  PUBLIC
   "ISO 9573-13:1991//ENTITIES Added Math Symbols: Relations//EN" "e:\fmsgml5\sgml\isoents\isoamsr.ent">
<!ENTITY % ISOAMSN  PUBLIC
   "ISO 9573-13:1991//ENTITIES Added Math Symbols: Negated Relations//EN" "e:\fmsgml5\sgml\isoents\isoamsn.ent">
<!ENTITY % ISOAMSA  PUBLIC
   "ISO 9573-13:1991//ENTITIES Added Math Symbols: Arrow Relations//EN" "e:\fmsgml5\sgml\isoents\isoamsa.ent">
<!ENTITY % ISOAMSC  PUBLIC
   "ISO 9573-13:1991//ENTITIES Added Math Symbols: Delimiters//EN" "e:\fmsgml5\sgml\isoents\isoamsc.ent">
<!ENTITY % ISOMOPF  PUBLIC
   "ISO 9573-13:1991//ENTITIES Math Alphabets: Open Face//EN" "e:\fmsgml5\sgml\isoents\isomopf.ent">
<!ENTITY % ISOMSCR  PUBLIC
   "ISO 9573-13:1991//ENTITIES Math Alphabets: Script//EN" "e:\fmsgml5\sgml\isoents\isomscr.ent">
<!ENTITY % ISOCH    PUBLIC
   "ISO 9573-11:1992//ENTITIES Chemistry//EN" "e:\fmsgml5\sgml\isoents\isoch.ent">
%ISOLAT1;
%ISOLAT2;
%ISONUM;
%ISODIA;
%ISOPUB;
%ISOTECH;
%ISOGRK3;
%ISOAMSO;
%ISOAMSB;
%ISOAMSR;
%ISOAMSN;
%ISOAMSA;
%ISOAMSC;
%ISOMOPF;
%ISOMSCR;
%ISOCH;

