
<!--

	  TEI P5 DTD module declarefs. 
	  Generated 2006-01-30T20:24:13Z
Copyright 2005 TEI Consortium.
This is free software; you can redistribute it and/or
	    modify it under the terms of the GNU General Public
	    License as published by the Free Software Foundation;
	    either version 2 of the License, or (at your option) any
	    later version.
This material is distributed in the hope that it will be
	    useful, but WITHOUT ANY WARRANTY; without even the implied
	    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
	    PURPOSE. See the GNU General Public License for more
	    details.
You should have received a copy of the GNU General Public
	    License along with this file; if not, write to the Free
	    Software Foundation, Inc., 59 Temple Place, Suite 330,
	    Boston, MA 02111-1307, USA.
To contact the TEI Consortium use the following addresses.
	    For general (non-technical) enquiries: 
		  target="mailto:info@tei-c.org"/>info@tei-c.orgFor membership enquiries: membership@tei-c.orgFor technical enquiries, particularly about the
		Guidelines, DTDs, schemas, or software available from
		the TEI-C: editors@tei-c.orgFor up to date information, consult the TEI web site at http://www.tei-c.org/P5
-->

<!ENTITY % bicond 'INCLUDE' >
<![ %bicond; [

<!--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 %n.bicond; %om.RR;  ((%n.fs; | %n.f;),%n.iff;,(%n.fs; | %n.f;))>
<!ATTLIST %n.bicond;
 %att.global.attributes; >
]]>

<!ENTITY % cond 'INCLUDE' >
<![ %cond; [

<!--doc:(conditional feature-structure constraint) defines a conditional feature-structure constraint; the consequent
and the antecedent are specified as feature structures or
feature-structure groups; the constraint is satisfied if both the
antecedent and the consequent subsume a given feature
structure, or if the antecedent does not. -->
<!ELEMENT %n.cond; %om.RR;  ((%n.fs; | %n.f;),%n.then;,(%n.fs; | %n.f;))>
<!ATTLIST %n.cond;
 %att.global.attributes; >
]]>

<!ENTITY % fDecl 'INCLUDE' >
<![ %fDecl; [

<!--doc:(feature declaration) declares a single feature, specifying its name, organization,
range of allowed values, and optionally its default value. -->
<!ELEMENT %n.fDecl; %om.RR;  ((%n.fDescr;)?,%n.vRange;,(%n.vDefault;)?)>
<!ATTLIST %n.fDecl;
 %att.global.attributes;
 name %data.name;  #REQUIRED
 org (unit|set|bag|list) "unit"  >
]]>

<!ENTITY % fDescr 'INCLUDE' >
<![ %fDescr; [

<!--doc:(feature description (in FSD)) describes in prose what is represented by the feature being
declared and its values. -->
<!ELEMENT %n.fDescr; %om.RR; %macro.paraContent;>
<!ATTLIST %n.fDescr;
 %att.global.attributes; >
]]>

<!ENTITY % fsConstraints 'INCLUDE' >
<![ %fsConstraints; [

<!--doc:(feature-structure constraints) specifies constraints on the content of well formed feature
structures. -->
<!ELEMENT %n.fsConstraints; %om.RR;  (%n.cond; | %n.bicond;)*>
<!ATTLIST %n.fsConstraints;
 %att.global.attributes; >
]]>

<!ENTITY % fsDecl 'INCLUDE' >
<![ %fsDecl; [

<!--doc:(feature structure declaration) declares one type of feature structure. -->
<!ELEMENT %n.fsDecl; %om.RR;  ((%n.fsDescr;)?,(%n.fDecl;)+,(%n.fsConstraints;)?)>
<!ATTLIST %n.fsDecl;
 %att.global.attributes;
 type %data.enumerated;  #REQUIRED
 baseType %data.name;  #IMPLIED >
]]>

<!ENTITY % fsDescr 'INCLUDE' >
<![ %fsDescr; [

<!--doc:(feature system description (in FSD)) describes in prose what is represented by the type of feature
structure declared in the enclosing fsDecl. -->
<!ELEMENT %n.fsDescr; %om.RR; %macro.paraContent;>
<!ATTLIST %n.fsDescr;
 %att.global.attributes; >
]]>

<!ENTITY % if 'INCLUDE' >
<![ %if; [

<!--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 %n.if; %om.RR;  ((%n.fs; | %n.f;),%n.then;,%model.featureVal;)>
<!ATTLIST %n.if;
 %att.global.attributes; >
]]>

<!ENTITY % iff 'INCLUDE' >
<![ %iff; [

<!--doc:() separates the condition from the consequence in a bicond
element. -->
<!ELEMENT %n.iff; %om.RR; EMPTY>
<!ATTLIST %n.iff;
 %att.global.attributes; >
]]>

<!ENTITY % teifsd 'INCLUDE' >
<![ %teifsd; [

<!--doc:(feature system declaration) contains a feature system declaration. -->
<!ELEMENT %n.teifsd; %om.RR;  (%n.teiHeader;,(%n.fsDecl;)+)>
<!ATTLIST %n.teifsd;
 %att.global.attributes; >
]]>

<!ENTITY % then 'INCLUDE' >
<![ %then; [

<!--doc:() separates the condition from the default in an if, or
the antecedent and the consequent in a cond element. -->
<!ELEMENT %n.then; %om.RR; EMPTY>
<!ATTLIST %n.then;
 %att.global.attributes; >
]]>

<!ENTITY % vDefault 'INCLUDE' >
<![ %vDefault; [

<!--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 %n.vDefault; %om.RR;  ((%model.featureVal;)+ | (%n.if;)+)>
<!ATTLIST %n.vDefault;
 %att.global.attributes; >
]]>

<!ENTITY % vRange 'INCLUDE' >
<![ %vRange; [

<!--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 %n.vRange; %om.RR;  (%model.featureVal;)>
<!ATTLIST %n.vRange;
 %att.global.attributes; >
]]>
