
<!--
DTD Generated 2010-11-05T15:38:49Z. 
	       
This template file is freely available and you are
	       hereby authorised to copy, modify, and redistribute it in
	       any way without further reference or permissions.
	       
When making such modifications, you are strongly
	       recommended to change the present text to include an
	       accurate statement of the licencing conditions applicable
	       to your modified text.
	     
Edition: 1.8.0. Last updated on November 5th 2010.
Edition Location: http://www.tei-c.org/Vault/P5/1.8.0/

-->

<!-- start datatypes -->

<!-- end datatypes -->

<!--predeclared classes -->

<!ENTITY % model.resourceLike "fsdDecl"> 
<!ENTITY % model.resourceLike_sequence "fsdDecl"> 
<!ENTITY % model.resourceLike_sequenceOptional "fsdDecl?"> 
<!ENTITY % model.resourceLike_sequenceOptionalRepeatable "fsdDecl*"> 
<!ENTITY % model.resourceLike_sequenceRepeatable "fsdDecl+"> 
<!--end of predeclared classes -->

<!ENTITY % model.global.meta "fs |
 fLib |
 fvLib"> 
<!ENTITY % model.global.meta_sequence "fs, fLib, fvLib"> 
<!ENTITY % model.global.meta_sequenceOptional "fs?, fLib?, fvLib?"> 
<!ENTITY % model.global.meta_sequenceOptionalRepeatable "fs*, fLib*, fvLib*"> 
<!ENTITY % model.global.meta_sequenceRepeatable "fs+, fLib+, fvLib+"> 
<!ENTITY % model.gLike ""> 
<!ENTITY % model.gLike_sequence ""> 
<!ENTITY % model.gLike_sequenceOptional ""> 
<!ENTITY % model.gLike_sequenceOptionalRepeatable ""> 
<!ENTITY % model.gLike_sequenceRepeatable ""> 
<!ENTITY % model.featureVal.complex "fs |
 vColl |
 vNot |
 vMerge"> 
<!ENTITY % model.featureVal.complex_sequence "fs, vColl, vNot, vMerge"> 
<!ENTITY % model.featureVal.complex_sequenceOptional "fs?, vColl?, vNot?, vMerge?"> 
<!ENTITY % model.featureVal.complex_sequenceOptionalRepeatable "fs*, vColl*, vNot*, vMerge*"> 
<!ENTITY % model.featureVal.complex_sequenceRepeatable "fs+, vColl+, vNot+, vMerge+"> 
<!ENTITY % model.featureVal.single "binary |
 symbol |
 numeric |
 string |
 vLabel |
 default |
 vAlt"> 
<!ENTITY % model.featureVal.single_sequence "binary, symbol, numeric, string, vLabel, default, vAlt"> 
<!ENTITY % model.featureVal.single_sequenceOptional "binary?, symbol?, numeric?, string?, vLabel?, default?, vAlt?"> 
<!ENTITY % model.featureVal.single_sequenceOptionalRepeatable "binary*, symbol*, numeric*, string*, vLabel*, default*, vAlt*"> 
<!ENTITY % model.featureVal.single_sequenceRepeatable "binary+, symbol+, numeric+, string+, vLabel+, default+, vAlt+"> 
<!ENTITY % model.divPart ""> 
<!ENTITY % model.divPart_sequence ""> 
<!ENTITY % model.divPart_sequenceOptional ""> 
<!ENTITY % model.divPart_sequenceOptionalRepeatable ""> 
<!ENTITY % model.divPart_sequenceRepeatable ""> 
<!ENTITY % model.global "%model.global.meta;"> 
<!ENTITY % model.global_sequence "%model.global.meta;"> 
<!ENTITY % model.global_sequenceOptional "%model.global.meta;?"> 
<!ENTITY % model.global_sequenceOptionalRepeatable "%model.global.meta;*"> 
<!ENTITY % model.global_sequenceRepeatable "%model.global.meta;+"> 
<!ENTITY % model.featureVal "%model.featureVal.complex; |
 %model.featureVal.single;"> 
<!ENTITY % model.featureVal_sequence "%model.featureVal.complex;, %model.featureVal.single;"> 
<!ENTITY % model.featureVal_sequenceOptional "%model.featureVal.complex;?, %model.featureVal.single;?"> 
<!ENTITY % model.featureVal_sequenceOptionalRepeatable "%model.featureVal.complex;*, %model.featureVal.single;*"> 
<!ENTITY % model.featureVal_sequenceRepeatable "%model.featureVal.complex;+, %model.featureVal.single;+"> 
<!ENTITY % model.inter ""> 
<!ENTITY % model.inter_sequence ""> 
<!ENTITY % model.inter_sequenceOptional ""> 
<!ENTITY % model.inter_sequenceOptionalRepeatable ""> 
<!ENTITY % model.inter_sequenceRepeatable ""> 
<!ENTITY % model.common ""> 
<!ENTITY % model.common_sequence ""> 
<!ENTITY % model.common_sequenceOptional ""> 
<!ENTITY % model.common_sequenceOptionalRepeatable ""> 
<!ENTITY % model.common_sequenceRepeatable ""> 
<!ENTITY % model.phrase ""> 
<!ENTITY % model.phrase_sequence ""> 
<!ENTITY % model.phrase_sequenceOptional ""> 
<!ENTITY % model.phrase_sequenceOptionalRepeatable ""> 
<!ENTITY % model.phrase_sequenceRepeatable ""> 
<!ENTITY % model.limitedPhrase ""> 
<!ENTITY % model.limitedPhrase_sequence ""> 
<!ENTITY % model.limitedPhrase_sequenceOptional ""> 
<!ENTITY % model.limitedPhrase_sequenceOptionalRepeatable ""> 
<!ENTITY % model.limitedPhrase_sequenceRepeatable ""> 
<!ENTITY % model.encodingDescPart "fsdDecl"> 
<!ENTITY % model.encodingDescPart_sequence "fsdDecl"> 
<!ENTITY % model.encodingDescPart_sequenceOptional "fsdDecl?"> 
<!ENTITY % model.encodingDescPart_sequenceOptionalRepeatable "fsdDecl*"> 
<!ENTITY % model.encodingDescPart_sequenceRepeatable "fsdDecl+"> 
<!ENTITY % model.resourceLike "fsdDecl"> 
<!ENTITY % model.resourceLike_sequence "fsdDecl"> 
<!ENTITY % model.resourceLike_sequenceOptional "fsdDecl?"> 
<!ENTITY % model.resourceLike_sequenceOptionalRepeatable "fsdDecl*"> 
<!ENTITY % model.resourceLike_sequenceRepeatable "fsdDecl+"> 
<!-- start predeclared patterns -->

<!-- start rest of patterns -->

<!ENTITY % macro.limitedContent '( #PCDATA |
 _DUMMY_model.limitedPhrase |
 _DUMMY_model.inter)*' >

<!ENTITY % macro.xtext '( #PCDATA |
 _DUMMY_model.gLike)*' >

<!ENTITY % macro.anyXML ' ANY' >

<!-- end patterns -->

<!-- start elements -->

<!--doc:(bi-conditional feature-structure constraint) defines a biconditional feature-structure constraint; both
consequent and antecedent are specified as feature structures or groups
of feature structures; the constraint is satisfied if both
subsume a given feature structure, or if both do not. -->
<!ELEMENT bicond ((fs |
 f),iff,(fs |
 f))>
<!ATTLIST bicond xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(binary value) represents the value part of a feature-value specification which can contain either
  of exactly two possible values. -->
<!ELEMENT binary EMPTY>
<!ATTLIST binary xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!ATTLIST binary
value CDATA #REQUIRED >
<!--doc:(conditional feature-structure constraint) defines a conditional feature-structure constraint; the consequent
and the antecedent are specified as feature structures or
feature-structure collections; the constraint is satisfied if both the
antecedent and the consequent subsume a given feature
structure, or if the antecedent does not. -->
<!ELEMENT cond ((fs |
 f),then,(fs |
 f))>
<!ATTLIST cond xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(default feature value) represents the value part of a feature-value specification
  which contains a defaulted value. -->
<!ELEMENT default EMPTY>
<!ATTLIST default xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(feature) represents a feature value specification, that
  is, the association of a name with a value of any of several different types. -->
<!ELEMENT f ( #PCDATA |
 _DUMMY_model.gLike |
 %model.featureVal;)*>
<!ATTLIST f xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!ATTLIST f
name NMTOKEN  #REQUIRED
fVal CDATA #IMPLIED >
<!--doc:(feature declaration) declares a single feature, specifying its name, organization,
range of allowed values, and optionally its default value. -->
<!ELEMENT fDecl (fDescr?,vRange,vDefault?)>
<!ATTLIST fDecl xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!ATTLIST fDecl
name NMTOKEN  #REQUIRED
optional (true | false)  "true"  >
<!--doc:(feature description (in FSD)) describes in prose what is represented by the feature being
declared and its values. -->
<!ELEMENT fDescr %macro.limitedContent;>
<!ATTLIST fDescr xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(feature library) assembles a library of feature elements. -->
<!ELEMENT fLib (f)+>
<!ATTLIST fLib xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(feature structure) represents a feature structure, that is, a
  collection of feature-value pairs organized as a
structural unit. -->
<!ELEMENT fs (f)*>
<!ATTLIST fs xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!ATTLIST fs
type NMTOKEN  #IMPLIED
feats CDATA  #IMPLIED >
<!--doc:(feature-structure constraints) specifies constraints on the content of valid feature
structures. -->
<!ELEMENT fsConstraints (cond |
 bicond)*>
<!ATTLIST fsConstraints xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(feature structure declaration) declares one type of feature structure. -->
<!ELEMENT fsDecl (fsDescr?,fDecl+,fsConstraints?)>
<!ATTLIST fsDecl xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!ATTLIST fsDecl
type NMTOKEN  #REQUIRED
baseTypes NMTOKENS  #IMPLIED >
<!--doc:(feature system description (in FSD)) describes in prose what is represented by the type of feature
structure declared in the enclosing fsDecl. -->
<!ELEMENT fsDescr %macro.limitedContent;>
<!ATTLIST fsDescr xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(feature system declaration) provides a feature system declaration comprising one or more
  feature structure declarations or feature structure declaration links. -->
<!ELEMENT fsdDecl (fsDecl |
 fsdLink)+>
<!ATTLIST fsdDecl xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(feature structure declaration link) associates the name of a typed feature structure with a feature
structure declaration for it. -->
<!ELEMENT fsdLink EMPTY>
<!ATTLIST fsdLink xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!ATTLIST fsdLink
type NMTOKEN  #REQUIRED
target CDATA #REQUIRED >
<!--doc:(feature-value library) assembles a library of reusable feature value elements
  (including complete feature structures). -->
<!ELEMENT fvLib (%model.featureVal;)*>
<!ATTLIST fvLib xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:defines a conditional default value for a feature; the condition
is specified as a feature structure, and is met if it
subsumes the feature structure in the text for which a
default value is sought. -->
<!ELEMENT if ((fs |
 f),then,(%model.featureVal;))>
<!ATTLIST if xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(if and only if) separates the condition from the consequence in a bicond
element. -->
<!ELEMENT iff EMPTY>
<!ATTLIST iff xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(numeric value) represents the value part of a feature-value specification
  which contains a numeric value or range. -->
<!ELEMENT numeric EMPTY>
<!ATTLIST numeric xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!ATTLIST numeric
value CDATA #REQUIRED
max CDATA #IMPLIED
trunc CDATA #IMPLIED >
<!--doc:(string value) represents the value part of a feature-value specification
  which contains a string. -->
<!ELEMENT string %macro.xtext;>
<!ATTLIST string xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(symbolic value) represents the value part of a feature-value specification
  which contains one of a finite list of symbols. -->
<!ELEMENT symbol EMPTY>
<!ATTLIST symbol xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!ATTLIST symbol
value CDATA #REQUIRED >
<!--doc:separates the condition from the default in an if, or
the antecedent and the consequent in a cond element. -->
<!ELEMENT then EMPTY>
<!ATTLIST then xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(value alternation) represents the value part of a feature-value specification
  which contains a set of values, only one of which can be valid. -->
<!ELEMENT vAlt ((%model.featureVal;),(%model.featureVal;)+)>
<!ATTLIST vAlt xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(collection of values) represents the value part of a feature-value specification
  which contains multiple values organized as a set, bag, or list. -->
<!ELEMENT vColl (fs |
 %model.featureVal.single;)*>
<!ATTLIST vColl xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!ATTLIST vColl
org (set|bag|list) #IMPLIED >
<!--doc:(value default) declares the default value to be supplied when a feature structure
does not contain an instance of f for this name; if
unconditional, it is specified as one (or, depending on the value of
the org attribute of the enclosing fDecl) more
fs elements or primitive values;
if conditional, it is specified as
one or more if elements; if no default is specified, or no
condition matches, the value none is assumed. -->
<!ELEMENT vDefault ((%model.featureVal;)+ |
 if+)>
<!ATTLIST vDefault xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(value label) represents the value part of a feature-value specification
  which appears at more than one point in a feature structure. -->
<!ELEMENT vLabel (%model.featureVal;)?>
<!ATTLIST vLabel xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!ATTLIST vLabel
name CDATA #REQUIRED >
<!--doc:(merged collection of values) represents a feature value which is the result of merging
  together the feature values contained by its children, using the organization
  specified by the org attribute. -->
<!ELEMENT vMerge (%model.featureVal;)+>
<!ATTLIST vMerge xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!ATTLIST vMerge
org (set|bag|list) #IMPLIED >
<!--doc:(value negation) represents a feature value which is the negation of its content. -->
<!ELEMENT vNot (%model.featureVal;)>
<!ATTLIST vNot xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!--doc:(value range) defines the range of allowed values for a feature, in the form of
an fs, vAlt, or primitive value;
for the value of an f to be valid, it must be
subsumed by the specified range; if the f
contains multiple values (as sanctioned by the org attribute),
then each value must be subsumed by the vRange. -->
<!ELEMENT vRange (%model.featureVal;)>
<!ATTLIST vRange xmlns CDATA "http://www.tei-c.org/ns/1.0">
<!-- end elements -->
