<!-- 3.7.3:  Element classes for TEI DTDs                     -->
<!-- Text Encoding Initiative: Guidelines for Electronic      -->
<!-- Text Encoding and Interchange. DRAFT Version 2. 1992-93. -->
<!-- Copyright (c) 1990, 1992, 1993 ACH, ACL, ALLC.           -->
<!-- Permission to copy in any form is granted for use with   -->
<!-- TEI-aware systems and applications, provided this        -->
<!-- notice is included in all copies.                        -->
<!-- These materials subject to revision. Current versions    -->
<!-- are available from the Text Encoding Initiative.         -->
<!-- First, we declare the 'low-level' core classes: these    -->
<!-- are classes of semantically and structurally similar     -->
<!-- elements declared as part of the core tag set, e.g. the  -->
<!-- classes 'data' or 'edit'.                                -->
<!-- 3.7.4:  Low-level classes                                -->
<!-- Most of these elements are in the core tag set, but      -->
<!-- some may be from other tag sets.                         -->
<!-- Phrase-level classes                                     -->
<!ENTITY % x.hqphrase '' >
<!ENTITY % m.hqphrase '%x.hqphrase distinct | emph | foreign | 
           gloss | hi | mentioned | soCalled | term | title' >  
<!ENTITY % x.data '' >
<!ENTITY % m.data '%x.data abbr | address | date | dateRange | 
           expan | measure | name | num | rs | mdash | 
           timeRange' >                                         
<!ENTITY % x.edit '' >
<!ENTITY % m.edit '%x.edit add | corr | del | gap | orig | reg 
           | sic' >                                             
<!ENTITY % x.pointerGroup '' >
<!ENTITY % m.pointerGroup '%x.pointerGroup altGrp | joinGrp' >  
<!ENTITY % x.xPointer '' >
<!ENTITY % m.xPointer '%x.xPointer xptr | xref' >               
<!ENTITY % x.pointer '' >
<!ENTITY % m.pointer '%x.pointer %m.pointerGroup; | 
           %m.xPointer; | alt | link | linkGrp | ptr | ref' >   
<!ENTITY % x.seg '' >
<!ENTITY % m.seg '%x.seg c | cl | m | phr | seg | w' >          
<!ENTITY % x.sgmlKeywords '' >
<!ENTITY % m.sgmlKeywords '%x.sgmlKeywords att | gi | tag | 
           val' >                                               
<!ENTITY % x.phrase.verse '' >
<!ENTITY % m.phrase.verse '%x.phrase.verse caesura' >           
<!-- Inter-level classes                                      -->
<!ENTITY % x.hqinter '' >
<!ENTITY % m.hqinter '%x.hqinter cit | q | quote' >             
<!ENTITY % x.bibl '' >
<!ENTITY % m.bibl '%x.bibl bibl | biblFull | biblStruct' >      
<!ENTITY % x.lists '' >
<!ENTITY % m.lists '%x.lists label | list | listBibl' >         
<!ENTITY % x.notes '' >
<!ENTITY % m.notes '%x.notes note' >                            
<!ENTITY % x.stageDirection '' >
<!ENTITY % m.stageDirection '%x.stageDirection camera | caption 
           | move | sound | tech | view' >                      
<!-- (end of 3.7.4)                                           -->
<!-- 3.7.9:  Misc. Element Class Models                       -->
<!ENTITY % x.agent '' >
<!ENTITY % m.agent '%x.agent name' >                            
<!ENTITY % x.addrPart '' >
<!ENTITY % m.addrPart '%x.addrPart name | postBox | postCode | 
           street' >                                            
<!ENTITY % x.bibl.part '' >
<!ENTITY % m.bibl.part '%x.bibl.part analytic | author | 
           biblScope | city | edition | editor | extent | idno 
           | imprint | monogr | note | publisher | pubPlace | 
           respStmt | series' >                                 
<!ENTITY % x.divtop '' >
<!ENTITY % m.divtop '%x.divtop argument | byline | docAuthor | 
           docDate | epigraph | head | opener | salute | 
           signed' >                                            
<!ENTITY % x.divbot '' >
<!ENTITY % m.divbot '%x.divbot byline | closer | epigraph | 
           salute | signed | trailer' >                         
<!ENTITY % x.dramafront '' >
<!ENTITY % m.dramafront '%x.dramafront epilogue | performance | 
           prologue | set' >                                    
<!ENTITY % x.front '' >
<!ENTITY % m.front '%x.front %m.dramafront; | titlePage' >      
<!ENTITY % x.refsys '' >
<!ENTITY % m.refsys '%x.refsys cb | lb | milestone | pb' >      
<!-- (end of 3.7.9)                                           -->
<!-- Next, we declare the 'high-level' classes: these group   -->
<!-- together all phrase-level elements, all inter-level      -->
<!-- elements, and all chunk-level elements in the core, and  -->
<!-- identify the 'common' component elements (chunks and     -->
<!-- inter-level elements), as opposed to the                 -->
<!-- tagset-specific components.                              -->
<!-- 3.7.5:  Common high-level classes                        -->
<!-- These are the three fundamental element classes.         -->
<!ENTITY % x.phrase '' >
<!ENTITY % m.phrase '%x.phrase %m.seg; | %m.data; | %m.edit; | 
           %m.hqphrase; | %m.pointer; | %m.sgmlKeywords; | 
           %m.phrase.verse;' >                                  
<!ENTITY % x.inter '' >
<!ENTITY % m.inter '%x.inter %m.bibl; | %m.hqinter; | %m.lists; 
           | %m.notes; | %m.stageDirection; | castList | stage 
           | text' >                                            
<!ENTITY % x.chunk '' >
<!ENTITY % m.chunk '%x.chunk eTree | graph | l | lg | lg1 | lg2 
           | lg3 | lg4 | lg5 | p | sp | tree' >                 
<!-- This class isolates all the common component-level       -->
<!-- elements.                                                -->
<!ENTITY % x.common '' >
<!ENTITY % m.common '%x.common %m.chunk; | %m.bibl; | 
           %m.hqinter; | %m.lists; | %m.notes; | stage' >       
<!-- (end of 3.7.5)                                           -->
<!-- Next, we embed the portions of each base and additional  -->
<!-- tag set which declare relevant parameter entities. Only  -->
<!-- those files are embedded which have been selected by     -->
<!-- the user in the DTD subset. These files will declare     -->
<!-- parameter entities for their component-level elements,   -->
<!-- as well as for any global attributes they define.        -->
<!-- 3.7.6:  Embedding tag-set-specific entity definitions    -->
<![ %TEI.verse [
<!ENTITY % TEI.verse.ent PUBLIC
	"-//Text Encoding Initiative//ENTITIES teivers2.ent//EN" >
%TEI.verse.ent;
]]>
<![ %TEI.drama [
<!ENTITY % TEI.drama.ent PUBLIC
	"-//Text Encoding Initiative//ENTITIES teidram2.ent//EN" >
%TEI.drama.ent;
]]>
<![ %TEI.spoken [
<!ENTITY % TEI.spoken.ent PUBLIC
	"-//Text Encoding Initiative//ENTITIES teispok2.ent//EN" >
%TEI.spoken.ent;
]]>
<![ %TEI.letters [
<!ENTITY % TEI.letters.ent PUBLIC
	"-//Text Encoding Initiative//ENTITIES teilett2.ent//EN" >
%TEI.letters.ent;
]]>
<![ %TEI.dictionaries [
<!ENTITY % TEI.dictionaries.ent PUBLIC
	"-//Text Encoding Initiative//ENTITIES teidict2.ent//EN" >
%TEI.dictionaries.ent;
]]>
<![ %TEI.terminology [
<!ENTITY % TEI.terminology.ent PUBLIC
	"-//Text Encoding Initiative//ENTITIES teiterm2.ent//EN" >
%TEI.terminology.ent;
]]>
<![ %TEI.linking [
<!ENTITY % TEI.linking.ent PUBLIC
	"-//Text Encoding Initiative//ENTITIES teilink2.ent//EN" >
%TEI.linking.ent;
]]>
<![ %TEI.analysis [
<!ENTITY % TEI.analysis.ent PUBLIC
	"-//Text Encoding Initiative//ENTITIES teiana2.ent//EN" >
%TEI.analysis.ent;
]]>
<![ %TEI.fs [
<!ENTITY % TEI.fs.ent PUBLIC
	"-//Text Encoding Initiative//ENTITIES teifs2.ent//EN" >
%TEI.fs.ent;
]]>
<![ %TEI.certainty [
<!ENTITY % TEI.certainty.ent PUBLIC
	"-//Text Encoding Initiative//ENTITIES teicert2.ent//EN" >
%TEI.certainty.ent;
]]>
<!-- (end of 3.7.6)                                           -->
<!-- We can now declare the standard content models; one of   -->
<!-- these varies with the base selected.                     -->
<!-- 3.7.7:  Standard Content Models                          -->
<!-- Here we declare the parameter entities phrase,           -->
<!-- phrase.seq, component, component.seq, paraContent, and   -->
<!-- specialPara, for use in the content models of element    -->
<!-- declarations.                                            -->
<!-- The entities phrase and phrase.seq are the same in all   -->
<!-- bases. They may include elements specific to single tag  -->
<!-- sets; if the tag set is not selected, these elements     -->
<!-- are undefined and have no effect.                        -->
<!ENTITY % phrase '(#PCDATA | %m.phrase)' >
<!ENTITY % phrase.seq '(%phrase;)*'  >
<!-- The entity component varies with the base. The versions  -->
<!-- for the combined bases are declared first (so as to      -->
<!-- take precedence over the declarations in the individual  -->
<!-- bases).                                                  -->
<!-- 3.7.8:  Definition of components for combined bases      -->
<![ %TEI.mixed [
<!-- The mixed base allows components from any base; it does  -->
<!-- so by defining 'component' as including both common      -->
<!-- components and those specific to one tag set.            -->
<!ENTITY % component '(%m.common %mix.verse %mix.drama %mix.spoken %mix.letters
%mix.dictionaries %mix.terminology' >
]]>
<![ %TEI.general [
<!-- The general base uses the same definition of component   -->
<!-- as the mixed base.                                       -->
<!ENTITY % component '(%m.common %mix.verse %mix.drama %mix.spoken %mix.letters
%mix.dictionaries %mix.terminology' >
<!-- But it defines a special version of component.seq,       -->
<!-- which restricts each div of the text to a single base:   -->
<!-- bases can shift only in embedded divs or at div          -->
<!-- boundaries. This entity is constructed out of a series   -->
<!-- of smaller entities, one for each tag set. If the tag    -->
<!-- set is not in use, its entity will expand to the empty   -->
<!-- string.                                                  -->
<![ %TEI.verse [
<!-- If the verse base is in use, ...                         -->
<!ENTITY % gen.verse '((%m.comp.verse), (%m.common | %m.comp.verse)*) |'
 >
]]>
<![ %TEI.drama [
<!-- If the drama base is in use, ...                         -->
<!ENTITY % gen.drama '((%m.comp.drama), (%m.common | %m.comp.drama)*) |'
 >
]]>
<![ %TEI.spoken [
<!-- If the spoken base is in use, ...                        -->
<!ENTITY % gen.spoken '((%m.comp.spoken), (%m.common | %m.comp.spoken)*) |'
 >
]]>
<![ %TEI.letters [
<!-- If the letters base is in use, ...                       -->
<!ENTITY % gen.letters '((%m.comp.letters), (%m.common | %m.comp.letters)*) |'
 >
]]>
<![ %TEI.dictionaries [
<!-- If the dictionary base is in use, ...                    -->
<!ENTITY % gen.dictionaries '((%m.comp.dictionaries), (%m.common | %m.comp.dictionaries)*) |'
 >
]]>
<![ %TEI.terminology [
<!-- If the terminology base is in use, ...                   -->
<!ENTITY % gen.terminology '((%m.comp.terminology), (%m.common | %m.comp.terminology)*) |'
 >
]]>
<!-- Default declarations for all the entities gen.verse,     -->
<!-- etc.                                                     -->
<!ENTITY % gen.verse ''
 >
<!ENTITY % gen.drama ''
 >
<!ENTITY % gen.spoken ''
 >
<!ENTITY % gen.letters ''
 >
<!ENTITY % gen.dictionaries ''
 >
<!ENTITY % gen.terminology ''
 >
<!-- Now we are ready to declare component.seq and            -->
<!-- component.plus for use in general base tag set.          -->
<!ENTITY % component.seq '(%m.common)*, (
  %gen.verse
  %gen.drama
  %gen.spoken
  %gen.letters
  %gen.dictionaries
  %gen.terminology
  TEI...end
)?'
 >
<!ENTITY % component.plus '(%gen.verse
  %gen.drama
  %gen.spoken
  %gen.letters
  %gen.dictionaries
  %gen.terminology
  TEI...end
) |
( (%m.common)+, (
  %gen.verse
  %gen.drama
  %gen.spoken
  %gen.letters
  %gen.dictionaries
  %gen.terminology
  TEI...end
)?'
 >
<!-- (End of marked section for general base.)                -->
]]>
<!-- (end of 3.7.8)                                           -->
<![ %TEI.prose [
<!ENTITY % component '(%m.common)' >
]]>
<![ %TEI.verse [
<!ENTITY % component '(%m.common | %m.comp.verse)' >
]]>
<![ %TEI.drama [
<!ENTITY % component '(%m.common | %m.comp.drama)' >
]]>
<![ %TEI.spoken [
<!ENTITY % component '(%m.common | %m.comp.spoken)' >
]]>
<![ %TEI.letters [
<!ENTITY % component '(%m.common | %m.comp.letters)' >
]]>
<![ %TEI.prose [
<!ENTITY % component '(%m.common)' >
]]>
<![ %TEI.dictionaries [
<!ENTITY % component '(%m.common | %m.comp.dictionaries)' >
]]>
<![ %TEI.terminology [
<!ENTITY % component '(%m.common | %m.comp.terminology)' >
]]>
<!-- Default declaration.                                     -->
<!ENTITY % component '(%m.common)' >
<!-- The entity component.seq is always a starred sequence    -->
<!-- of component elements. Its definition does not vary      -->
<!-- with the base (unless we are using the general base, in  -->
<!-- which case it has already been defined above), but the   -->
<!-- meaning of the definition does.                          -->
<!ENTITY % component.seq '(%component;)*' >
<!-- The following entities do not vary with the base.        -->
<!ENTITY % paraContent '(#PCDATA | %m.phrase | %m.inter)*' >
<!-- ECI: existing definition of specialPara is broken - it evokes the-->
<!-- mixed content bug in some cases				      -->
<!--ENTITY % specialPara '(((%m.chunk), (%component.seq)) | (%paraContent))' -->

<!ENTITY % specialPara '(#PCDATA | %m.phrase | %m.inter | %m.chunk)*'   >

<!-- (end of 3.7.7)                                           -->
<!-- Finally, we declare the attribute classes, including     -->
<!-- the global attributes.                                   -->
<!-- 3.7.1:  Attribute classes                                -->
<!ENTITY % a.declaring '
          decls              IDREFS              #IMPLIED'      >
<!ENTITY % a.declarable '
          default            (YES | NO)          NO'            >
<!ENTITY % a.divn '
          sample             (initial | medial | final | 
                             unknown | complete) complete
          part               (Y | N | I | M | F) N
          type               CDATA               #IMPLIED
          org                (composite | uniform) 
                                                 uniform'       >
<!ENTITY % a.names '
          reg                CDATA               #IMPLIED
          key                CDATA               #IMPLIED'      >
<!ENTITY % a.personName '
          reg                CDATA               #IMPLIED
          sort               NUMBER              #IMPLIED
          full               yes | abb | init    yes'           >
<!ENTITY % a.placeName '     %a.names;
          full               (yes | abb | init)  yes'           >
<!ENTITY % a.pointer '
          crdate             CDATA               #IMPLIED
          evaluate           (all | one | none)  #IMPLIED
          resp               CDATA               #IMPLIED
          targOrder          (Y | N | U)         U
          type               CDATA               #IMPLIED
          targType           NAMES               #IMPLIED'      >
<!ENTITY % a.temporalExpr '
          reg                CDATA               #IMPLIED
          value              CDATA               #IMPLIED
          type               CDATA               #IMPLIED
          full               yes | abb | init    yes'           >
<!ENTITY % a.timed '
          dur                CDATA               #IMPLIED
          end                IDREF               #IMPLIED
          start              IDREF               #IMPLIED'      >
<!ENTITY % a.xPointer '      %a.pointer;
          to                 %extPtr;            "DITTO"
          doc                ENTITY              #IMPLIED
          from               %extPtr;            '              >
<!ENTITY % a.metrical '
          real               CDATA               #IMPLIED
          met                CDATA               %INHERITED
          rhyme              CDATA               #IMPLIED'      >
<!ENTITY % a.enjamb '
          enjamb             CDATA               #IMPLIED'      >
<!-- (end of 3.7.1)                                           -->
<!-- 3.5:  Global attributes                                  -->
<!-- The global attributes are defined for every element in   -->
<!-- the TEI tag set; individual declarations may be          -->
<!-- overridden by local declarations for individual          -->
<!-- elements.                                                -->
<!-- If the tag sets invoked by the user define extra global  -->
<!-- attributes (they do this in their .ent file), then they  -->
<!-- are inherited by GLOBAL; otherwise the parameter         -->
<!-- entities referred to expand to the empty string, as      -->
<!-- shown here.                                              -->
<!ENTITY % a.spoken ''                                                               >
<!ENTITY % a.certainty ''                                                               >
<!ENTITY % a.fs ''                                                               >
<!ENTITY % a.analysis ''                                                               >
<!ENTITY % a.linking ''                                                               >
<!ENTITY % a.terminology ''                                                               >
<!ENTITY % a.global '        %a.spoken;
                             %a.certainty;
                             %a.fs;
                             %a.analysis;
                             %a.linking;
                             %a.terminology;
          id                 ID                  #IMPLIED
          lang               IDREF               %INHERITED
          rend               CDATA               #IMPLIED
          n                  CDATA               #IMPLIED'      >
<!-- The TEIform attribute is also global, but is declared    -->
<!-- individually for each element, not in a parameter        -->
<!-- entity declaration.                                      -->
<!-- (end of 3.5)                                             -->
<!-- (end of 3.7.3)                                           -->
