<?xml version="1.0" encoding="utf-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
         xmlns:tei="http://www.tei-c.org/ns/1.0"
         xmlns:teix="http://www.tei-c.org/ns/Examples"
         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"><!--Schema generated 2016-03-30T02:04:41Z
Edition: Version 3.0.0. Last updated on
	29th March 2016, revision 89ba24e
This material is dual-licensed.
[http://creativecommons.org/licenses/by/3.0/] Distributed under a Creative Commons Attribution 3.0 Unported License.  [http://www.opensource.org/licenses/BSD-2-Clause] Copyright 2016 TEI Consortium. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright holder or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. TEI material can be licensed differently depending on the use you intend to make of it. Hence it is made available under both the CC+BY and BSD-2 licences. The CC+BY licence is generally appropriate for usages which treat TEI content as data or documentation. The BSD-2 licence is generally appropriate for usage of TEI content in a software environment. For further information or clarification, please contact the TEI Consortium. Documentation of TEI modules--><!--Definitions from module tagdocs--><!--Set global predeclared macros--><!--Set predeclared macros--><!--0. predeclared macros--><!--1. classes-->
   <define name="att.repeatable.attributes">
      <ref name="att.repeatable.attribute.context"/>
      <ref name="att.repeatable.attribute.minOccurs"/>
      <ref name="att.repeatable.attribute.maxOccurs"/>
   </define>
   <define name="att.repeatable.attribute.context">
      <optional>
         <attribute name="context">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies an XPath identifying a context within which this component of a content model must be found</a:documentation>
            <text/>
         </attribute>
      </optional>
   </define>
   <define name="att.repeatable.attribute.minOccurs">
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                    name="minOccurs"
                    a:defaultValue="1">
            <a:documentation>(minimum number of occurences) indicates the smallest number of times this component may occur.</a:documentation>
            <data type="nonNegativeInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="att.repeatable.attribute.maxOccurs">
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                    name="maxOccurs"
                    a:defaultValue="1">
            <a:documentation>(maximum number of occurences) indicates the largest number of times this component may occur.</a:documentation>
            <choice>
               <data type="nonNegativeInteger"/>
               <choice>
                  <value>unbounded</value>
                  <a:documentation/>
               </choice>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="model.contentPart">
      <choice>
         <ref name="classRef"/>
         <ref name="elementRef"/>
         <ref name="macroRef"/>
         <ref name="sequence"/>
         <ref name="alternate"/>
         <ref name="dataRef"/>
         <ref name="valList"/>
         <ref name="textNode"/>
      </choice>
   </define>
   <define name="model.contentPart_alternation">
      <choice>
         <ref name="classRef"/>
         <ref name="elementRef"/>
         <ref name="macroRef"/>
         <ref name="sequence"/>
         <ref name="alternate"/>
         <ref name="dataRef"/>
         <ref name="valList"/>
         <ref name="textNode"/>
      </choice>
   </define>
   <define name="model.contentPart_sequence">
      <ref name="classRef"/>
      <ref name="elementRef"/>
      <ref name="macroRef"/>
      <ref name="sequence"/>
      <ref name="alternate"/>
      <ref name="dataRef"/>
      <ref name="valList"/>
      <ref name="textNode"/>
   </define>
   <define name="model.contentPart_sequenceOptional">
      <optional>
         <ref name="classRef"/>
      </optional>
      <optional>
         <ref name="elementRef"/>
      </optional>
      <optional>
         <ref name="macroRef"/>
      </optional>
      <optional>
         <ref name="sequence"/>
      </optional>
      <optional>
         <ref name="alternate"/>
      </optional>
      <optional>
         <ref name="dataRef"/>
      </optional>
      <optional>
         <ref name="valList"/>
      </optional>
      <optional>
         <ref name="textNode"/>
      </optional>
   </define>
   <define name="model.contentPart_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="classRef"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="elementRef"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="macroRef"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="sequence"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="alternate"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="dataRef"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="valList"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="textNode"/>
      </zeroOrMore>
   </define>
   <define name="model.contentPart_sequenceRepeatable">
      <oneOrMore>
         <ref name="classRef"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="elementRef"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="macroRef"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="sequence"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="alternate"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="dataRef"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="valList"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="textNode"/>
      </oneOrMore>
   </define>
   <define name="att.combinable.attributes">
      <ref name="att.deprecated.attributes"/>
      <ref name="att.combinable.attribute.mode"/>
   </define>
   <define name="att.combinable.attribute.mode">
      <optional>
         <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 object.</a:documentation>
            <choice>
               <value>add</value>
               <a:documentation>this declaration is added to the current definitions</a:documentation>
               <value>delete</value>
               <a:documentation>if present already, the whole of the declaration for this object is removed from the current setup</a:documentation>
               <value>change</value>
               <a:documentation>this declaration changes the declaration of the same name in the current definition</a:documentation>
               <value>replace</value>
               <a:documentation>this declaration replaces the declaration of the same name in the current definition</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="att.identified.attributes">
      <ref name="att.combinable.attributes"/>
      <ref name="att.identified.attribute.ident"/>
      <ref name="att.identified.attribute.predeclare"/>
      <ref name="att.identified.attribute.module"/>
   </define>
   <define name="att.identified.attribute.ident">
      <attribute name="ident">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies the identifier by which this element may be referenced.</a:documentation>
         <data type="Name"/>
      </attribute>
   </define>
   <define name="att.identified.attribute.predeclare">
      <optional>
         <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"/>
         </attribute>
      </optional>
   </define>
   <define name="att.identified.attribute.module">
      <optional>
         <attribute name="module">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies a name for the module in which this object is to be declared.</a:documentation>
            <data type="NCName"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="att.identified-spec-in-module-constraint-17">
      <rule xmlns:s="http://www.ascc.net/xml/schematron"
            xmlns:sch="http://purl.oclc.org/dsdl/schematron"
            xmlns:rng="http://relaxng.org/ns/structure/1.0"
            context="tei:elementSpec[@module]|tei:classSpec[@module]|tei:macroSpec[@module]">
        <assert test="         (not(ancestor::tei:schemaSpec | ancestor::tei:TEI | ancestor::tei:teiCorpus)) or         (not(@module) or          (not(//tei:moduleSpec) and not(//tei:moduleRef))  or         (//tei:moduleSpec[@ident = current()/@module]) or          (//tei:moduleRef[@key = current()/@module]))         ">
        Specification <value-of select="@ident"/>: the value of the module attribute ("<value-of select="@module"/>") 
should correspond to an existing module, via a moduleSpec or
      moduleRef</assert>
      </rule>
   </pattern>
   <define name="att.deprecated.attributes">
      <ref name="att.deprecated.attribute.validUntil"/>
   </define>
   <define name="att.deprecated.attribute.validUntil">
      <optional>
         <attribute name="validUntil">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides a date before which the construct being defined will not be removed.</a:documentation>
            <data type="date"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="att.deprecated-validUntil-deprecated-constraint-18">
      <sch:rule xmlns:s="http://www.ascc.net/xml/schematron"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:rng="http://relaxng.org/ns/structure/1.0"
                xmlns="http://www.tei-c.org/ns/1.0"
                context="tei:*[@validUntil]">
            <sch:assert test="@validUntil cast as xs:date ge          current-date()">
            <sch:value-of select="if          (@ident) then concat('The ',@ident) else          concat('This ',local-name(.),' of          ',ancestor::tei:*[@ident][1]/@ident)"/>
	    construct is outdated (as of <sch:value-of select="@validUntil"/>); ODD processors may ignore it, and its use is no longer supported</sch:assert>
            <sch:assert role="nonfatal"
                     test="@validUntil cast as xs:date ge          (current-date() + (60*xs:dayTimeDuration('P1D')))">
            <sch:value-of select="if (@ident) then concat('The ',@ident) else concat('This ',local-name(.),' of ',ancestor::tei:*[@ident][1]/@ident)"/>  construct becomes outdated on <sch:value-of select="@validUntil"/>
         </sch:assert>
          </sch:rule>
   </pattern>
   <define name="att.namespaceable.attributes">
      <ref name="att.namespaceable.attribute.ns"/>
   </define>
   <define name="att.namespaceable.attribute.ns">
      <optional>
         <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>
            <data type="anyURI"/>
         </attribute>
      </optional>
   </define>
   <!--2. elements-->
   <define 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 name="altIdent.content">
      <text/>
   </define>
   <define name="altIdent.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.typed.attributes"/>
      <empty/>
   </define>
   <define name="alternate">
      <element name="alternate">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">an alternation of references</a:documentation>
         <ref name="alternate.content"/>
         <ref name="alternate.localattributes"/>
      </element>
   </define>
   <define name="alternate.content">
      <oneOrMore>
         <ref name="model.contentPart"/>
      </oneOrMore>
      <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
               id="alternate-alternatechilden-constraint-23">
         <rule context="tei:alternate">
            <sch:assert xmlns:s="http://www.ascc.net/xml/schematron"
                        xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                        xmlns:rng="http://relaxng.org/ns/structure/1.0"
                        xmlns="http://www.tei-c.org/ns/1.0"
                        test="count(*)&gt;1">The alternate element must have at least two child elements</sch:assert>
         </rule>
      </pattern>
   </define>
   <define name="alternate.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.repeatable.attributes"/>
      <empty/>
   </define>
   <define 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 name="att.content">
      <ref name="data.name"/>
   </define>
   <define name="att.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <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) ; 4] imaginary; 5] XHTML; 6] XML; 7] XI</a:documentation>
            <data type="token">
               <param name="pattern">(\p{L}|\p{N}|\p{P}|\p{S})+</param>
            </data>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define 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 name="attDef.content">
      <group>
      
	        <zeroOrMore>
            <choice>
	              <ref name="model.glossLike"/>
	              <ref name="model.descLike"/>
	           </choice>
         </zeroOrMore>
      
      
	        <optional>
            <ref name="datatype"/>
         </optional>
      
      
	        <zeroOrMore>
            <ref name="constraintSpec"/>
         </zeroOrMore>
      
      
	        <optional>
            <ref name="defaultVal"/>
         </optional>
      
      
	        <optional>
            <choice>
	              <ref name="valList"/>
	  
	              <oneOrMore>
                  <ref name="valDesc"/>
               </oneOrMore>
	  
	           </choice>
         </optional>
      
      
	        <zeroOrMore>
            <ref name="exemplum"/>
         </zeroOrMore>
      
      
	        <zeroOrMore>
            <ref name="remarks"/>
         </zeroOrMore>
      
      </group>
      <ns xmlns="http://purl.oclc.org/dsdl/schematron"
          prefix="teix"
          uri="http://www.tei-c.org/ns/Examples"/>
      <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
               id="attDef-attDefContents-constraint-26">
         <rule context="tei:attDef">
            <assert xmlns:s="http://www.ascc.net/xml/schematron"
                    xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                    xmlns:rng="http://relaxng.org/ns/structure/1.0"
                    test="ancestor::teix:egXML[@valid='feasible'] or @mode eq 'change' or @mode eq 'delete' or tei:datatype or tei:valList[@type='closed']">Attribute: the definition of the @<value-of select="@ident"/> attribute in the <value-of select="ancestor::*[@ident][1]/@ident"/>
               <value-of select="' '"/>
               <value-of select="local-name(ancestor::*[@ident][1])"/> should have a closed valList or a datatype</assert>
         </rule>
      </pattern>
      <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
               id="attDef-noDefault4Required-constraint-14">
         <sch:rule xmlns:s="http://www.ascc.net/xml/schematron"
                   xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                   xmlns:rng="http://relaxng.org/ns/structure/1.0"
                   xmlns="http://www.tei-c.org/ns/1.0"
                   context="tei:attDef[@usage eq 'req']">
	           <sch:report test="tei:defaultVal">It does not make sense to make "<sch:value-of select="normalize-space(tei:defaultVal)"/>" the default value of @<sch:value-of select="@ident"/>, because that attribute is required.</sch:report>
         </sch:rule>
      </pattern>
      <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
               id="attDef-defaultIsInClosedList-twoOrMore-constraint-15">
         <sch:rule xmlns:s="http://www.ascc.net/xml/schematron"
                   xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                   xmlns:rng="http://relaxng.org/ns/structure/1.0"
                   xmlns="http://www.tei-c.org/ns/1.0"
                   context="tei:attDef[   tei:defaultVal   and   tei:valList[@type eq 'closed']   and   tei:datatype[    @maxOccurs &gt; 1    or    @minOccurs &gt; 1    or    @maxOccurs = 'unbounded'    ]   ]">
	           <sch:assert test="     tokenize(normalize-space(tei:defaultVal),' ')     =     tei:valList/tei:valItem/@ident">In the <sch:value-of select="local-name(ancestor::*[@ident][1])"/> defining
	<sch:value-of select="ancestor::*[@ident][1]/@ident"/> the default value of the
	@<sch:value-of select="@ident"/> attribute is not among the closed list of possible
	values</sch:assert>
         </sch:rule>
      </pattern>
      <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
               id="attDef-defaultIsInClosedList-one-constraint-16">
         <sch:rule xmlns:s="http://www.ascc.net/xml/schematron"
                   xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                   xmlns:rng="http://relaxng.org/ns/structure/1.0"
                   xmlns="http://www.tei-c.org/ns/1.0"
                   context="tei:attDef[   tei:defaultVal   and   tei:valList[@type eq 'closed']   and   tei:datatype[    not(@maxOccurs)    or (    if ( @maxOccurs castable as xs:integer )     then ( @maxOccurs cast as xs:integer eq 1 )     else false()    )]   ]">
	           <sch:assert test="string(tei:defaultVal)      =      tei:valList/tei:valItem/@ident">In the <sch:value-of select="local-name(ancestor::*[@ident][1])"/> defining
	<sch:value-of select="ancestor::*[@ident][1]/@ident"/> the default value of the
	@<sch:value-of select="@ident"/> attribute is not among the closed list of possible
	values</sch:assert>
         </sch:rule>
      </pattern>
   </define>
   <define name="attDef.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.identified.attributes"/>
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                    name="usage"
                    a:defaultValue="opt">
            <a:documentation>specifies the optionality of the attribute.</a:documentation>
            <choice>
               <value>req</value>
               <a:documentation>(required) </a:documentation>
               <value>rec</value>
               <a:documentation>(recommended ) </a:documentation>
               <value>opt</value>
               <a:documentation>(optional ) </a:documentation>
            </choice>
         </attribute>
      </optional>
      <optional>
         <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>
            <data type="anyURI"/>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define 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 name="attList.content">
      <oneOrMore>
         <choice>
            <ref name="attRef"/>
            <ref name="attDef"/>
            <ref name="attList"/>
         </choice>
      </oneOrMore>
   </define>
   <define name="attList.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <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>
            <choice>
               <value>group</value>
               <a:documentation>grouped</a:documentation>
               <value>choice</value>
               <a:documentation>alternated</a:documentation>
            </choice>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define 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 name="attRef.content">
      <empty/>
   </define>
   <define name="attRef.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <attribute name="class">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the name of the attribute class</a:documentation>
            <data type="token">
               <param name="pattern">(\p{L}|\p{N}|\p{P}|\p{S})+</param>
            </data>
         </attribute>
      </optional>
      <optional>
         <attribute name="name">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the name of the attribute</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define name="classRef">
      <element name="classRef">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">points to the specification for an attribute or model class which is to be included in a schema []</a:documentation>
         <ref name="classRef.content"/>
         <ref name="classRef.localattributes"/>
      </element>
   </define>
   <define name="classRef.content">
      <empty/>
   </define>
   <define name="classRef.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.repeatable.attributes"/>
      <ref name="att.readFrom.attributes"/>
      <attribute name="key">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the identifier used for the required class within the source indicated.</a:documentation>
         <data type="NCName"/>
      </attribute>
      <optional>
         <attribute name="expand">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates how references to this class within a content model should be interpreted.</a:documentation>
            <choice>
               <value>alternate</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">any one member of the class may appear</a:documentation>
               <value>sequence</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a single occurrence of all members of the class may appear in sequence</a:documentation>
               <value>sequenceOptional</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a single occurrence of one or more members of the class may appear in sequence </a:documentation>
               <value>sequenceOptionalRepeatable</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">one or more occurrences of one or more members of the class may appear in sequence. </a:documentation>
               <value>sequenceRepeatable</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">one or more occurrences of all members of the class may appear in sequence</a:documentation>
            </choice>
         </attribute>
      </optional>
      <choice>
         <optional>
            <attribute name="include">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies a list of class members which are to be included in the schema being defined.</a:documentation>
               <list>
                  <zeroOrMore>
                     <data type="NCName"/>
                  </zeroOrMore>
               </list>
            </attribute>
         </optional>
         <optional>
            <attribute name="except">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies a list of class members which are to be excluded from the schema being defined.</a:documentation>
               <list>
                  <zeroOrMore>
                     <data type="NCName"/>
                  </zeroOrMore>
               </list>
            </attribute>
         </optional>
      </choice>
      <empty/>
   </define>
   <define 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 name="classSpec.content">
      <group>
      
        <zeroOrMore>
            <choice>
               <ref name="model.glossLike"/>
               <ref name="model.descLike"/>
            </choice>
         </zeroOrMore>
      
      
        <optional>
            <ref name="classes"/>
         </optional>
      
      
        <zeroOrMore>
            <ref name="constraintSpec"/>
         </zeroOrMore>
      
      
        <optional>
            <ref name="attList"/>
         </optional>
      
      
        <zeroOrMore>
            <ref name="exemplum"/>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <ref name="remarks"/>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <ref name="listRef"/>
         </zeroOrMore>
      
      </group>
   </define>
   <define name="classSpec.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.identified.attributes"/>
      <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>
         <choice>
            <value>model</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>
            <value>atts</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(attributes) members of this class share common attributes</a:documentation>
         </choice>
      </attribute>
      <optional>
         <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>
            <list>
               <choice>
                  <value>alternation</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class are alternatives</a:documentation>
                  <value>sequence</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>
                  <value>sequenceOptional</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>
                  <value>sequenceOptionalRepeatable</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>
                  <value>sequenceRepeatable</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>
               </choice>
               <optional>
                  <choice>
                     <value>alternation</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class are alternatives</a:documentation>
                     <value>sequence</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>
                     <value>sequenceOptional</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>
                     <value>sequenceOptionalRepeatable</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>
                     <value>sequenceRepeatable</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>
                  </choice>
               </optional>
               <optional>
                  <choice>
                     <value>alternation</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class are alternatives</a:documentation>
                     <value>sequence</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>
                     <value>sequenceOptional</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>
                     <value>sequenceOptionalRepeatable</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>
                     <value>sequenceRepeatable</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>
                  </choice>
               </optional>
               <optional>
                  <choice>
                     <value>alternation</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class are alternatives</a:documentation>
                     <value>sequence</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>
                     <value>sequenceOptional</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>
                     <value>sequenceOptionalRepeatable</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>
                     <value>sequenceRepeatable</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>
                  </choice>
               </optional>
               <optional>
                  <choice>
                     <value>alternation</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">members of the class are alternatives</a:documentation>
                     <value>sequence</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>
                     <value>sequenceOptional</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>
                     <value>sequenceOptionalRepeatable</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>
                     <value>sequenceRepeatable</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>
                  </choice>
               </optional>
            </list>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define 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 name="classes.content">
      <zeroOrMore>
         <ref name="memberOf"/>
      </zeroOrMore>
   </define>
   <define name="classes.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <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>
            <choice>
               <value>change</value>
               <a:documentation>this declaration changes the declaration of the same name in the current definition</a:documentation>
               <value>replace</value>
               <a:documentation>this declaration replaces the declaration of the same name in the current definition</a:documentation>
            </choice>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define 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 name="code.content">
      <text/>
   </define>
   <define name="code.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <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>
            <data type="token">
               <param name="pattern">(\p{L}|\p{N}|\p{P}|\p{S})+</param>
            </data>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define name="constraint">
      <element name="constraint">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(constraint rules) the formal rules of a constraint []</a:documentation>
         <ref name="constraint.content"/>
         <ref name="constraint.localattributes"/>
      </element>
   </define>
   <define name="constraint.content">
      <zeroOrMore>
         <choice>
            <text/>
            <ref name="macro.anyXML"/>
         </choice>
      </zeroOrMore>
   </define>
   <define name="constraint.localattributes">
      <ref name="att.global.attributes"/>
      <empty/>
   </define>
   <define name="constraintSpec">
      <element name="constraintSpec">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(constraint on schema) contains a constraint, expressed in some formal syntax, which cannot be expressed in the structural content model []</a:documentation>
         <ref name="constraintSpec.content"/>
         <ref name="constraintSpec.localattributes"/>
      </element>
   </define>
   <define name="constraintSpec.content">
      <group>
         <zeroOrMore>
            <choice>
               <ref name="model.glossLike"/>
               <ref name="model.descLike"/>
            </choice>
         </zeroOrMore>
         <optional>
            <ref name="constraint"/>
         </optional>
      </group>
      <ns xmlns="http://purl.oclc.org/dsdl/schematron"
          prefix="s"
          uri="http://www.ascc.net/xml/schematron"/>
      <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
               id="constraintSpec-sch-constraint-33">
         <rule context="tei:constraintSpec">
            <sch:report xmlns:s="http://www.ascc.net/xml/schematron"
                        xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                        xmlns:rng="http://relaxng.org/ns/structure/1.0"
                        xmlns="http://www.tei-c.org/ns/1.0"
                        test="tei:constraint/s:*  and  @scheme ne 'schematron'">Rules in the Schematron 1.* language must be inside a constraintSpec with a value of 'schematron' on the scheme attribute</sch:report>
         </rule>
      </pattern>
      <ns xmlns="http://purl.oclc.org/dsdl/schematron"
          prefix="sch"
          uri="http://purl.oclc.org/dsdl/schematron"/>
      <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
               id="constraintSpec-isosch-constraint-34">
         <rule context="tei:constraintSpec">
            <sch:report xmlns:s="http://www.ascc.net/xml/schematron"
                        xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                        xmlns:rng="http://relaxng.org/ns/structure/1.0"
                        xmlns="http://www.tei-c.org/ns/1.0"
                        test="tei:constraint/sch:*  and  @scheme ne 'isoschematron'">Rules in the ISO Schematron language must be inside a constraintSpec with a value of 'isoschematron' on the scheme attribute</sch:report>
         </rule>
      </pattern>
      <ns xmlns="http://purl.oclc.org/dsdl/schematron"
          prefix="sch"
          uri="http://purl.oclc.org/dsdl/schematron"/>
      <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
               id="constraintSpec-needrules-constraint-13">
         <sch:rule xmlns:s="http://www.ascc.net/xml/schematron"
                   xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                   xmlns:rng="http://relaxng.org/ns/structure/1.0"
                   xmlns="http://www.tei-c.org/ns/1.0"
                   context="tei:macroSpec/tei:constraintSpec[@scheme='isoschematron']/tei:constraint">
	           <sch:report test="sch:assert|sch:report">An ISO Schematron constraint specification for a macro should not have an 'assert' or 'report' element without a parent 'rule' element</sch:report>
         </sch:rule>
      </pattern>
   </define>
   <define name="constraintSpec.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.identified.attributes"/>
      <ref name="att.typed.attributes"/>
      <attribute name="scheme">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies the name of the language in which the constraints are defined
Suggested values include: 1] schematron(Schematron) ; 2] isoschematron(ISO Schematron) </a:documentation>
         <choice>
            <value>schematron</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(Schematron) </a:documentation>
            <value>isoschematron</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(ISO Schematron) </a:documentation>
            <data type="token">
               <param name="pattern">(\p{L}|\p{N}|\p{P}|\p{S})+</param>
            </data>
         </choice>
      </attribute>
      <empty/>
   </define>
   <define 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 name="content.content">
      <oneOrMore>
         <choice>
      
	           <ref name="macro.anyXML"/>
	           <ref name="model.contentPart"/>
         </choice>
      </oneOrMore>
   </define>
   <define name="content.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                    name="autoPrefix"
                    a:defaultValue="true">
            <a:documentation>controls whether or not pattern names generated in the corresponding Relax NG schema source are automatically prefixed to avoid potential nameclashes.</a:documentation>
            <choice>
               <value>true</value>
               <a:documentation>Each name referenced in e.g. a rng:ref element within a content model is automatically prefixed by the value of the prefix attribute on the current schemaSpec</a:documentation>
               <value>false</value>
               <a:documentation>No prefixes are added: any prefix required by the value of the prefix attribute on the current schemaSpec must therefore be supplied explicitly, as appropriate.</a:documentation>
            </choice>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define name="dataRef">
      <element name="dataRef">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">identifies the datatype of an attribute value, either by referencing an item in an externally defined datatype library, or by pointing to a TEI-defined data specification []</a:documentation>
         <ref name="dataRef.content"/>
         <ref name="dataRef.localattributes"/>
      </element>
   </define>
   <define name="dataRef.content">
      <empty/>
   </define>
   <define name="dataRef.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.readFrom.attributes"/>
      <choice>
         <optional>
            <attribute name="key">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the identifier used for this datatype specification</a:documentation>
               <data type="NCName"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="name">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the name of a datatype in the list provided by XML Schemas: Part 2: Datatypes</a:documentation>
               <data type="NCName"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="ref">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a pointer to a datatype defined in some datatype library</a:documentation>
               <data type="NCName"/>
            </attribute>
         </optional>
      </choice>
      <optional>
         <attribute name="restriction">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies a string representing a regular expression providing additional constraints on the strings used to represent values of this datatype</a:documentation>
            <data type="token"/>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define name="dataSpec">
      <element name="dataSpec">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(datatype specification) documents a datatype. [ ]</a:documentation>
         <ref name="dataSpec.content"/>
         <ref name="dataSpec.localattributes"/>
      </element>
   </define>
   <define name="dataSpec.content">
      <group>
         <zeroOrMore>
            <choice>
               <ref name="model.glossLike"/>
               <ref name="model.descLike"/>
            </choice>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <choice>
               <ref name="content"/> 
               <ref name="valList"/> 
            </choice>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <ref name="constraintSpec"/>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <ref name="exemplum"/>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <ref name="remarks"/>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <ref name="listRef"/>
         </zeroOrMore>
      
      </group>
   </define>
   <define name="dataSpec.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.identified.attributes"/>
      <empty/>
   </define>
   <define 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 name="datatype.content">
      <choice>
         <ref name="textNode"/>
         <ref name="dataRef"/>
        <ref name="macro.schemaPattern"/>
      </choice>
   </define>
   <define name="datatype.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <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>
            <data type="nonNegativeInteger"/>
         </attribute>
      </optional>
      <optional>
         <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>
               <data type="nonNegativeInteger"/>
               <choice>
                  <value>unbounded</value>
                  <a:documentation/>
               </choice>
            </choice>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define 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 name="defaultVal.content">
      <text/>
   </define>
   <define name="defaultVal.localattributes">
      <ref name="att.global.attributes"/>
      <empty/>
   </define>
   <define 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 name="eg.content">
      <ref name="macro.phraseSeq"/>
   </define>
   <define name="eg.localattributes">
      <ref name="att.global.attributes"/>
      <empty/>
   </define>
   <define 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 name="egXML.content">
      <zeroOrMore>
         <choice>
            <text/>
            <ref name="macro.anyXML"/>
        </choice>
      </zeroOrMore>
   </define>
   <define name="egXML.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.source.attributes"/>
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                    name="valid"
                    a:defaultValue="true">
            <a:documentation>indicates the intended validity of the example with respect to a schema.</a:documentation>
            <choice>
               <value>true</value>
               <a:documentation>the example is intended to be fully valid, assuming that its root element, or a provided root element, could have been used as a possible root element in the schema concerned.</a:documentation>
               <value>feasible</value>
               <a:documentation>the example could be transformed into a valid document by inserting any number of valid attributes and child elements anywhere within it; or it is valid against a version of the schema concerned in which the provision of character data, list, element, or attribute values has been made optional.</a:documentation>
               <value>false</value>
               <a:documentation>the example is not intended to be valid, and contains deliberate errors.</a:documentation>
            </choice>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define name="elementRef">
      <element name="elementRef">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">points to the specification for some element which is to be included in a schema []</a:documentation>
         <ref name="elementRef.content"/>
         <ref name="elementRef.localattributes"/>
      </element>
   </define>
   <define name="elementRef.content">
      <empty/>
   </define>
   <define name="elementRef.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.repeatable.attributes"/>
      <ref name="att.readFrom.attributes"/>
      <attribute name="key">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the identifier used for the required element within the source indicated.</a:documentation>
         <data type="NCName"/>
      </attribute>
      <empty/>
   </define>
   <define 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 name="elementSpec.content">
      <group>
         <zeroOrMore>
            <choice>
               <ref name="model.glossLike"/>
               <ref name="model.descLike"/>
            </choice>
         </zeroOrMore>
         <optional>
            <ref name="classes"/>
         </optional>
         <optional>
            <ref name="content"/>
         </optional>
         <optional>
            <ref name="valList"/>
         </optional>
         <zeroOrMore>
            <ref name="constraintSpec"/>
         </zeroOrMore>
         <optional>
            <ref name="attList"/>
         </optional>
         <zeroOrMore>
            <choice>
               <ref name="model"/>
               <ref name="modelGrp"/>
               <ref name="modelSequence"/>
            </choice>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="exemplum"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="remarks"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="listRef"/>
         </zeroOrMore>
      </group>
   </define>
   <define name="elementSpec.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.identified.attributes"/>
      <ref name="att.namespaceable.attributes"/>
      <optional>
         <attribute name="prefix">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies a default prefix which will be prepended to all patterns relating to the element, unless otherwise stated.</a:documentation>
            <data type="NCName"/>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define 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 name="equiv.content">
      <empty/>
   </define>
   <define name="equiv.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.internetMedia.attributes"/>
      <optional>
         <attribute name="name">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a single word which follows the rules defining a legal XML name (see ), naming the underlying concept of which the parent is a representation.</a:documentation>
            <data type="Name"/>
         </attribute>
      </optional>
      <optional>
         <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>
            <data type="anyURI"/>
         </attribute>
      </optional>
      <optional>
         <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>
            <data type="anyURI"/>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define 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 name="exemplum.content">
      <group>
      
        <zeroOrMore>
            <ref name="model.pLike"/>
         </zeroOrMore>
      
         <choice>
            <ref name="egXML"/>
            <ref name="eg"/>
         </choice>
      
        <zeroOrMore>
            <ref name="model.pLike"/>
         </zeroOrMore>
      
      </group>
   </define>
   <define name="exemplum.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.typed.attributes"/>
      <ref name="att.translatable.attributes"/>
      <empty/>
   </define>
   <define 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 name="gi.content">
      <ref name="data.name"/>
   </define>
   <define name="gi.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <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; 2] DBK(docbook) ; 3] XX(unknown) ; 4] Schematron; 5] HTML</a:documentation>
            <data type="token">
               <param name="pattern">(\p{L}|\p{N}|\p{P}|\p{S})+</param>
            </data>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define 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. ident is used for tokens such as variable names, class names, type names, function names etc. in formal programming languages. []</a:documentation>
         <ref name="ident.content"/>
         <ref name="ident.localattributes"/>
      </element>
   </define>
   <define name="ident.content">
      <text/>
   </define>
   <define name="ident.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.typed.attributes"/>
      <empty/>
   </define>
   <define 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 name="listRef.content">
      <oneOrMore>
         <ref name="ptr"/>
      </oneOrMore>
   </define>
   <define name="listRef.localattributes">
      <ref name="att.global.attributes"/>
      <empty/>
   </define>
   <define name="macroRef">
      <element name="macroRef">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">points to the specification for some pattern which is to be included in a schema []</a:documentation>
         <ref name="macroRef.content"/>
         <ref name="macroRef.localattributes"/>
      </element>
   </define>
   <define name="macroRef.content">
      <empty/>
   </define>
   <define name="macroRef.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.readFrom.attributes"/>
      <attribute name="key">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the identifier used for the required pattern within the source indicated.</a:documentation>
         <data type="NCName"/>
      </attribute>
      <empty/>
   </define>
   <define 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 name="macroSpec.content">
      <group>
      
        <zeroOrMore>
            <choice>
               <ref name="model.glossLike"/>
               <ref name="model.descLike"/>
            </choice>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <choice>
               <ref name="content"/>
               <ref name="valList"/>
            </choice>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <ref name="constraintSpec"/>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <ref name="exemplum"/>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <ref name="remarks"/>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <ref name="listRef"/>
         </zeroOrMore>
      
      </group>
   </define>
   <define name="macroSpec.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.identified.attributes"/>
      <optional>
         <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>
            <choice>
               <value>pe</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(parameter entity) </a:documentation>
               <value>dt</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(datatype entity) </a:documentation>
            </choice>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define name="memberOf">
      <element name="memberOf">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies class membership of the documented element or class. []</a:documentation>
         <ref name="memberOf.content"/>
         <ref name="memberOf.localattributes"/>
      </element>
   </define>
   <define name="memberOf.content">
      <ref name="macro.xtext"/>
   </define>
   <define name="memberOf.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <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>
            <data type="Name"/>
         </attribute>
      </optional>
      <optional>
         <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>
            <choice>
               <value>add</value>
               <a:documentation>this declaration is added to the current definitions</a:documentation>
               <value>delete</value>
               <a:documentation>this declaration and all of its children are removed from the current setup</a:documentation>
            </choice>
         </attribute>
      </optional>
      <optional>
         <attribute name="max">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies the maximum number of times the element can occur in elements which use this model class in their content model</a:documentation>
            <choice>
               <data type="double"/>
               <data type="token">
                  <param name="pattern">(\-?[\d]+/\-?[\d]+)</param>
               </data>
               <data type="decimal"/>
            </choice>
         </attribute>
      </optional>
      <optional>
         <attribute name="min">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies the minumum number of times the element must occur in elements which use this model class in their content model</a:documentation>
            <choice>
               <data type="double"/>
               <data type="token">
                  <param name="pattern">(\-?[\d]+/\-?[\d]+)</param>
               </data>
               <data type="decimal"/>
            </choice>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define name="model">
      <element name="model">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">describes the processing intended for a specified element. []</a:documentation>
         <ref name="model.content"/>
         <ref name="model.localattributes"/>
      </element>
   </define>
   <define name="model.content">
      <group>
         <zeroOrMore>
            <choice>
               <ref name="model.glossLike"/>
               <ref name="model.descLike"/>
            </choice>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="param"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="outputRendition"/>
         </zeroOrMore>
      </group>
   </define>
   <define name="model.localattributes">
      <ref name="att.global.attributes"/>
      <attribute name="behaviour">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">names the process or function which this processing model uses in order to produce output.
Suggested values include: 1] alternate; 2] anchor; 3] block; 4] body; 5] break; 6] cell; 7] cit; 8] document; 9] figure; 10] glyph; 11] graphic; 12] heading; 13] index; 14] inline; 15] link; 16] list; 17] listItem; 18] metadata; 19] note; 20] omit; 21] paragraph; 22] row; 23] section; 24] table; 25] text; 26] title</a:documentation>
         <choice>
            <value>alternate</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">support display of alternative visualisations, for example by displaying the preferred content, by displaying both in parallel, or by toggling between the two.</a:documentation>
            <value>anchor</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create an identifiable anchor point in the output</a:documentation>
            <value>block</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create a block structure</a:documentation>
            <value>body</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create the body of a document.</a:documentation>
            <value>break</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create a line, column, or page break according to the value of type</a:documentation>
            <value>cell</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create a table cell</a:documentation>
            <value>cit</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">show the content, with an indication of the source</a:documentation>
            <value>document</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">start a new output document</a:documentation>
            <value>figure</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">make a figure with the title as caption</a:documentation>
            <value>glyph</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">show a character by looking up reference to a chardesc at the given URI</a:documentation>
            <value>graphic</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">if url is present, uses it to display graphic, else display a placeholder image.</a:documentation>
            <value>heading</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">creates a heading. </a:documentation>
            <value>index</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">generate list according to type</a:documentation>
            <value>inline</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">creates inline element out of content </a:documentation>
            <value>link</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create hyperlink</a:documentation>
            <value>list</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create a list </a:documentation>
            <value>listItem</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create a list item</a:documentation>
            <value>metadata</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create metadata section</a:documentation>
            <value>note</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create a note, often out of line, depending on the value of place; could be margin, footnote, endnote, inline</a:documentation>
            <value>omit</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">do nothing, do not process children</a:documentation>
            <value>paragraph</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create a paragraph out of content.</a:documentation>
            <value>row</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create a table row</a:documentation>
            <value>section</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create a new section of the output document</a:documentation>
            <value>table</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create a table</a:documentation>
            <value>text</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create literal text</a:documentation>
            <value>title</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">create document title</a:documentation>
            <data type="token">
               <param name="pattern">(\p{L}|\p{N}|\p{P}|\p{S})+</param>
            </data>
         </choice>
      </attribute>
      <optional>
         <attribute name="predicate">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the condition under which this model applies, given as an XPath predicate expression.</a:documentation>
            <text/>
         </attribute>
      </optional>
      <optional>
         <attribute name="useSourceRendition">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">whether to obey any rendition attribute which is present.</a:documentation>
            <data type="boolean"/>
         </attribute>
      </optional>
      <optional>
         <attribute name="output">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the intended output.
Sample values include: 1] web; 2] print; 3] plain</a:documentation>
            <data type="token">
               <param name="pattern">(\p{L}|\p{N}|\p{P}|\p{S})+</param>
            </data>
         </attribute>
      </optional>
      <optional>
         <attribute name="cssClass">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the name of a CSS class which should be associated with this element</a:documentation>
            <list>
               <oneOrMore>
                  <data type="Name"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define name="modelGrp">
      <element name="modelGrp">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">any grouping of model or modelSequence elements with a common output method []</a:documentation>
         <ref name="modelGrp.content"/>
         <ref name="modelGrp.localattributes"/>
      </element>
   </define>
   <define name="modelGrp.content">
      <group>
         <zeroOrMore>
            <choice>
               <ref name="model.glossLike"/>
               <ref name="model.descLike"/>
            </choice>
         </zeroOrMore>
         <optional>
            <ref name="outputRendition"/>
         </optional>
         <oneOrMore>
            <choice>
               <ref name="modelSequence"/>
               <ref name="model"/>
            </choice>
         </oneOrMore>
      </group>
   </define>
   <define name="modelGrp.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <attribute name="useSourceRendition">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">whether to obey any rendition attribute which is present</a:documentation>
            <data type="boolean"/>
         </attribute>
      </optional>
      <optional>
         <attribute name="output">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the intended output method
Suggested values include: 1] web; 2] print; 3] plaintext</a:documentation>
            <choice>
               <value>web</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the output is intended for presentation in a web format</a:documentation>
               <value>print</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the output is intended for presentation in a print format</a:documentation>
               <value>plaintext</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the output is intended for presentation in a plain text format</a:documentation>
               <data type="token">
                  <param name="pattern">(\p{L}|\p{N}|\p{P}|\p{S})+</param>
               </data>
            </choice>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define name="modelSequence">
      <element name="modelSequence">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">any sequence of model or modelSequence elements which is to be processed as a single set of actions []</a:documentation>
         <ref name="modelSequence.content"/>
         <ref name="modelSequence.localattributes"/>
      </element>
   </define>
   <define name="modelSequence.content">
      <group>
         <zeroOrMore>
            <choice>
               <ref name="model.glossLike"/>
               <ref name="model.descLike"/>
            </choice>
         </zeroOrMore>
      
         <oneOrMore>
            <ref name="model"/>
         </oneOrMore>
      </group>
   </define>
   <define name="modelSequence.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <attribute name="predicate">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the condition under which this model applies given as an XPath Predicate Expression</a:documentation>
            <text/>
         </attribute>
      </optional>
      <optional>
         <attribute name="useSourceRendition">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">whether to obey any rendition attribute which is present</a:documentation>
            <data type="boolean"/>
         </attribute>
      </optional>
      <optional>
         <attribute name="output">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the intended output method
Suggested values include: 1] web; 2] print; 3] plaintext</a:documentation>
            <choice>
               <value>web</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the output is intended for presentation in a web format</a:documentation>
               <value>print</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the output is intended for presentation in a print format</a:documentation>
               <value>plaintext</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the output is intended for presentation in a plain text format</a:documentation>
               <data type="token">
                  <param name="pattern">(\p{L}|\p{N}|\p{P}|\p{S})+</param>
               </data>
            </choice>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define 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 name="moduleRef.content">
      <optional>
         <ref name="content"/>
      </optional>
      <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
               id="moduleRef-modref-constraint-11">
         <rule xmlns:s="http://www.ascc.net/xml/schematron"
               xmlns:sch="http://purl.oclc.org/dsdl/schematron"
               xmlns:rng="http://relaxng.org/ns/structure/1.0"
               context="tei:moduleRef">
            <report test="* and @key">
Child elements of <name/> are only allowed when an external module is being loaded
        </report>
         </rule>
      </pattern>
   </define>
   <define name="moduleRef.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.readFrom.attributes"/>
      <optional>
         <attribute name="prefix">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies a default prefix which will be prepended to all patterns from the imported module</a:documentation>
            <data type="NCName"/>
         </attribute>
      </optional>
      <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
               id="moduleRef-prefix-not-same-prefix-constraint-12">
         <rule xmlns:s="http://www.ascc.net/xml/schematron"
               xmlns:sch="http://purl.oclc.org/dsdl/schematron"
               xmlns:rng="http://relaxng.org/ns/structure/1.0"
               context="tei:moduleRef">
            <report test="//*[ not( generate-id(.) eq generate-id(      current() ) ) ]/@prefix = @prefix">The prefix attribute
	    of <name/> should not match that of any other
	    element (it would defeat the purpose)</report>
          </rule>
      </pattern>
      <choice>
         <optional>
            <attribute name="include">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies a list of the elements which are to be copied from the specified module into the schema being defined.</a:documentation>
               <list>
                  <zeroOrMore>
                     <data type="NCName"/>
                  </zeroOrMore>
               </list>
            </attribute>
         </optional>
         <optional>
            <attribute name="except">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies a list of the elements which are not to be copied from the specified module into the schema being defined.</a:documentation>
               <list>
                  <zeroOrMore>
                     <data type="NCName"/>
                  </zeroOrMore>
               </list>
            </attribute>
         </optional>
      </choice>
      <choice>
         <optional>
            <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"/>
            </attribute>
         </optional>
         <optional>
            <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>
               <data type="anyURI"/>
            </attribute>
         </optional>
      </choice>
      <empty/>
   </define>
   <define 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 name="moduleSpec.content">
      <group>
      
        <zeroOrMore>
            <choice>
               <ref name="model.glossLike"/>
               <ref name="model.descLike"/>
            </choice>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <ref name="exemplum"/>
         </zeroOrMore>
      
      
        <optional>
            <ref name="remarks"/>
         </optional>
      
      
        <zeroOrMore>
            <ref name="listRef"/>
         </zeroOrMore>
      
      </group>
   </define>
   <define name="moduleSpec.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.identified.attributes"/>
      <ref name="att.typed.attributes"/>
      <empty/>
   </define>
   <define name="outputRendition">
      <element name="outputRendition">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">describes the rendering or appearance intended for all occurrences of an element in a specified context for a specified type of output.</a:documentation>
         <ref name="outputRendition.content"/>
         <ref name="outputRendition.localattributes"/>
      </element>
   </define>
   <define name="outputRendition.content">
      <text/>
   </define>
   <define name="outputRendition.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <attribute name="scope">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides a way of defining pseudo-elements, that is, styling rules applicable to specific sub-portions of an element.
Sample values include: 1] first-line; 2] first-letter; 3] before; 4] after</a:documentation>
            <ref name="data.enumerated"/>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define name="param">
      <element name="param">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides a parameter for a model behaviour by supplying its name and an XPath expression identifying the location of its content. []</a:documentation>
         <ref name="param.content"/>
         <ref name="param.localattributes"/>
      </element>
   </define>
   <define name="param.content">
      <empty/>
   </define>
   <define name="param.localattributes">
      <ref name="att.global.attributes"/>
      <attribute name="name">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a name for the parameter being supplied
Suggested values include: 1] alternate; 2] default; 3] height; 4] id; 5] label; 6] level; 7] link; 8] place; 9] type; 10] url; 11] width</a:documentation>
         <choice>
            <value>alternate</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">when used with behaviour , a parameter of this name supplies one of the pair of possible values; for example the regularized form rather than the original form within a choice element.</a:documentation>
            <value>default</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">when used with behaviour , a parameter of this name supplies one of the pair of possible values; for example the original form rather than the regularized form within a choice element.</a:documentation>
            <value>height</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">when used with behaviour graphic, a parameter of this name supplies a value for the height of the graphic e.g. "300px", "50%".</a:documentation>
            <value>id</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a parameter of this name should supply a unique identifier for the element being processed; as for example with the anchor behaviour</a:documentation>
            <value>label</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a parameter of this name should supply an expression to be used to label something, for example  for a page break or  for a footnote reference; typically used with the note or break behaviours</a:documentation>
            <value>level</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">when used with the heading behaviour, a parameter of this name supplies a positive integer indicating the hierarchic level of a heading.</a:documentation>
            <value>link</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">when used with the link behaviour, a parameter of this name should supply a URL to be used as the target of a link. </a:documentation>
            <value>place</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">when used with the  behaviour, a parameter of this name should provide a string which describes the intended placement of some text; typical values include "margin", "footnote", "endnote", "inline", "bottom"</a:documentation>
            <value>type</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a parameter of this name can be used to categorize the specified behaviour in any way; for example the kind of break (when used with the  behaviour) or the kind of index to be generated (if used with the  behaviour) etc.</a:documentation>
            <value>url</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">when used with behaviour graphic, a parameter of this name supplies a a URL indicating the graphic intended.</a:documentation>
            <value>width</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">when used with behaviour graphic, a parameter of this name supplies a value for the width of the graphic e.g. "400px", "70%".</a:documentation>
            <text/>
         </choice>
      </attribute>
      <attribute name="value">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies an XPath expression which when evaluated provides the value for the parameter</a:documentation>
         <text/>
      </attribute>
      <empty/>
   </define>
   <define name="paramList">
      <element name="paramList">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">list of parameter specifications</a:documentation>
         <ref name="paramList.content"/>
         <ref name="paramList.localattributes"/>
      </element>
   </define>
   <define name="paramList.content">
      <zeroOrMore>
         <ref name="paramSpec"/>
      </zeroOrMore>
   </define>
   <define name="paramList.localattributes">
      <ref name="att.global.attributes"/>
      <empty/>
   </define>
   <define name="paramSpec">
      <element name="paramSpec">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies specification for one parameter of a model behaviour []</a:documentation>
         <ref name="paramSpec.content"/>
         <ref name="paramSpec.localattributes"/>
      </element>
   </define>
   <define name="paramSpec.content">
      <zeroOrMore>
         <choice>
            <ref name="model.glossLike"/>
            <ref name="model.descLike"/>
         </choice>
      </zeroOrMore>
   </define>
   <define name="paramSpec.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.identified.attributes"/>
      <empty/>
   </define>
   <define 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 name="remarks.content">
      <oneOrMore>
         <ref name="model.pLike"/>
      </oneOrMore>
   </define>
   <define name="remarks.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.translatable.attributes"/>
      <empty/>
   </define>
   <define 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 name="schemaSpec.content">
      <group>
      
        <zeroOrMore>
            <choice>
               <ref name="model.glossLike"/>
               <ref name="model.descLike"/>
            </choice>
         </zeroOrMore>
      
      
        <zeroOrMore>
            <choice>
               <ref name="model.oddRef"/>
               <ref name="model.oddDecl"/>
            </choice>
         </zeroOrMore>
      
      </group>
   </define>
   <define name="schemaSpec.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.identified.attributes"/>
      <ref name="att.namespaceable.attributes"/>
      <ref name="att.readFrom.attributes"/>
      <ref name="att.docStatus.attributes"/>
      <optional>
         <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 patterns may be used as the root of documents conforming to it.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="Name"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
      <optional>
         <attribute name="prefix">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies a default prefix which will be prepended to all patterns relating to TEI elements, unless otherwise stated.</a:documentation>
            <data type="NCName"/>
         </attribute>
      </optional>
      <optional>
         <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>
            <choice>
               <data type="language"/>
               <choice>
                  <value/>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
               </choice>
            </choice>
         </attribute>
      </optional>
      <optional>
         <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>
            <list>
               <oneOrMore>
                  <choice>
                     <data type="language"/>
                     <choice>
                        <value/>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                     </choice>
                  </choice>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define name="sequence">
      <element name="sequence">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">sequence of references</a:documentation>
         <ref name="sequence.content"/>
         <ref name="sequence.localattributes"/>
      </element>
   </define>
   <define name="sequence.content">
      <oneOrMore>
         <ref name="model.contentPart"/>
      </oneOrMore>
      <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
               id="sequence-sequencechilden-constraint-22">
         <rule context="tei:sequence">
            <sch:assert xmlns:s="http://www.ascc.net/xml/schematron"
                        xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                        xmlns:rng="http://relaxng.org/ns/structure/1.0"
                        xmlns="http://www.tei-c.org/ns/1.0"
                        test="count(*)&gt;1">The sequence element must have at least two child elements</sch:assert>
         </rule>
      </pattern>
   </define>
   <define name="sequence.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.repeatable.attributes"/>
      <optional>
         <attribute name="preserveOrder">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">if true, indicates that the order in which component elements of a sequence appear in a document must correspond to the order in which they are given in the content model.</a:documentation>
            <data type="boolean"/>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define 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 name="specDesc.content">
      <empty/>
   </define>
   <define name="specDesc.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <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>
            <data type="Name"/>
         </attribute>
      </optional>
      <optional>
         <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>
            <list>
               <zeroOrMore>
                  <data type="Name"/>
               </zeroOrMore>
            </list>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define 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 name="specGrp.content">
      <zeroOrMore>
         <choice>
            <ref name="model.oddDecl"/>
            <ref name="model.oddRef"/>
            <ref name="model.divPart"/>
         </choice>
      </zeroOrMore>
   </define>
   <define name="specGrp.localattributes">
      <ref name="att.global.attributes"/>
      <empty/>
   </define>
   <define 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 name="specGrpRef.content">
      <empty/>
   </define>
   <define name="specGrpRef.localattributes">
      <ref name="att.global.attributes"/>
      <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>
         <data type="anyURI"/>
      </attribute>
      <empty/>
   </define>
   <define 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 name="specList.content">
      <oneOrMore>
         <ref name="specDesc"/>
      </oneOrMore>
   </define>
   <define name="specList.localattributes">
      <ref name="att.global.attributes"/>
      <empty/>
   </define>
   <define 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 name="tag.content">
      <text/>
   </define>
   <define name="tag.localattributes">
      <ref name="att.global.attributes"/>
      <optional>
         <attribute name="type">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the type of XML tag intended</a:documentation>
            <choice>
               <value>start</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>
               <value>end</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>
               <value>empty</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>
               <value>pi</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>
               <value>comment</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a comment, with delimiters &lt;!-- and --&gt; is intended</a:documentation>
               <value>ms</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>
            </choice>
         </attribute>
      </optional>
      <optional>
         <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.
Sample values include: 1] TEI(text encoding initiative) ; 2] DBK(docbook) ; 3] XX(unknown) ; 4] Schematron; 5] HTML</a:documentation>
            <data type="token">
               <param name="pattern">(\p{L}|\p{N}|\p{P}|\p{S})+</param>
            </data>
         </attribute>
      </optional>
      <empty/>
   </define>
   <define name="textNode">
      <element name="textNode">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the presence of a text node in a content model []</a:documentation>
         <ref name="textNode.content"/>
         <ref name="textNode.localattributes"/>
      </element>
   </define>
   <define name="textNode.content">
      <empty/>
   </define>
   <define name="textNode.localattributes">
      <ref name="att.global.attributes"/>
      <empty/>
   </define>
   <define 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 name="val.content">
      <text/>
   </define>
   <define name="val.localattributes">
      <ref name="att.global.attributes"/>
      <empty/>
   </define>
   <define 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 name="valDesc.content">
      <ref name="macro.phraseSeq.limited"/>
   </define>
   <define name="valDesc.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.translatable.attributes"/>
      <ref name="att.combinable.attributes"/>
      <empty/>
   </define>
   <define name="valItem">
      <element name="valItem">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">documents a single value in a predefined list of values. []</a:documentation>
         <ref name="valItem.content"/>
         <ref name="valItem.localattributes"/>
      </element>
   </define>
   <define name="valItem.content">
      <group>
         <zeroOrMore>
            <choice>
               <ref name="model.descLike"/>
               <ref name="model.glossLike"/>
            </choice>
         </zeroOrMore>
         <optional>
            <ref name="paramList"/>
         </optional>    
      </group>
   </define>
   <define name="valItem.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.combinable.attributes"/>
      <attribute name="ident">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the value concerned.</a:documentation>
         <data type="string"/>
      </attribute>
      <empty/>
   </define>
   <define 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. []</a:documentation>
         <ref name="valList.content"/>
         <ref name="valList.localattributes"/>
      </element>
   </define>
   <define name="valList.content">
      <zeroOrMore>
         <ref name="valItem"/>
      </zeroOrMore>
   </define>
   <define name="valList.localattributes">
      <ref name="att.global.attributes"/>
      <ref name="att.combinable.attributes"/>
      <optional>
         <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 values specified.</a:documentation>
            <choice>
               <value>closed</value>
               <a:documentation>only the values specified are permitted.</a:documentation>
               <value>semi</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>
               <value>open</value>
               <a:documentation>the values specified are sample values only.</a:documentation>
            </choice>
         </attribute>
      </optional>
      <empty/>
   </define>
   <!--3. macros-->
   <define name="macro.schemaPattern">
      <ref name="macro.anyXML"/>
   </define>
</grammar>
