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

<!-- 26.1:  Feature System Declaration                        -->
<!-- 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.         -->
<!-- First, we declare basic parameter entities and embed     -->
<!-- auxiliary files.                                         -->
<!-- Embed entities for TEI generic identifiers.              -->
<!ENTITY % TEI.elementNames system 'teigis2.ent'                >
%TEI.elementNames;
<!-- Embed 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;
<!-- Define element classes for feature structure             -->
<!-- declarations.                                            -->
<!ENTITY % x.boolean ''                                         >
<!ENTITY % m.boolean '%x.boolean any | %n.none;'                >
<!ENTITY % x.binary ''                                          >
<!ENTITY % m.binary '%x.binary %n.minus; | %n.plus;'            >
<!ENTITY % x.singleVal ''                                       >
<!ENTITY % m.singleVal '%x.singleVal %m.binary; | %m.boolean; | 
           %n.dft; | %n.msr; | %n.nbr; | %n.rate; | %n.str; | 
           %n.sym; | %n.uncertain;'                             >
<!ENTITY % x.complexVal ''                                      >
<!ENTITY % m.complexVal '%x.complexVal %n.alt; | %n.fs; | 
           %n.vAlt;'                                            >
<!ENTITY % x.featureVal ''                                      >
<!ENTITY % m.featureVal '%x.featureVal %m.complexVal; | 
           %m.singleVal; | %n.null;'                            >
<!-- Now, we declare the elements for FSDs proper.            -->
<!-- 26.2:  Feature System Declaration                        -->
<!ENTITY % teiFsd2 'INCLUDE' >
<![ %teiFsd2; [
<!ELEMENT %n.teiFsd2;   - -  (%n.teiHeader;, (%n.fsDecl)+)      >
<!ATTLIST %n.teiFsd2;        %a.global;
          TEIform            CDATA               'teiFsd2'      >
]]>

<!ENTITY % fsDecl 'INCLUDE' >
<![ %fsDecl; [
<!ELEMENT %n.fsDecl;    - -  ((%n.fsDescr)?, (%n.fDecl)+, 
                             (%n.fsConstraints)?)               >
<!ATTLIST %n.fsDecl;         %a.global;
          baseType           CDATA               #IMPLIED
          type               CDATA               #REQUIRED
          TEIform            CDATA               'fsDecl'       >
]]>

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

<!-- (end of 26.2)                                            -->
<!-- 26.3:  Feature definitions                               -->
<!ENTITY % fDecl 'INCLUDE' >
<![ %fDecl; [
<!ELEMENT %n.fDecl;     - -  ((%n.fDescr)?, %n.vRange;, 
                             (%n.vDefault)?)                    >
<!ATTLIST %n.fDecl;          %a.global;
          name               NMTOKEN             #REQUIRED
          org                (unit | set | bag | list) 
                                                 unit
          TEIform            CDATA               'fDecl'        >
]]>

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

<!ENTITY % vRange 'INCLUDE' >
<![ %vRange; [
<!ELEMENT %n.vRange;    - O  (%m.featureVal)                    >
<!ATTLIST %n.vRange;         %a.global;
          TEIform            CDATA               'vRange'       >
]]>

<!ENTITY % vDefault 'INCLUDE' >
<![ %vDefault; [
<!ELEMENT %n.vDefault;  - -  ((%m.featureVal)+ | (%n.if)+)      >
<!ATTLIST %n.vDefault;       %a.global;
          TEIform            CDATA               'vDefault'     >
]]>

<!ENTITY % if 'INCLUDE' >
<![ %if; [
<!ELEMENT %n.if;        - -  ((%n.fs; | %n.f; | %n.fAlt;), 
                             %n.then;, (%m.featureVal) )        >
<!ATTLIST %n.if;             %a.global;
          TEIform            CDATA               'if'           >
]]>

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

<!-- (end of 26.3)                                            -->
<!-- 26.4:  Feature structure constraints                     -->
<!ENTITY % fsConstraints 'INCLUDE' >
<![ %fsConstraints; [
<!ELEMENT %n.fsConstraints; 
                        - -  (%n.cond; | %n.bicond;)*           >
<!ATTLIST %n.fsConstraints;  %a.global;
          TEIform            CDATA               'fsConstraints'>
]]>

<!ENTITY % cond 'INCLUDE' >
<![ %cond; [
<!ELEMENT %n.cond;      - O  ((%n.fs; | %n.f; | %n.fAlt;), 
                             %n.then;, (%n.fs; | %n.f; | 
                             %n.fAlt;))                         >
<!ATTLIST %n.cond;           %a.global;
          TEIform            CDATA               'cond'         >
]]>

<!ENTITY % bicond 'INCLUDE' >
<![ %bicond; [
<!ELEMENT %n.bicond;    - O  ((%n.fs; | %n.f; | %n.fAlt;), 
                             %n.iff;, (%n.fs; | %n.f; | 
                             %n.fAlt;))                         >
<!ATTLIST %n.bicond;         %a.global;
          TEIform            CDATA               'bicond'       >
]]>

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

<!-- (end of 26.4)                                            -->
<!-- The elements for feature structures themselves are       -->
<!-- declared in teifs2.dtd                                   -->
<!ENTITY % TEI.fs.dtd system 'teifs2.dtd'                       >
%TEI.fs.dtd;
<!-- Finally, embed the TEI header and core tag sets.         -->
<!ENTITY % TEI.header.dtd system 'teihdr2.dtd'                  >
%TEI.header.dtd;
<!ENTITY % TEI.core.dtd system 'teicore2.dtd'                   >
%TEI.core.dtd;
<!-- (end of 26.1)                                            -->
