<?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 2009-01-31T16:40:31Z
Edition: 1.3.0. Last updated on February 1st 2009.
Copyright 2009 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.
A copy of the GNU General Public
	    License is stored on the TEI web site
	    along with this file; you can also contact the Free
	    Software Foundation, Inc., 59 Temple Place, Suite 330,
	    Boston, MA 02111-1307, USA, for a copy.
For information about the TEI, including contact
		details, consult the TEI web
	      site at http://www.tei-c.org/. 
		Documentation of TEI modules-->
  <!--Definitions from module tagdocs-->
  <!--Set global predeclared macros-->
  <!--Set predeclared macros-->
  <!--0. predeclared macros-->
  <!--1. classes-->
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.identified.attributes">
    <ref name="att.identified.attribute.ident"/>
    <ref name="att.identified.attribute.predeclare"/>
    <ref name="att.identified.attribute.module"/>
    <ref name="att.identified.attribute.mode"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.identified.attribute.ident">
    <rng:attribute name="ident">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Supplies the identifier by which this element is referenced.</a:documentation>
      <ref name="data.name"/>
    </rng:attribute>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.identified.attribute.predeclare">
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="predeclare" a:defaultValue="false">
        <a:documentation>Says whether this object should be predeclared in the
      tei infrastructure module.</a:documentation>
        <data type="boolean"/>
      </rng:attribute>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.identified.attribute.module">
    <rng:optional>
      <rng:attribute name="module">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Supplies the name of the module in which this object is to
      be defined.</a:documentation>
        <data type="NCName"/>
      </rng:attribute>
    </rng:optional>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.identified.attribute.mode">
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="mode" a:defaultValue="add">
        <a:documentation>specifies the effect of this declaration on its parent
    module.</a:documentation>
        <rng:choice>
          <rng:value>add</rng:value>
          <a:documentation>this declaration is added to the current definitions</a:documentation>
          <rng:value>delete</rng:value>
          <a:documentation>this declaration and all of its children are removed from the current setup</a:documentation>
          <rng:value>change</rng:value>
          <a:documentation>this declaration changes the declaration of the same
    name in the current definition</a:documentation>
          <rng:value>replace</rng:value>
          <a:documentation>this declaration replaces the declaration of the same
    name in the current definition</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
  </define>
  <!--2. elements-->
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="altIdent">
    <element name="altIdent">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(alternate identifier) supplies the recommended XML name for an element, class,
  attribute, etc. in some language.</a:documentation>
      <ref name="altIdent.content"/>
      <ref name="altIdent.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="altIdent.content">
    <rng:ref name="macro.xtext"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="altIdent.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.typed.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att">
    <element name="att">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(attribute) contains the name of an attribute appearing within running text.</a:documentation>
      <ref name="att.content"/>
      <ref name="att.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.content">
    <rng:text/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="att.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="scheme" a:defaultValue="TEI">
        <a:documentation>supplies an identifier for the scheme in which this name is defined.
Sample values include: 1] TEI (text encoding initiative); 2] DBK (docbook); 3] XX (unknown)</a:documentation>
        <ref name="data.enumerated"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="attDef">
    <element name="attDef">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(attribute definition) contains the definition of a single attribute.</a:documentation>
      <ref name="attDef.content"/>
      <ref name="attDef.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="attDef.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:ref name="model.glossLike"/>
      </rng:zeroOrMore>
      <rng:optional>
        <rng:ref name="datatype"/>
      </rng:optional>
      <rng:optional>
        <rng:ref name="defaultVal"/>
      </rng:optional>
      <rng:optional>
        <rng:choice>
          <rng:ref name="valList"/>
          <rng:oneOrMore>
            <rng:ref name="valDesc"/>
          </rng:oneOrMore>
        </rng:choice>
      </rng:optional>
      <rng:zeroOrMore>
        <rng:ref name="exemplum"/>
      </rng:zeroOrMore>
      <rng:zeroOrMore>
        <rng:ref name="remarks"/>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="attDef.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.identified.attributes"/>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="usage" a:defaultValue="opt">
        <a:documentation>specifies the optionality of an attribute or element. </a:documentation>
        <rng:choice>
          <rng:value>req</rng:value>
          <a:documentation>(required) </a:documentation>
          <rng:value>mwa</rng:value>
          <a:documentation>(mandatory when applicable ) </a:documentation>
          <rng:value>rec</rng:value>
          <a:documentation>(recommended ) </a:documentation>
          <rng:value>rwa</rng:value>
          <a:documentation>(recommended when applicable ) </a:documentation>
          <rng:value>opt</rng:value>
          <a:documentation>(optional ) </a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="ns" a:defaultValue="http://www.tei-c.org/ns/1.0">
        <a:documentation>(namespace) specifies the namespace to which this attribute belongs</a:documentation>
        <ref name="data.namespace"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="attList">
    <element name="attList">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">contains documentation for all the attributes associated with this element, as a series of
      attDef elements.</a:documentation>
      <ref name="attList.content"/>
      <ref name="attList.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="attList.content">
    <rng:oneOrMore>
      <rng:choice>
        <rng:ref name="attRef"/>
        <rng:ref name="attDef"/>
        <rng:ref name="attList"/>
      </rng:choice>
    </rng:oneOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="attList.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="org" a:defaultValue="group">
        <a:documentation>(organization) specifies whether all the attributes in the list are available (org="group") or only one
        of them (org="choice")</a:documentation>
        <rng:choice>
          <rng:value>group</rng:value>
          <a:documentation>grouped</a:documentation>
          <rng:value>choice</rng:value>
          <a:documentation>alternated</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="attRef">
    <element name="attRef">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(attribute pointer) points to the definition of an attribute or group of attributes.</a:documentation>
      <ref name="attRef.content"/>
      <ref name="attRef.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="attRef.content">
    <rng:empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="attRef.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:attribute name="name">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the name of the pattern defining the attribute(s)</a:documentation>
      <ref name="data.word"/>
    </rng:attribute>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="classSpec">
    <element name="classSpec">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(class specification) contains reference information for a TEI element class; 
that is a group of 
  elements which appear together in  content models, or 
  which share some common attribute, or both.</a:documentation>
      <ref name="classSpec.content"/>
      <ref name="classSpec.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="classSpec.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:ref name="model.glossLike"/>
      </rng:zeroOrMore>
      <rng:optional>
        <rng:ref name="classes"/>
      </rng:optional>
      <rng:optional>
        <rng:ref name="attList"/>
      </rng:optional>
      <rng:zeroOrMore>
        <rng:ref name="exemplum"/>
      </rng:zeroOrMore>
      <rng:zeroOrMore>
        <rng:ref name="remarks"/>
      </rng:zeroOrMore>
      <rng:zeroOrMore>
        <rng:ref name="listRef"/>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="classSpec.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.identified.attributes"/>
    <rng:attribute name="type">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates whether this is a model class or an attribute class</a:documentation>
      <rng:choice>
        <rng:value>model</rng:value>
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(content model) members of this class appear in the same  content models</a:documentation>
        <rng:value>atts</rng:value>
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(attributes) members of this class share common attributes</a:documentation>
      </rng:choice>
    </rng:attribute>
    <rng:optional>
      <rng:attribute name="generate">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates which alternation and sequence instantiations
	of a model class may be referenced. By default, all variations
	are permitted.</a:documentation>
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sorry, unable to create schema that uses actual counts minOccurs=1 and maxOccurs=5; approximating to minOccurs=1 and maxOccurs=unbounded.</a:documentation>
        <rng:list>
          <rng:choice>
            <rng:value>alternation</rng:value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class are alternatives</a:documentation>
            <rng:value>sequence</rng:value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class are to be provided in sequence</a:documentation>
            <rng:value>sequenceOptional</rng:value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class may be provided, in sequence,
	    but are optional</a:documentation>
            <rng:value>sequenceOptionalRepeatable</rng:value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class may be provided one or more
	    times, in sequence, but are optional. </a:documentation>
            <rng:value>sequenceRepeatable</rng:value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class may be provided one or more times, in sequence</a:documentation>
          </rng:choice>
          <rng:zeroOrMore>
            <rng:choice>
              <rng:value>alternation</rng:value>
              <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class are alternatives</a:documentation>
              <rng:value>sequence</rng:value>
              <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class are to be provided in sequence</a:documentation>
              <rng:value>sequenceOptional</rng:value>
              <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class may be provided, in sequence,
	    but are optional</a:documentation>
              <rng:value>sequenceOptionalRepeatable</rng:value>
              <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class may be provided one or more
	    times, in sequence, but are optional. </a:documentation>
              <rng:value>sequenceRepeatable</rng:value>
              <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class may be provided one or more times, in sequence</a:documentation>
            </rng:choice>
          </rng:zeroOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="classes">
    <element name="classes">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies all the classes of which the documented element or
class is a member or subclass.</a:documentation>
      <ref name="classes.content"/>
      <ref name="classes.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="classes.content">
    <rng:zeroOrMore>
      <rng:ref name="memberOf"/>
    </rng:zeroOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="classes.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="mode" a:defaultValue="replace">
        <a:documentation>specifies the effect of this declaration on its parent
    module.</a:documentation>
        <rng:choice>
          <rng:value>change</rng:value>
          <a:documentation>this declaration changes the declaration of the same
    name in the current definition</a:documentation>
          <rng:value>replace</rng:value>
          <a:documentation>this declaration replaces the declaration of the same
    name in the current definition</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="code">
    <element name="code">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">contains literal code from some formal language such as a
programming language.</a:documentation>
      <ref name="code.content"/>
      <ref name="code.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="code.content">
    <rng:text/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="code.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="lang">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(formal language) a name identifying the formal language in which  the
	code is expressed</a:documentation>
        <ref name="data.word"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="content">
    <element name="content">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(content model) contains the text of a declaration for the schema
documented.</a:documentation>
      <ref name="content.content"/>
      <ref name="content.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="content.content">
    <rng:zeroOrMore>
      <rng:choice>
        <rng:ref name="macro.schemaPattern"/>
        <rng:ref name="valList"/>
      </rng:choice>
    </rng:zeroOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="content.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="datatype">
    <element name="datatype">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the declared value for an attribute, by referring to
  any datatype defined by the chosen schema language.</a:documentation>
      <ref name="datatype.content"/>
      <ref name="datatype.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="datatype.content">
    <rng:zeroOrMore>
      <rng:group>
        <rng:ref name="macro.schemaPattern"/>
      </rng:group>
    </rng:zeroOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="datatype.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="minOccurs" a:defaultValue="1">
        <a:documentation>(minimum number of occurences) indicates the minimum number of times this datatype may
      occur in the specification of the attribute being defined</a:documentation>
        <ref name="data.count"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="maxOccurs" a:defaultValue="1">
        <a:documentation>(maximum number of occurences) indicates the maximum number of times this datatype may
      occur in the specification of the attribute being defined</a:documentation>
        <choice>
          <ref name="data.count"/>
          <value>unbounded</value>
        </choice>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="defaultVal">
    <element name="defaultVal">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(default value) specifies the default declared value for an attribute.</a:documentation>
      <ref name="defaultVal.content"/>
      <ref name="defaultVal.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="defaultVal.content">
    <rng:text/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="defaultVal.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="eg">
    <element name="eg">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(example) contains any kind of illustrative example. </a:documentation>
      <ref name="eg.content"/>
      <ref name="eg.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="eg.content">
    <rng:text/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="eg.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.xmlspace.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="egXML">
    <element name="egXML" ns="http://www.tei-c.org/ns/Examples">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(example of XML) contains a single well-formed XML fragment demonstrating the use of some XML element or
    attribute, in which the egXML element itself functions as the root element. </a:documentation>
      <ref name="egXML.content"/>
      <ref name="egXML.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="egXML.content">
    <rng:zeroOrMore>
      <rng:group>
        <rng:ref name="macro.anyXML"/>
      </rng:group>
    </rng:zeroOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="egXML.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.xmlspace.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="elementSpec">
    <element name="elementSpec">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(element specification) documents the structure, content, and purpose of a single element type.</a:documentation>
      <ref name="elementSpec.content"/>
      <ref name="elementSpec.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="elementSpec.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:ref name="model.glossLike"/>
      </rng:zeroOrMore>
      <rng:optional>
        <rng:ref name="classes"/>
      </rng:optional>
      <rng:optional>
        <rng:ref name="content"/>
      </rng:optional>
      <rng:optional>
        <rng:ref name="attList"/>
      </rng:optional>
      <rng:zeroOrMore>
        <rng:ref name="exemplum"/>
      </rng:zeroOrMore>
      <rng:zeroOrMore>
        <rng:ref name="remarks"/>
      </rng:zeroOrMore>
      <rng:zeroOrMore>
        <rng:ref name="listRef"/>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="elementSpec.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.identified.attributes"/>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="ns" a:defaultValue="http://www.tei-c.org/ns/1.0">
        <a:documentation>(namespace) specifies the namespace to which this element belongs</a:documentation>
        <ref name="data.namespace"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="equiv">
    <element name="equiv">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(equivalent) specifies a component which is considered equivalent to the parent element, either by
    co-reference, or by external link.</a:documentation>
      <ref name="equiv.content"/>
      <ref name="equiv.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="equiv.content">
    <rng:empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="equiv.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.internetMedia.attributes"/>
    <rng:optional>
      <rng:attribute name="name">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">names the underlying concept of which the parent is a representation</a:documentation>
        <ref name="data.name"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="uri">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(uniform resource identifier) references the underlying concept of which the parent is a representation by means of
        some external identifier</a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="filter">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">references an external script which contains a method to transform instances of this
        element to canonical TEI </a:documentation>
        <ref name="data.pointer"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="exemplum">
    <element name="exemplum">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">groups an example demonstrating the use of an element along with optional paragraphs of
    commentary.</a:documentation>
      <ref name="exemplum.content"/>
      <ref name="exemplum.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="exemplum.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:ref name="model.pLike"/>
      </rng:zeroOrMore>
      <rng:choice>
        <rng:ref name="egXML"/>
        <rng:ref name="eg"/>
      </rng:choice>
      <rng:zeroOrMore>
        <rng:ref name="model.pLike"/>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="exemplum.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.typed.attributes"/>
    <ref name="att.translatable.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="gi">
    <element name="gi">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(element name) contains the name (generic identifier) of an element.</a:documentation>
      <ref name="gi.content"/>
      <ref name="gi.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="gi.content">
    <rng:text/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="gi.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="scheme" a:defaultValue="TEI">
        <a:documentation>supplies the name of the scheme in which this name is defined.
Sample values include: 1] TEI (text encoding initiative); 2] DBK (docbook); 3] XX (unknown)</a:documentation>
        <ref name="data.enumerated"/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="ident">
    <element name="ident">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(identifier) contains an identifier or name for an object of some kind in a formal language.</a:documentation>
      <ref name="ident.content"/>
      <ref name="ident.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="ident.content">
    <rng:text/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="ident.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.typed.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="listRef">
    <element name="listRef">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(list of references) supplies a list of significant references to places where this element is discussed, in the
    current document or elsewhere.</a:documentation>
      <ref name="listRef.content"/>
      <ref name="listRef.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="listRef.content">
    <rng:oneOrMore>
      <rng:ref name="ptr"/>
    </rng:oneOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="listRef.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="macroSpec">
    <element name="macroSpec">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(macro specification) documents the function and implementation of a pattern. </a:documentation>
      <ref name="macroSpec.content"/>
      <ref name="macroSpec.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="macroSpec.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:ref name="model.glossLike"/>
      </rng:zeroOrMore>
      <rng:oneOrMore>
        <rng:choice>
          <rng:ref name="stringVal"/>
          <rng:ref name="content"/>
        </rng:choice>
      </rng:oneOrMore>
      <rng:zeroOrMore>
        <rng:ref name="exemplum"/>
      </rng:zeroOrMore>
      <rng:zeroOrMore>
        <rng:ref name="remarks"/>
      </rng:zeroOrMore>
      <rng:zeroOrMore>
        <rng:ref name="listRef"/>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="macroSpec.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.identified.attributes"/>
    <rng:optional>
      <rng:attribute name="type">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates which type of entity should be generated, when an ODD
	processor is generating a module using XML DTD syntax.</a:documentation>
        <rng:choice>
          <rng:value>pe</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(parameter entity) </a:documentation>
          <rng:value>dt</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(datatype entity) </a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="memberOf">
    <element name="memberOf">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies class membership of the parent element or class.</a:documentation>
      <ref name="memberOf.content"/>
      <ref name="memberOf.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="memberOf.content">
    <rng:ref name="macro.xtext"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="memberOf.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="key">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the identifier for a class of which the documented element or class is a
        member or subclass</a:documentation>
        <ref name="data.name"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="mode" a:defaultValue="add">
        <a:documentation>specifies the effect of this declaration on its parent module.</a:documentation>
        <rng:choice>
          <rng:value>add</rng:value>
          <a:documentation>this declaration is added to the current definitions</a:documentation>
          <rng:value>delete</rng:value>
          <a:documentation>this declaration and all of its children are removed from the current setup</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="moduleRef">
    <element name="moduleRef">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(module reference) references a module which is to be incorporated into a schema.</a:documentation>
      <ref name="moduleRef.content"/>
      <ref name="moduleRef.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="moduleRef.content">
    <rng:optional>
      <rng:ref name="content"/>
    </rng:optional>
    <s:pattern xmlns:s="http://www.ascc.net/xml/schematron" xmlns="http://www.tei-c.org/ns/1.0" name="testschemapattern">
      <s:rule context="tei:moduleRef">
        <s:report test="* and @key">
	  child elements of moduleRef are only allowed when an external module
	  is being loaded
	</s:report>
      </s:rule>
    </s:pattern>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="moduleRef.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:choice>
      <rng:optional>
        <rng:attribute name="key">
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the name of a TEI module</a:documentation>
          <data type="NCName"/>
        </rng:attribute>
      </rng:optional>
      <rng:optional>
        <rng:attribute name="url">
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(uniform resource locator) refers to a non-TEI module of RELAX NG code by external location </a:documentation>
          <ref name="data.pointer"/>
        </rng:attribute>
      </rng:optional>
    </rng:choice>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="moduleSpec">
    <element name="moduleSpec">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(module specification) documents the structure, content, and purpose of a single
module, i.e. a named and externally visible group of declarations.</a:documentation>
      <ref name="moduleSpec.content"/>
      <ref name="moduleSpec.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="moduleSpec.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:ref name="model.glossLike"/>
      </rng:zeroOrMore>
      <rng:zeroOrMore>
        <rng:ref name="exemplum"/>
      </rng:zeroOrMore>
      <rng:optional>
        <rng:ref name="remarks"/>
      </rng:optional>
      <rng:zeroOrMore>
        <rng:ref name="listRef"/>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="moduleSpec.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.identified.attributes"/>
    <rng:optional>
      <rng:attribute name="type">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">type of module to be generated</a:documentation>
        <text/>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="remarks">
    <element name="remarks">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">contains any commentary or discussion about the usage of an element, attribute, class, or
    entity not otherwise documented within the containing element.</a:documentation>
      <ref name="remarks.content"/>
      <ref name="remarks.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="remarks.content">
    <rng:oneOrMore>
      <rng:ref name="model.pLike"/>
    </rng:oneOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="remarks.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.translatable.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="schemaSpec">
    <element name="schemaSpec">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(schema specification) generates a TEI-conformant schema and documentation for it.</a:documentation>
      <ref name="schemaSpec.content"/>
      <ref name="schemaSpec.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="schemaSpec.content">
    <rng:group>
      <rng:zeroOrMore>
        <rng:ref name="model.glossLike"/>
      </rng:zeroOrMore>
      <rng:zeroOrMore>
        <rng:choice>
          <rng:ref name="moduleRef"/>
          <rng:ref name="specGrpRef"/>
          <rng:ref name="model.oddDecl"/>
        </rng:choice>
      </rng:zeroOrMore>
    </rng:group>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="schemaSpec.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.identified.attributes"/>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="start" a:defaultValue="TEI">
        <a:documentation>specifies entry points to the schema, i.e. which elements
      are allowed to be used as the root of documents conforming to
      it. </a:documentation>
        <rng:list>
          <rng:oneOrMore>
            <ref name="data.name"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="ns" a:defaultValue="http://www.tei-c.org/ns/1.0">
        <a:documentation>(namespace) specifies the default namespace (if any) applicable to
      components of the schema.</a:documentation>
        <ref name="data.namespace"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="prefix">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies a prefix which will be appended to all patterns
      relating to TEI elements. This allows for external schemas to be mixed in
      which have elements of the same names as the TEI.
      </a:documentation>
        <choice>
          <value/>
          <ref name="data.name"/>
        </choice>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="targetLang">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(target language) specifies which language to use when creating
      the objects in a schema if names for elements or attributes are available in more
      than one language, .</a:documentation>
        <ref name="data.language"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="docLang">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(documentation language) specifies which languages to
      use when creating documentation if  the description for an element, attribute, class or macro
      is available in more than one language, .</a:documentation>
        <rng:list>
          <rng:oneOrMore>
            <ref name="data.language"/>
          </rng:oneOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="specDesc">
    <element name="specDesc">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(specification description) indicates that a description of the specified element or class should be included at this
    point within a document.</a:documentation>
      <ref name="specDesc.content"/>
      <ref name="specDesc.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="specDesc.content">
    <rng:empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="specDesc.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="key">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(identifier) supplies the identifier of the documentary element or class for which a description is
        to be obtained.</a:documentation>
        <ref name="data.name"/>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute name="atts">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(attributes) supplies attribute names for which descriptions should additionally be obtained.</a:documentation>
        <rng:list>
          <rng:zeroOrMore>
            <ref name="data.name"/>
          </rng:zeroOrMore>
        </rng:list>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="specGrp">
    <element name="specGrp">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(specification group) contains any convenient grouping of specifications for use within
  the current module.</a:documentation>
      <ref name="specGrp.content"/>
      <ref name="specGrp.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="specGrp.content">
    <rng:zeroOrMore>
      <rng:choice>
        <rng:ref name="model.oddDecl"/>
        <rng:ref name="model.oddRef"/>
        <rng:ref name="model.divPart"/>
      </rng:choice>
    </rng:zeroOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="specGrp.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="specGrpRef">
    <element name="specGrpRef">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(reference to a specification group) indicates that the declarations contained by the specGrp referenced should be
    inserted at this point.</a:documentation>
      <ref name="specGrpRef.content"/>
      <ref name="specGrpRef.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="specGrpRef.content">
    <rng:empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="specGrpRef.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:attribute name="target">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">points at the specification group which logically belongs here.</a:documentation>
      <ref name="data.pointer"/>
    </rng:attribute>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="specList">
    <element name="specList">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(specification list) marks where a list of descriptions is to be inserted into the prose documentation.</a:documentation>
      <ref name="specList.content"/>
      <ref name="specList.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="specList.content">
    <rng:oneOrMore>
      <rng:ref name="specDesc"/>
    </rng:oneOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="specList.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="stringVal">
    <element name="stringVal">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">contains the intended expansion for the entity documented by a macroSpec element,
    enclosed by quotation marks.</a:documentation>
      <ref name="stringVal.content"/>
      <ref name="stringVal.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="stringVal.content">
    <rng:text/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="stringVal.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="tag">
    <element name="tag">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">contains text of a complete start- or end-tag, possibly including attribute specifications,
    but excluding the opening and closing markup delimiter characters.</a:documentation>
      <ref name="tag.content"/>
      <ref name="tag.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="tag.content">
    <rng:text/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="tag.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute name="type">
        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the type of XML tag intended</a:documentation>
        <rng:choice>
          <rng:value>start</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a start-tag, with delimiters &lt; and &gt; is intended</a:documentation>
          <rng:value>end</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">an end-tag, with delimiters &lt;/ and &gt; is intended</a:documentation>
          <rng:value>empty</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a empty tag, with delimiters &lt; and /&gt; is intended</a:documentation>
          <rng:value>pi</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a pi (processing instruction), with delimiters &lt;? and ?&gt; is intended</a:documentation>
          <rng:value>comment</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a comment, with delimiters &lt;!-- and --&gt; is intended</a:documentation>
          <rng:value>ms</rng:value>
          <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a marked-section, with delimiters &lt;[CDATA[ and ]]&gt; is intended</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="scheme" a:defaultValue="TEI">
        <a:documentation>supplies the name of the schema in which this tag is defined.</a:documentation>
        <rng:choice>
          <rng:value>TEI</rng:value>
          <a:documentation>(text encoding initiative) This tag is defined as part of the TEI scheme.</a:documentation>
          <rng:value>DBK</rng:value>
          <a:documentation>(docbook) this tag is part of the Docbook scheme.</a:documentation>
          <rng:value>XX</rng:value>
          <a:documentation>(unknown) this tag is part of an unknown scheme.</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="val">
    <element name="val">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(value) contains a single attribute value.</a:documentation>
      <ref name="val.content"/>
      <ref name="val.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="val.content">
    <rng:text/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="val.localattributes">
    <rng:ref name="att.global.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="valDesc">
    <element name="valDesc">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(value description) specifies any semantic or syntactic constraint on the value that
an attribute may take, additional to the information carried by the
datatype element.</a:documentation>
      <ref name="valDesc.content"/>
      <ref name="valDesc.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="valDesc.content">
    <rng:ref name="macro.phraseSeq.limited"/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="valDesc.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.translatable.attributes"/>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="mode" a:defaultValue="add">
        <a:documentation>specifies the effect of this declaration on its parent module.</a:documentation>
        <rng:choice>
          <rng:value>add</rng:value>
          <a:documentation>this declaration is added to the current definitions</a:documentation>
          <rng:value>delete</rng:value>
          <a:documentation>this declaration and all of its children are removed from the current setup</a:documentation>
          <rng:value>change</rng:value>
          <a:documentation>this declaration changes the declaration of the same
	 name in the current definition</a:documentation>
          <rng:value>replace</rng:value>
          <a:documentation>this declaration replaces the declaration of the same
	name in the current definition</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="valItem">
    <element name="valItem">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">documents a single attribute-value within a list of possible
  or mandatory items.</a:documentation>
      <ref name="valItem.content"/>
      <ref name="valItem.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="valItem.content">
    <rng:zeroOrMore>
      <rng:ref name="model.glossLike"/>
    </rng:zeroOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="valItem.localattributes">
    <rng:ref name="att.global.attributes"/>
    <ref name="att.identified.attributes"/>
    <empty/>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="valList">
    <element name="valList">
      <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(value list) contains one or more valItem elements defining possible values for an attribute.</a:documentation>
      <ref name="valList.content"/>
      <ref name="valList.localattributes"/>
    </element>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="valList.content">
    <rng:zeroOrMore>
      <rng:ref name="valItem"/>
    </rng:zeroOrMore>
  </define>
  <define xmlns="http://relaxng.org/ns/structure/1.0" name="valList.localattributes">
    <rng:ref name="att.global.attributes"/>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="mode" a:defaultValue="add">
        <a:documentation>specifies the effect of this declaration on its parent module.</a:documentation>
        <rng:choice>
          <rng:value>add</rng:value>
          <a:documentation>this declaration is added to the current definitions</a:documentation>
          <rng:value>delete</rng:value>
          <a:documentation>this declaration and all of its children are removed from the current setup</a:documentation>
          <rng:value>change</rng:value>
          <a:documentation>this declaration changes the declaration of the same name in the current definition</a:documentation>
          <rng:value>replace</rng:value>
          <a:documentation>this declaration replaces the declaration of the same name in the current definition</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <rng:optional>
      <rng:attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="type" a:defaultValue="open">
        <a:documentation>specifies the extensibility of the list of attribute values specified. </a:documentation>
        <rng:choice>
          <rng:value>closed</rng:value>
          <a:documentation>only the values specified are permitted.</a:documentation>
          <rng:value>semi</rng:value>
          <a:documentation>(semi-open) all the values specified should be supported, but other values are legal and
            software should have appropriate fallback processing for them. </a:documentation>
          <rng:value>open</rng:value>
          <a:documentation>the values specified are sample values only.</a:documentation>
        </rng:choice>
      </rng:attribute>
    </rng:optional>
    <empty/>
  </define>
  <!--3. macros-->
</rng:grammar>
