<?xml version="1.0"?>
<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<!--Schema generated 2006-01-30T20:23:55Z
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-->
<!--Definitions from module declarefs-->
<!--Set predeclared macros-->
<!--0. predeclared macros-->
<!--1. classes-->
<!--2. elements-->
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="bicond">
    <element name="bicond">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(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.</a:documentation>
      <ref name="bicond.content"/>
      <ref name="bicond.attributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="bicond.content">
    <group xmlns:rng="http://relaxng.org/ns/structure/1.0">
      <rng:choice>
        <rng:ref name="fs"/>
        <rng:ref name="f"/>
      </rng:choice>
      <rng:ref name="iff"/>
      <rng:choice>
        <rng:ref name="fs"/>
        <rng:ref name="f"/>
      </rng:choice>
    </group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="bicond.attributes">
    <ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="cond">
    <element name="cond">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(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.</a:documentation>
      <ref name="cond.content"/>
      <ref name="cond.attributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="cond.content">
    <group xmlns:rng="http://relaxng.org/ns/structure/1.0">
      <rng:choice>
        <rng:ref name="fs"/>
        <rng:ref name="f"/>
      </rng:choice>
      <rng:ref name="then"/>
      <rng:choice>
        <rng:ref name="fs"/>
        <rng:ref name="f"/>
      </rng:choice>
    </group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="cond.attributes">
    <ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fDecl">
    <element name="fDecl">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(feature declaration) declares a single feature, specifying its name, organization,
range of allowed values, and optionally its default value.</a:documentation>
      <ref name="fDecl.content"/>
      <ref name="fDecl.attributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fDecl.content">
    <group xmlns:rng="http://relaxng.org/ns/structure/1.0">
      <rng:optional>
        <rng:ref name="fDescr"/>
      </rng:optional>
      <rng:ref name="vRange"/>
      <rng:optional>
        <rng:ref name="vDefault"/>
      </rng:optional>
    </group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fDecl.attributes">
    <ref name="att.global.attributes"/>
    <attribute name="name">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the name of the feature being declared; matches the
name attribute of f elements in the text.</a:documentation>
      <ref name="data.name"/>
    </attribute>
    <optional>
      <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" name="org" a:defaultValue="unit">
        <a:documentation>specifies the organizing discipline of the feature value.</a:documentation>
        <choice>
          <value>unit</value>
          <a:documentation>(unitary atomic value) </a:documentation>
          <value>set</value>
          <a:documentation>(set value (unordered, no duplicates)) </a:documentation>
          <value>bag</value>
          <a:documentation>(bag value (unordered, may have duplicates)) </a:documentation>
          <value>list</value>
          <a:documentation>(list value (ordered, may have duplicates)) </a:documentation>
        </choice>
      </attribute>
    </optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fDescr">
    <element name="fDescr">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(feature description (in FSD)) describes in prose what is represented by the feature being
declared and its values.</a:documentation>
      <ref name="fDescr.content"/>
      <ref name="fDescr.attributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fDescr.content">
    <ref xmlns:rng="http://relaxng.org/ns/structure/1.0" name="macro.paraContent"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fDescr.attributes">
    <ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fsConstraints">
    <element name="fsConstraints">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(feature-structure constraints) specifies constraints on the content of well formed feature
structures.</a:documentation>
      <ref name="fsConstraints.content"/>
      <ref name="fsConstraints.attributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fsConstraints.content">
    <zeroOrMore xmlns:rng="http://relaxng.org/ns/structure/1.0">
      <rng:choice>
        <rng:ref name="cond"/>
        <rng:ref name="bicond"/>
      </rng:choice>
    </zeroOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fsConstraints.attributes">
    <ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fsDecl">
    <element name="fsDecl">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(feature structure declaration) declares one type of feature structure.</a:documentation>
      <ref name="fsDecl.content"/>
      <ref name="fsDecl.attributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fsDecl.content">
    <group xmlns:rng="http://relaxng.org/ns/structure/1.0">
      <rng:optional>
        <rng:ref name="fsDescr"/>
      </rng:optional>
      <rng:oneOrMore>
        <rng:ref name="fDecl"/>
      </rng:oneOrMore>
      <rng:optional>
        <rng:ref name="fsConstraints"/>
      </rng:optional>
    </group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fsDecl.attributes">
    <ref name="att.global.attributes"/>
    <attribute name="type">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">gives a name for the type of feature structure being declared.</a:documentation>
      <ref name="data.enumerated"/>
    </attribute>
    <optional>
      <attribute name="baseType">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">gives the name of the feature structure type from which this
type inherits features and constraints; if this type declares a feature
with the same name as a feature of the base type, the definition within
this fsDecl overrides the inherited definition.  The
fsConstraints are inherited only if this fsDecl
does not specify any; otherwise the constraints in this fsDecl
override.  When no baseType is specified, no features
or constraints are inherited.</a:documentation>
        <ref name="data.name"/>
      </attribute>
    </optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fsDescr">
    <element name="fsDescr">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(feature system description (in FSD)) describes in prose what is represented by the type of feature
structure declared in the enclosing fsDecl.</a:documentation>
      <ref name="fsDescr.content"/>
      <ref name="fsDescr.attributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fsDescr.content">
    <ref xmlns:rng="http://relaxng.org/ns/structure/1.0" name="macro.paraContent"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="fsDescr.attributes">
    <ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="if">
    <element name="if">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">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.</a:documentation>
      <ref name="if.content"/>
      <ref name="if.attributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="if.content">
    <group xmlns:rng="http://relaxng.org/ns/structure/1.0">
      <rng:choice>
        <rng:ref name="fs"/>
        <rng:ref name="f"/>
      </rng:choice>
      <rng:ref name="then"/>
      <rng:ref name="model.featureVal"/>
    </group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="if.attributes">
    <ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="iff">
    <element name="iff">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">separates the condition from the consequence in a bicond
element.</a:documentation>
      <ref name="iff.content"/>
      <ref name="iff.attributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="iff.content">
    <empty xmlns:rng="http://relaxng.org/ns/structure/1.0"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="iff.attributes">
    <ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="teifsd">
    <element name="teifsd">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(feature system declaration) contains a feature system declaration.</a:documentation>
      <ref name="teifsd.content"/>
      <ref name="teifsd.attributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="teifsd.content">
    <group xmlns:rng="http://relaxng.org/ns/structure/1.0">
      <rng:ref name="teiHeader"/>
      <rng:oneOrMore>
        <rng:ref name="fsDecl"/>
      </rng:oneOrMore>
    </group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="teifsd.attributes">
    <ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="then">
    <element name="then">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">separates the condition from the default in an if, or
the antecedent and the consequent in a cond element.</a:documentation>
      <ref name="then.content"/>
      <ref name="then.attributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="then.content">
    <empty xmlns:rng="http://relaxng.org/ns/structure/1.0"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="then.attributes">
    <ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="vDefault">
    <element name="vDefault">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(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.</a:documentation>
      <ref name="vDefault.content"/>
      <ref name="vDefault.attributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="vDefault.content">
    <choice xmlns:rng="http://relaxng.org/ns/structure/1.0">
      <rng:oneOrMore>
        <rng:ref name="model.featureVal"/>
      </rng:oneOrMore>
      <rng:oneOrMore>
        <rng:ref name="if"/>
      </rng:oneOrMore>
    </choice>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="vDefault.attributes">
    <ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="vRange">
    <element name="vRange">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(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.</a:documentation>
      <ref name="vRange.content"/>
      <ref name="vRange.attributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="vRange.content">
    <ref xmlns:rng="http://relaxng.org/ns/structure/1.0" name="model.featureVal"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="vRange.attributes">
    <ref name="att.global.attributes"/>
    <empty/>
  </define>
<!--3. macros-->
</rng:grammar>
