<!-- teitsd2.dtd:  written by OddDTD 1999-05-18               -->

<!-- 27: File teitsd2.dtd: Auxiliary DTD for Tag Set          -->
<!-- Documentation                                            -->
<!-- Text Encoding Initiative: Guidelines for Electronic      -->
<!-- Text Encoding and Interchange. Document TEI P3, 1994.    -->
<!-- Copyright (c) 1994 ACH, ACL, ALLC. Permission to copy    -->
<!-- in any form is granted, provided this notice is          -->
<!-- included in all copies.                                  -->
<!-- These materials may not be altered; modifications to     -->
<!-- these DTDs should be performed as specified in the       -->
<!-- Guidelines in chapter "Modifying the TEI DTD."           -->
<!-- These materials subject to revision. Current versions    -->
<!-- are available from the Text Encoding Initiative.         -->
<!-- Embed entities for TEI generic identifiers.              -->
<!ENTITY % TEI.elementNames system 'teigis2.ent'                >
%TEI.elementNames;
<!-- Define entities for TEI keywords.                        -->
<!ENTITY % TEI.keywords.ent system 'teikey2.ent'                >
%TEI.keywords.ent;
<!-- Define element classes for content models, shared        -->
<!-- attributes for element classes, and global attributes.   -->
<!-- (This all happens within the file TEIclas2.ent.)         -->
<!ENTITY % TEI.elementClasses system 'teiclas2.ent'             >
%TEI.elementClasses;
<!-- Embed the core tag set                                   -->
<!ENTITY % TEI.core.dtd system 'teicore2.dtd'                   >
%TEI.core.dtd;
<!-- Define the top-level element for this DTD                -->
<!ENTITY % tsd 'INCLUDE' >
<![ %tsd; [
<!ELEMENT %n.tsd;       - O  ((%n.tagDoc; | %n.entDoc; | 
                             %n.classDoc;)+)                    >
<!ATTLIST %n.tsd;            %a.global;
          TEIform            CDATA               'tsd'          >
]]>

<!-- Define some additions for the phrase level tags          -->
<!ENTITY % gi 'INCLUDE' >
<![ %gi; [
<!ELEMENT %n.gi;        - O  (#PCDATA)                          >
<!ATTLIST %n.gi;             %a.global;
          TEI                (yes | no)          yes
          TEIform            CDATA               'gi'           >
]]>

<!ENTITY % tag 'INCLUDE' >
<![ %tag; [
<!ELEMENT %n.tag;       - -  (#PCDATA)                          >
<!ATTLIST %n.tag;            %a.global;
          TEI                (yes | no)          yes
          TEIform            CDATA               'tag'          >
]]>

<!ENTITY % att 'INCLUDE' >
<![ %att; [
<!ELEMENT %n.att;       - -  (#PCDATA)                          >
<!ATTLIST %n.att;            %a.global;
          TEI                (yes | no)          yes
          TEIform            CDATA               'att'          >
]]>

<!ENTITY % val 'INCLUDE' >
<![ %val; [
<!ELEMENT %n.val;       - O  (#PCDATA)                          >
<!ATTLIST %n.val;            %a.global;
          TEIform            CDATA               'val'          >
]]>

<!-- Finally we define the elements specific to this DTD      -->
<!-- 27.1:  The TagDoc element                                -->
<!ENTITY % tagDoc 'INCLUDE' >
<![ %tagDoc; [
<!ELEMENT %n.tagDoc;    - -  (%n.gi;, (%n.rs)?, %n.desc;, 
                             (%n.attList)?, (%n.exemplum)*, 
                             (%n.remarks)?, (%n.part)?, 
                             (%n.classes)?, (%n.files)?, 
                             (%n.dataDesc)?, (%n.parents)?, 
                             (%n.children)?, %n.elemDecl;, 
                             (%n.attlDecl)?, (%n.ptr)*, 
                             (%n.equiv)*)                       >
<!ATTLIST %n.tagDoc;         %a.global;
          usage              (req | mwa | rec | rwa | opt) 
                                                 opt
          TEIform            CDATA               'tagDoc'       >
]]>

<!-- RS and PTR are defined in the core                       -->
<!-- GI is defined above                                      -->
<!ENTITY % desc 'INCLUDE' >
<![ %desc; [
<!ELEMENT %n.desc;      - O  (%paraContent)                     >
<!ATTLIST %n.desc;           %a.global;
          TEIform            CDATA               'desc'         >
]]>

<!ENTITY % attList 'INCLUDE' >
<![ %attList; [
<!ELEMENT %n.attList;   - O  ((%n.attDef)*)                     >
<!ATTLIST %n.attList;        %a.global;
          TEIform            CDATA               'attList'      >
]]>

<!ENTITY % exemplum 'INCLUDE' >
<![ %exemplum; [
<!ELEMENT %n.exemplum;  - -  ((%n.p)*, %n.eg;, (%n.p)*)         >
<!ATTLIST %n.exemplum;       %a.global;
          TEIform            CDATA               'exemplum'     >
]]>

<!ENTITY % eg 'INCLUDE' >
<![ %eg; [
<!ELEMENT %n.eg;        - -  (#PCDATA)                          >
<!ATTLIST %n.eg;             %a.global;
          TEIform            CDATA               'eg'           >
]]>

<!ENTITY % remarks 'INCLUDE' >
<![ %remarks; [
<!ELEMENT %n.remarks;   - O  (%component.seq)                   >
<!ATTLIST %n.remarks;        %a.global;
          TEIform            CDATA               'remarks'      >
]]>

<!ENTITY % part 'INCLUDE' >
<![ %part; [
<!ELEMENT %n.part;      - O  (#PCDATA)                          >
<!ATTLIST %n.part;           %a.global;
          name               CDATA               #IMPLIED
          type               CDATA               #IMPLIED
          TEIform            CDATA               'part'         >
]]>

<!ENTITY % classes 'INCLUDE' >
<![ %classes; [
<!ELEMENT %n.classes;   - O  (#PCDATA)                          >
<!ATTLIST %n.classes;        %a.global;
          names              CDATA               #REQUIRED
          TEIform            CDATA               'classes'      >
]]>

<!ENTITY % files 'INCLUDE' >
<![ %files; [
<!ELEMENT %n.files;     - O  EMPTY                              >
<!ATTLIST %n.files;          %a.global;
          names              CDATA               #IMPLIED
          TEIform            CDATA               'files'        >
]]>

<!ENTITY % dataDesc 'INCLUDE' >
<![ %dataDesc; [
<!ELEMENT %n.dataDesc;  - O  (%phrase.seq)                      >
<!ATTLIST %n.dataDesc;       %a.global;
          TEIform            CDATA               'dataDesc'     >
]]>

<!ENTITY % parents 'INCLUDE' >
<![ %parents; [
<!ELEMENT %n.parents;   - O  (#PCDATA)                          >
<!ATTLIST %n.parents;        %a.global;
          TEIform            CDATA               'parents'      >
]]>

<!ENTITY % children 'INCLUDE' >
<![ %children; [
<!ELEMENT %n.children;  - O  (#PCDATA)                          >
<!ATTLIST %n.children;       %a.global;
          TEIform            CDATA               'children'     >
]]>

<!ENTITY % elemDecl 'INCLUDE' >
<![ %elemDecl; [
<!ELEMENT %n.elemDecl;  - O  (#PCDATA)                          >
<!ATTLIST %n.elemDecl;       %a.global;
          TEIform            CDATA               'elemDecl'     >
]]>

<!ENTITY % attlDecl 'INCLUDE' >
<![ %attlDecl; [
<!ELEMENT %n.attlDecl;  - -  (#PCDATA)                          >
<!ATTLIST %n.attlDecl;       %a.global;
          TEIform            CDATA               'attlDecl'     >
]]>

<!ENTITY % equiv 'INCLUDE' >
<![ %equiv; [
<!ELEMENT %n.equiv;     - O  (%specialPara)                     >
<!ATTLIST %n.equiv;          %a.global;
          scheme             CDATA               #REQUIRED
          TEIform            CDATA               'equiv'        >
]]>

<!-- (end of 27.1)                                            -->
<!-- 27.1.1:  Attribute documentation                         -->
<!ENTITY % attDef 'INCLUDE' >
<![ %attDef; [
<!ELEMENT %n.attDef;    - O  (%n.attName;, (%n.rs)?, %n.desc;, 
                             (%n.dataType;, (%n.valList; | 
                             %n.valDesc;)?), %n.default;, 
                             (%n.eg)?, (%n.remarks)?, 
                             (%n.equiv)*)                       >
<!ATTLIST %n.attDef;         %a.global;
          usage              (req | mwa | rec | rwa | opt) 
                                                 opt
          TEIform            CDATA               'attDef'       >
]]>

<!ENTITY % attName 'INCLUDE' >
<![ %attName; [
<!ELEMENT %n.attName;   - O  (#PCDATA)                          >
<!ATTLIST %n.attName;        %a.global;
          TEIform            CDATA               'attName'      >
]]>

<!ENTITY % dataType 'INCLUDE' >
<![ %dataType; [
<!ELEMENT %n.dataType;  - O  (#PCDATA)                          >
<!ATTLIST %n.dataType;       %a.global;
          TEIform            CDATA               'dataType'     >
]]>

<!ENTITY % valList 'INCLUDE' >
<![ %valList; [
<!ELEMENT %n.valList;   - -  ((%n.val;, %n.desc;)*)             >
<!ATTLIST %n.valList;        %a.global;
          type               (closed | semi | open) 
                                                 open
          TEIform            CDATA               'valList'      >
]]>

<!ENTITY % valDesc 'INCLUDE' >
<![ %valDesc; [
<!ELEMENT %n.valDesc;   - O  (%phrase.seq)                      >
<!ATTLIST %n.valDesc;        %a.global;
          TEIform            CDATA               'valDesc'      >
]]>

<!ENTITY % default 'INCLUDE' >
<![ %default; [
<!ELEMENT %n.default;   - O  (#PCDATA)                          >
<!ATTLIST %n.default;        %a.global;
          TEIform            CDATA               'default'      >
]]>

<!-- (end of 27.1.1)                                          -->
<!-- 27.2:  Element classes                                   -->
<!ENTITY % classDoc 'INCLUDE' >
<![ %classDoc; [
<!ELEMENT %n.classDoc;  - O  (%n.class;, (%n.rs)?, %n.desc;, 
                             (%n.attList)?, (%n.remarks)?, 
                             (%n.part)?, (%n.classes)?, 
                             (%n.files)?, (%n.ptr)*, 
                             (%n.equiv)*)                       >
<!ATTLIST %n.classDoc;       %a.global;
          type               (model | atts | both) 
                                                 #IMPLIED
          TEIform            CDATA               'classDoc'     >
]]>

<!ENTITY % class 'INCLUDE' >
<![ %class; [
<!ELEMENT %n.class;     - O  (#PCDATA)                          >
<!ATTLIST %n.class;          %a.global;
          TEIform            CDATA               'class'        >
]]>

<!-- all other constituents are defined above                 -->
<!-- (end of 27.2)                                            -->
<!-- 27.3:  Entity Documentation                              -->
<!ENTITY % entDoc 'INCLUDE' >
<![ %entDoc; [
<!ELEMENT %n.entDoc;    - -  (%n.entName;, (%n.rs)?, %n.desc;, 
                             (%n.remarks)?, %n.string;, 
                             (%n.ptr)*, (%n.equiv)*)            >
<!ATTLIST %n.entDoc;         %a.global;
          type               (pe | ge)           #REQUIRED
          TEIform            CDATA               'entDoc'       >
]]>

<!ENTITY % entName 'INCLUDE' >
<![ %entName; [
<!ELEMENT %n.entName;   - O  (#PCDATA)                          >
<!ATTLIST %n.entName;        %a.global;
          TEIform            CDATA               'entName'      >
]]>

<!ENTITY % string 'INCLUDE' >
<![ %string; [
<!ELEMENT %n.string;    - -  (#PCDATA)                          >
<!ATTLIST %n.string;         %a.global;
          TEIform            CDATA               'string'       >
]]>

<!-- All other constituents are defined above                 -->
<!-- (end of 27.3)                                            -->
<!-- (end of 27)                                              -->
