<!-- 3.7.3:  Element classes for TEI DTDs                     -->
<!-- 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 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.date ''                                            >
<!ENTITY % m.date '%x.date date | dateRange | dateStruct'       >
<!ENTITY % x.data ''                                            >
<!ENTITY % m.data '%x.data abbr | address | date | dateRange |
           dateStruct | expan | lang | measure | name | num |
           rs | time | timeRange | timeStruct'                  >
<!ENTITY % x.edit ''                                            >
<!ENTITY % m.edit '%x.edit add | corr | del | gap | orig | reg
           | sic'                                               >
<!ENTITY % x.loc ''                                             >
<!ENTITY % m.loc '%x.loc link | ptr | ref | xptr | xref'        >
<!ENTITY % x.seg ''                                             >
<!ENTITY % m.seg '%x.seg anchor | c | cl | m | phr | s | 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'             >
<!ENTITY % x.formPointers ''                                    >
<!ENTITY % m.formPointers '%x.formPointers oRef | oVar | pRef |
           pVar'                                                >
<!ENTITY % x.metadata ''                                        >
<!ENTITY % m.metadata '%x.metadata certainty | interp |
           interpGrp | respons | span | spanGrp'                >
<!ENTITY % x.globincl ''                                        >
<!ENTITY % m.globincl '%x.globincl %m.metadata;'                >
<!-- 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 postBox | postCode | street' >
<!ENTITY % x.biblPart ''                                        >
<!ENTITY % m.biblPart '%x.biblPart analytic | author |
           biblScope | 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.data; | %m.edit; |
           %m.formPointers; | %m.hqphrase; | %m.loc; |
           %m.phrase.verse; | %m.seg; | %m.sgmlKeywords; |
           formula | handShift'                                 >
<!ENTITY % x.inter ''                                           >
<!ENTITY % m.inter '%x.inter %m.bibl; | %m.hqinter; | %m.lists;
           | %m.notes; | %m.stageDirection; | castList | figure
           | stage | table | text'                              >
<!ENTITY % x.chunk ''                                           >
<!ENTITY % m.chunk '%x.chunk eTree | graph | l | lg | p | sp |
           tree'                                                >
<!-- This class isolates all the common component-level       -->
<!-- elements.                                                -->
<!ENTITY % x.common ''                                          >
<!ENTITY % m.common '%x.common %m.bibl; | %m.chunk; |
           %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 system 'teivers2.ent'                  >
%TEI.verse.ent;
]]>
<![ %TEI.drama [
<!ENTITY % TEI.drama.ent system 'teidram2.ent'                  >
%TEI.drama.ent;
]]>
<![ %TEI.spoken [
<!ENTITY % TEI.spoken.ent system 'teispok2.ent'                 >
%TEI.spoken.ent;
]]>
<![ %TEI.dictionaries [
<!ENTITY % TEI.dictionaries.ent system 'teidict2.ent'           >
%TEI.dictionaries.ent;
]]>
<![ %TEI.terminology [
<!ENTITY % TEI.terminology.ent system 'teiterm2.ent'            >
%TEI.terminology.ent;
]]>
<![ %TEI.linking [
<!ENTITY % TEI.linking.ent system 'teilink2.ent'                >
%TEI.linking.ent;
]]>
<![ %TEI.analysis [
<!ENTITY % TEI.analysis.ent system 'teiana2.ent'                >
%TEI.analysis.ent;
]]>
<![ %TEI.transcr [
<!ENTITY % TEI.transcr.ent system 'teitran2.ent'                >
%TEI.transcr.ent;
]]>
<![ %TEI.textcrit [
<!ENTITY % TEI.textcrit.ent system 'teitc2.ent'                 >
%TEI.textcrit.ent;
]]>
<![ %TEI.names.dates [
<!ENTITY % TEI.names.dates.ent system 'teind2.ent'              >
%TEI.names.dates.ent;
]]>
<![ %TEI.figures [
<!ENTITY % TEI.figures.ent system 'teifig2.ent'                 >
%TEI.figures.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      -->
<!-- Default declarations for the 'mix.' entities used for    -->
<!-- mixed and general bases.                                 -->
<!ENTITY % mix.verse ''                                         >
<!ENTITY % mix.drama ''                                         >
<!ENTITY % mix.spoken ''                                        >
<!ENTITY % mix.dictionaries ''                                  >
<!ENTITY % mix.terminology ''                                   >
<![ %TEI.mixed [
<!ENTITY % TEI.singleBase 'IGNORE'                              >
<!-- 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.dictionaries %mix.terminology)'                            >
]]>
<![ %TEI.general [
<!-- The general base uses the same definition of component   -->
<!-- as the mixed base.                                       -->
<!ENTITY % TEI.singleBase 'IGNORE'                              >
<!ENTITY % component '(%m.common %mix.verse %mix.drama
%mix.spoken
%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.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.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.dictionaries
%gen.terminology TEI...end)?'                                   >
<!ENTITY % component.plus '(%gen.verse %gen.drama %gen.spoken
%gen.dictionaries %gen.terminology
TEI...end)
|
(
(%m.common)+, (%gen.verse %gen.drama %gen.spoken
%gen.dictionaries
%gen.terminology TEI...end)?'                                   >
<!-- (End of marked section for general base.)                -->
]]>
<!-- (end of 3.7.8)                                           -->
<![ %TEI.prose [
<!ENTITY % component '(%m.common)'                              >
<!ENTITY % TEI.singleBase 'INCLUDE'                             >
]]>
<![ %TEI.verse [
<!ENTITY % component '(%m.common | %m.comp.verse)'              >
<!ENTITY % TEI.singleBase 'INCLUDE'                             >
]]>
<![ %TEI.drama [
<!ENTITY % component '(%m.common | %m.comp.drama)'              >
<!ENTITY % TEI.singleBase 'INCLUDE'                             >
]]>
<![ %TEI.spoken [
<!ENTITY % component '(%m.common | %m.comp.spoken)'             >
<!ENTITY % TEI.singleBase 'INCLUDE'                             >
]]>
<![ %TEI.dictionaries [
<!ENTITY % component '(%m.common | %m.comp.dictionaries)'       >
<!ENTITY % TEI.singleBase 'INCLUDE'                             >
]]>
<![ %TEI.terminology [
<!ENTITY % component '(%m.common | %m.comp.terminology)'        >
<!ENTITY % TEI.singleBase 'INCLUDE'                             >
]]>
<!-- Default declaration.                                     -->
<!ENTITY % component '(%m.common)'                              >
<!ENTITY % TEI.singleBase 'INCLUDE'                             >
<!-- 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)*'      >
<!ENTITY % specialPara '(((%m.chunk), (%component.seq)) |
(%paraContent))'                                                >
<!-- (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 '
          type               CDATA               #CURRENT
          org                (composite | uniform)
                                                 uniform
          sample             (initial | medial | final |
                             unknown | complete) complete
          part               (Y | N | I | M | F) N'             >
<!ENTITY % a.interpret '
          resp               CDATA               %INHERITED
          type               CDATA               %INHERITED
          inst               IDREFS              #IMPLIED'      >
<!ENTITY % a.names '
          key                CDATA               #IMPLIED
          reg                CDATA               #IMPLIED'      >
<!ENTITY % a.pointer '
          type               CDATA               #IMPLIED
          resp               CDATA               #IMPLIED
          crdate             CDATA               #IMPLIED
          targType           NAMES               #IMPLIED
          targOrder          (Y | N | U)         U
          evaluate           (all | one | none)  #IMPLIED'      >
<!ENTITY % a.seg '
          type               CDATA               #IMPLIED
          function           CDATA               #IMPLIED'      >
<!ENTITY % a.temporalExpr '
          value              CDATA               #IMPLIED
          type               CDATA               #IMPLIED
          reg                CDATA               #IMPLIED
          full               (yes | abb | init)  yes'           >
<!ENTITY % a.timed '
          start              IDREF               #IMPLIED
          end                IDREF               #IMPLIED
          dur                CDATA               #IMPLIED'      >
<!ENTITY % a.xPointer '      %a.pointer;
          doc                ENTITY              #IMPLIED
          from               %extPtr;            "ROOT"
          to                 %extPtr;            "DITTO"'       >
<!ENTITY % a.metrical '
          met                CDATA               %INHERITED
          real               CDATA               #IMPLIED
          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.fs;
                             %a.analysis;
                             %a.linking;
                             %a.terminology;
          id                 ID                  #IMPLIED
          n                  CDATA               #IMPLIED
          lang               IDREF               %INHERITED
          rend               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)                                           -->
