<?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"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
         ns="http://www.tei-c.org/ns/1.0"><!--
Schema generated from ODD source 2025-08-28T17:17:22Z. 2014. 
TEI Edition: P5 Version 4.10.1. Last updated on 28th August 2025, revision 3cd82e7a3 
TEI Edition Location: https://www.tei-c.org/Vault/P5/4.10.1/ 
  
--><!---->
   <define name="macro.paraContent">
      <zeroOrMore>
         <choice>
            <text/>
            <ref name="model.paraPart"/>
         </choice>
      </zeroOrMore>
   </define>
   <define name="macro.limitedContent">
      <zeroOrMore>
         <choice>
            <text/>
            <ref name="model.limitedPhrase"/>
            <ref name="model.inter"/>
         </choice>
      </zeroOrMore>
   </define>
   <define name="macro.phraseSeq">
      <zeroOrMore>
         <choice>
            <text/>
            <ref name="model.gLike"/>
            <ref name="model.attributable"/>
            <ref name="model.phrase"/>
            <ref name="model.global"/>
         </choice>
      </zeroOrMore>
   </define>
   <define name="macro.phraseSeq.limited">
      <zeroOrMore>
         <choice>
            <text/>
            <ref name="model.limitedPhrase"/>
            <ref name="model.global"/>
         </choice>
      </zeroOrMore>
   </define>
   <define name="macro.specialPara">
      <zeroOrMore>
         <choice>
            <text/>
            <ref name="model.gLike"/>
            <ref name="model.phrase"/>
            <ref name="model.inter"/>
            <ref name="model.divPart"/>
            <ref name="model.global"/>
         </choice>
      </zeroOrMore>
   </define>
   <define name="anyElement_egXML_1">
      <element>
         <anyName>
            <except>
               <nsName ns="http://www.tei-c.org/ns/1.0"/>
               <name ns="http://www.tei-c.org/ns/Examples">egXML</name>
            </except>
         </anyName>
         <zeroOrMore>
            <attribute>
               <anyName/>
            </attribute>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="anyElement_egXML_1"/>
            </choice>
         </zeroOrMore>
      </element>
   </define>
   <define name="att.ascribed.attributes">
      <ref name="att.ascribed.attribute.who"/>
   </define>
   <define name="att.ascribed.attribute.who">
      <optional>
         <attribute name="who">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the person, or group of people, to whom the element content is ascribed.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="anyURI">
                     <param name="pattern">\S+</param>
                  </data>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="att.cmc.attributes">
      <ref name="att.cmc.attribute.generatedBy"/>
   </define>
   <define name="att.cmc.attribute.generatedBy">
      <optional>
         <attribute name="generatedBy">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(generated by) categorizes how the content of an element was generated in a CMC environment.
Suggested values include: 1] human; 2] template; 3] system; 4] bot; 5] unspecified</a:documentation>
            <choice>
               <value>human</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the content was naturally typed or spoken by a human user</a:documentation>
               <value>template</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the content was generated after a human user activated a template for its insertion</a:documentation>
               <value>system</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the content was generated by the system, i.e. the CMC environment</a:documentation>
               <value>bot</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the content was generated by a bot, i.e. a non-human agent, typically one that is not part of the CMC environment itself</a:documentation>
               <value>unspecified</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the content was generated by an unknown or unspecified process</a:documentation>
               <data type="token">
                  <param name="pattern">[^\p{C}\p{Z}]+</param>
               </data>
            </choice>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-att.cmc-generatedBy-CMC_generatedBy_within_post-constraint-rule-1">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:rng="http://relaxng.org/ns/structure/1.0"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xi="http://www.w3.org/2001/XInclude"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="tei:*[@generatedBy]">
         <sch:assert test="ancestor-or-self::tei:post">The @generatedBy attribute is for use within a &lt;post&gt; element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="att.datable.w3c.attributes">
      <ref name="att.datable.w3c.attribute.when"/>
      <ref name="att.datable.w3c.attribute.notBefore"/>
      <ref name="att.datable.w3c.attribute.notAfter"/>
      <ref name="att.datable.w3c.attribute.from"/>
      <ref name="att.datable.w3c.attribute.to"/>
   </define>
   <define name="att.datable.w3c.attribute.when">
      <optional>
         <attribute name="when">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies the value of the date or time in a standard form, e.g. yyyy-mm-dd.</a:documentation>
            <choice>
               <data type="date"/>
               <data type="gYear"/>
               <data type="gMonth"/>
               <data type="gDay"/>
               <data type="gYearMonth"/>
               <data type="gMonthDay"/>
               <data type="time"/>
               <data type="dateTime"/>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="att.datable.w3c.attribute.notBefore">
      <optional>
         <attribute name="notBefore">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the earliest possible date for the event in standard form, e.g. yyyy-mm-dd.</a:documentation>
            <choice>
               <data type="date"/>
               <data type="gYear"/>
               <data type="gMonth"/>
               <data type="gDay"/>
               <data type="gYearMonth"/>
               <data type="gMonthDay"/>
               <data type="time"/>
               <data type="dateTime"/>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="att.datable.w3c.attribute.notAfter">
      <optional>
         <attribute name="notAfter">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the latest possible date for the event in standard form, e.g. yyyy-mm-dd.</a:documentation>
            <choice>
               <data type="date"/>
               <data type="gYear"/>
               <data type="gMonth"/>
               <data type="gDay"/>
               <data type="gYearMonth"/>
               <data type="gMonthDay"/>
               <data type="time"/>
               <data type="dateTime"/>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="att.datable.w3c.attribute.from">
      <optional>
         <attribute name="from">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the starting point of the period in standard form, e.g. yyyy-mm-dd.</a:documentation>
            <choice>
               <data type="date"/>
               <data type="gYear"/>
               <data type="gMonth"/>
               <data type="gDay"/>
               <data type="gYearMonth"/>
               <data type="gMonthDay"/>
               <data type="time"/>
               <data type="dateTime"/>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="att.datable.w3c.attribute.to">
      <optional>
         <attribute name="to">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the ending point of the period in standard form, e.g. yyyy-mm-dd.</a:documentation>
            <choice>
               <data type="date"/>
               <data type="gYear"/>
               <data type="gMonth"/>
               <data type="gDay"/>
               <data type="gYearMonth"/>
               <data type="gMonthDay"/>
               <data type="time"/>
               <data type="dateTime"/>
            </choice>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-att.datable.w3c-att-datable-w3c-when-constraint-rule-2">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:rng="http://relaxng.org/ns/structure/1.0"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xi="http://www.w3.org/2001/XInclude"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="tei:*[@when]">
         <sch:report test="@notBefore|@notAfter|@from|@to" role="nonfatal">The @when attribute cannot be used with any other att.datable.w3c attributes.</sch:report>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-att.datable.w3c-att-datable-w3c-from-constraint-rule-3">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:rng="http://relaxng.org/ns/structure/1.0"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xi="http://www.w3.org/2001/XInclude"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="tei:*[@from]">
         <sch:report test="@notBefore" role="nonfatal">The @from and @notBefore attributes cannot be used together.</sch:report>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-att.datable.w3c-att-datable-w3c-to-constraint-rule-4">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:rng="http://relaxng.org/ns/structure/1.0"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xi="http://www.w3.org/2001/XInclude"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="tei:*[@to]">
         <sch:report test="@notAfter" role="nonfatal">The @to and @notAfter attributes cannot be used together.</sch:report>
      </sch:rule>
   </pattern>
   <define name="att.editLike.attributes">
      <empty/>
   </define>
   <define name="att.global.rendition.attributes">
      <ref name="att.global.rendition.attribute.rend"/>
      <ref name="att.global.rendition.attribute.rendition"/>
   </define>
   <define name="att.global.rendition.attribute.rend">
      <optional>
         <attribute name="rend">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(rendition) indicates how the element in question was rendered or presented in the source text.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="token">
                     <param name="pattern">[^\p{C}\p{Z}]+</param>
                  </data>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="att.global.rendition.attribute.rendition">
      <optional>
         <attribute name="rendition">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">points to a description of the rendering or presentation used for this element in the source text.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="anyURI">
                     <param name="pattern">\S+</param>
                  </data>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="att.global.responsibility.attributes">
      <ref name="att.global.responsibility.attribute.cert"/>
      <ref name="att.global.responsibility.attribute.resp"/>
   </define>
   <define name="att.global.responsibility.attribute.cert">
      <optional>
         <attribute name="cert">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(certainty) signifies the degree of certainty associated with the intervention or interpretation.</a:documentation>
            <choice>
               <data type="double">
                  <param name="minInclusive">0</param>
                  <param name="maxInclusive">1</param>
               </data>
               <choice>
                  <value>high</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                  <value>medium</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                  <value>low</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                  <value>unknown</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
               </choice>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="att.global.responsibility.attribute.resp">
      <optional>
         <attribute name="resp">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(responsible party) indicates the agency responsible for the intervention or interpretation, for example an editor or transcriber.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="anyURI">
                     <param name="pattern">\S+</param>
                  </data>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="att.global.source.attributes">
      <ref name="att.global.source.attribute.source"/>
   </define>
   <define name="att.global.source.attribute.source">
      <optional>
         <attribute name="source">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the source from which some aspect of this element is drawn.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="anyURI">
                     <param name="pattern">\S+</param>
                  </data>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-att.global.source-source-only_1_ODD_source-constraint-rule-5">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:rng="http://relaxng.org/ns/structure/1.0"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xi="http://www.w3.org/2001/XInclude"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="tei:*[@source]">
         <sch:let name="srcs" value="tokenize( normalize-space(@source),' ')"/>
         <sch:report test="(   self::tei:classRef                                 | self::tei:dataRef                                 | self::tei:elementRef                                 | self::tei:macroRef                                 | self::tei:moduleRef                                 | self::tei:schemaSpec )                                   and                                   $srcs[2]">
              When used on a schema description element (like
              <sch:value-of select="name(.)"/>), the @source attribute
              should have only 1 value. (This one has <sch:value-of select="count($srcs)"/>.)
            </sch:report>
      </sch:rule>
   </pattern>
   <define name="att.notated.attributes">
      <ref name="att.notated.attribute.notation"/>
   </define>
   <define name="att.notated.attribute.notation">
      <optional>
         <attribute name="notation">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">names the notation used for the content of the element.</a:documentation>
            <data type="token">
               <param name="pattern">[^\p{C}\p{Z}]+</param>
            </data>
         </attribute>
      </optional>
   </define>
   <define name="att.placement.attributes">
      <ref name="att.placement.attribute.place"/>
   </define>
   <define name="att.placement.attribute.place">
      <optional>
         <attribute name="place">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies where this item is placed.
Suggested values include: 1] top; 2] bottom; 3] margin; 4] opposite; 5] overleaf; 6] above; 7] right; 8] below; 9] left; 10] end; 11] inline; 12] inspace</a:documentation>
            <list>
               <oneOrMore>
                  <choice>
                     <value>top</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">at the top of the page</a:documentation>
                     <value>bottom</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">at the foot of the page</a:documentation>
                     <value>margin</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">in the margin (left, right, or both)</a:documentation>
                     <value>opposite</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">on the opposite, i.e. facing, page</a:documentation>
                     <value>overleaf</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">on the other side of the leaf</a:documentation>
                     <value>above</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">above the line</a:documentation>
                     <value>right</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">to the right, e.g. to the right of a vertical line of text, or to the right of a figure</a:documentation>
                     <value>below</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">below the line</a:documentation>
                     <value>left</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">to the left, e.g. to the left of a vertical line of text, or to the left of a figure</a:documentation>
                     <value>end</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">at the end of e.g. chapter or volume.</a:documentation>
                     <value>inline</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">within the body of the text.</a:documentation>
                     <value>inspace</value>
                     <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">in a predefined space, for example left by an earlier scribe.</a:documentation>
                     <data type="token">
                        <param name="pattern">[^\p{C}\p{Z}]+</param>
                     </data>
                  </choice>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="att.pointing.attributes">
      <ref name="att.pointing.attribute.target"/>
   </define>
   <define name="att.pointing.attribute.target">
      <optional>
         <attribute name="target">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the destination of the reference by supplying one or more URI References.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="anyURI">
                     <param name="pattern">\S+</param>
                  </data>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-att.pointing-targetLang-constraint-rule-6">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:rng="http://relaxng.org/ns/structure/1.0"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xi="http://www.w3.org/2001/XInclude"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="tei:*[not(self::tei:schemaSpec)][@targetLang]">
         <sch:assert test="@target">@targetLang should only be used on <sch:name/> if @target is specified.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="att.resourced.attributes">
      <ref name="att.resourced.attribute.url"/>
   </define>
   <define name="att.resourced.attribute.url">
      <attribute name="url">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(uniform resource locator) specifies the URL from which the media concerned may be obtained.</a:documentation>
         <data type="anyURI">
            <param name="pattern">\S+</param>
         </data>
      </attribute>
   </define>
   <define name="att.scope.attributes">
      <ref name="att.scope.attribute.scope"/>
   </define>
   <define name="att.scope.attribute.scope">
      <optional>
         <attribute name="scope">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the scope of application of the element
Suggested values include: 1] sole; 2] major; 3] minor</a:documentation>
            <choice>
               <value>sole</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">only this particular feature is used throughout the document</a:documentation>
               <value>major</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">this feature is used through most of the document</a:documentation>
               <value>minor</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">this feature is used occasionally through the document</a:documentation>
               <data type="token">
                  <param name="pattern">[^\p{C}\p{Z}]+</param>
               </data>
            </choice>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-att.styleDef-schemeVersionRequiresScheme-constraint-rule-7">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:rng="http://relaxng.org/ns/structure/1.0"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xi="http://www.w3.org/2001/XInclude"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="tei:*[@schemeVersion]">
         <sch:assert test="@scheme and not(@scheme = 'free')">
              @schemeVersion can only be used if @scheme is specified.
            </sch:assert>
      </sch:rule>
   </pattern>
   <define name="att.typed.attributes">
      <ref name="att.typed.attribute.type"/>
   </define>
   <define name="att.typed.attribute.type">
      <optional>
         <attribute name="type">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">characterizes the element in some sense, using any convenient classification scheme or typology.</a:documentation>
            <data type="token">
               <param name="pattern">[^\p{C}\p{Z}]+</param>
            </data>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-att.typed-subtypeTyped-constraint-rule-8">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:rng="http://relaxng.org/ns/structure/1.0"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xi="http://www.w3.org/2001/XInclude"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="tei:*[@subtype]">
         <sch:assert test="@type">The <sch:name/> element should not be categorized in detail with @subtype unless also categorized in general with @type</sch:assert>
      </sch:rule>
   </pattern>
   <define name="att.written.attributes">
      <ref name="att.written.attribute.hand"/>
   </define>
   <define name="att.written.attribute.hand">
      <optional>
         <attribute name="hand">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">points to a <code xmlns="http://www.w3.org/1999/xhtml"
                     xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;handNote&gt;</code> element describing the hand considered responsible for the content of the element concerned.</a:documentation>
            <data type="anyURI">
               <param name="pattern">\S+</param>
            </data>
         </attribute>
      </optional>
   </define>
   <define name="att.ascribed.directed.attributes">
      <ref name="att.ascribed.attributes"/>
      <ref name="att.ascribed.directed.attribute.toWhom"/>
   </define>
   <define name="att.ascribed.directed.attribute.toWhom">
      <optional>
         <attribute name="toWhom">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the person, or group of people, to whom a speech act or action is directed.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="anyURI">
                     <param name="pattern">\S+</param>
                  </data>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="att.datable.attributes">
      <ref name="att.datable.w3c.attributes"/>
   </define>
   <define name="att.dimensions.attributes">
      <empty/>
   </define>
   <define name="att.divLike.attributes">
      <empty/>
   </define>
   <define name="att.global.attributes">
      <ref name="att.global.rendition.attributes"/>
      <ref name="att.global.responsibility.attributes"/>
      <ref name="att.global.source.attributes"/>
      <ref name="att.global.attribute.xmlid"/>
      <ref name="att.global.attribute.n"/>
      <ref name="att.global.attribute.xmllang"/>
      <ref name="att.global.attribute.xmlbase"/>
      <ref name="att.global.attribute.xmlspace"/>
   </define>
   <define name="att.global.attribute.xmlid">
      <optional>
         <attribute name="xml:id">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(identifier) provides a unique identifier for the element bearing the attribute.</a:documentation>
            <data type="ID"/>
         </attribute>
      </optional>
   </define>
   <define name="att.global.attribute.n">
      <optional>
         <attribute name="n">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(number) gives a number (or other label) for an element, which is not necessarily unique within the document.</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </define>
   <define name="att.global.attribute.xmllang">
      <optional>
         <attribute name="xml:lang">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(language) indicates the language of the element content using a tag generated according to <a xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">BCP 47</a>.</a:documentation>
            <choice>
               <data type="language"/>
               <choice>
                  <value/>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
               </choice>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="att.global.attribute.xmlbase">
      <optional>
         <attribute name="xml:base">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides a base URI reference with which applications can resolve relative URI references into absolute URI references.</a:documentation>
            <data type="anyURI">
               <param name="pattern">\S+</param>
            </data>
         </attribute>
      </optional>
   </define>
   <define name="att.global.attribute.xmlspace">
      <optional>
         <attribute name="xml:space">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">signals an intention about how white space should be managed by applications.</a:documentation>
            <choice>
               <value>default</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">signals that the application's default white-space processing modes are acceptable</a:documentation>
               <value>preserve</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the intent that applications preserve all white space</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="att.media.attributes">
      <ref name="att.media.attribute.width"/>
      <ref name="att.media.attribute.height"/>
   </define>
   <define name="att.media.attribute.width">
      <optional>
         <attribute name="width">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Where the media are displayed, indicates the display width.</a:documentation>
            <data type="token">
               <param name="pattern">[\-+]?\d+(\.\d+)?(%|cm|mm|in|pt|pc|px|em|ex|ch|rem|vw|vh|vmin|vmax)</param>
            </data>
         </attribute>
      </optional>
   </define>
   <define name="att.media.attribute.height">
      <optional>
         <attribute name="height">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Where the media are displayed, indicates the display height.</a:documentation>
            <data type="token">
               <param name="pattern">[\-+]?\d+(\.\d+)?(%|cm|mm|in|pt|pc|px|em|ex|ch|rem|vw|vh|vmin|vmax)</param>
            </data>
         </attribute>
      </optional>
   </define>
   <define name="att.naming.attributes">
      <ref name="att.naming.attribute.role"/>
   </define>
   <define name="att.naming.attribute.role">
      <optional>
         <attribute name="role">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">may be used to specify further information about the entity referenced by this name in the form of a set of whitespace-separated values, for example the occupation of a person, or the status of a place.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="token">
                     <param name="pattern">[^\p{C}\p{Z}]+</param>
                  </data>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="model.nameLike.agent">
      <choice>
         <ref name="name"/>
         <ref name="orgName"/>
      </choice>
   </define>
   <define name="model.nameLike.agent_alternation">
      <choice>
         <ref name="name"/>
         <ref name="orgName"/>
      </choice>
   </define>
   <define name="model.nameLike.agent_sequence">
      <ref name="name"/>
      <ref name="orgName"/>
   </define>
   <define name="model.nameLike.agent_sequenceOptional">
      <optional>
         <ref name="name"/>
      </optional>
      <optional>
         <ref name="orgName"/>
      </optional>
   </define>
   <define name="model.nameLike.agent_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="name"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="orgName"/>
      </zeroOrMore>
   </define>
   <define name="model.nameLike.agent_sequenceRepeatable">
      <oneOrMore>
         <ref name="name"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="orgName"/>
      </oneOrMore>
   </define>
   <define name="model.segLike">
      <notAllowed/>
   </define>
   <define name="model.segLike_alternation">
      <notAllowed/>
   </define>
   <define name="model.segLike_sequence">
      <empty/>
   </define>
   <define name="model.segLike_sequenceOptional">
      <empty/>
   </define>
   <define name="model.segLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="model.segLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="model.hiLike">
      <choice>
         <ref name="hi"/>
         <ref name="q"/>
      </choice>
   </define>
   <define name="model.hiLike_alternation">
      <choice>
         <ref name="hi"/>
         <ref name="q"/>
      </choice>
   </define>
   <define name="model.hiLike_sequence">
      <ref name="hi"/>
      <ref name="q"/>
   </define>
   <define name="model.hiLike_sequenceOptional">
      <optional>
         <ref name="hi"/>
      </optional>
      <optional>
         <ref name="q"/>
      </optional>
   </define>
   <define name="model.hiLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="hi"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="q"/>
      </zeroOrMore>
   </define>
   <define name="model.hiLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="hi"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="q"/>
      </oneOrMore>
   </define>
   <define name="model.emphLike">
      <choice>
         <ref name="foreign"/>
         <ref name="emph"/>
         <ref name="mentioned"/>
         <ref name="soCalled"/>
         <ref name="term"/>
         <ref name="title"/>
         <ref name="code"/>
         <ref name="ident"/>
      </choice>
   </define>
   <define name="model.emphLike_alternation">
      <choice>
         <ref name="foreign"/>
         <ref name="emph"/>
         <ref name="mentioned"/>
         <ref name="soCalled"/>
         <ref name="term"/>
         <ref name="title"/>
         <ref name="code"/>
         <ref name="ident"/>
      </choice>
   </define>
   <define name="model.emphLike_sequence">
      <ref name="foreign"/>
      <ref name="emph"/>
      <ref name="mentioned"/>
      <ref name="soCalled"/>
      <ref name="term"/>
      <ref name="title"/>
      <ref name="code"/>
      <ref name="ident"/>
   </define>
   <define name="model.emphLike_sequenceOptional">
      <optional>
         <ref name="foreign"/>
      </optional>
      <optional>
         <ref name="emph"/>
      </optional>
      <optional>
         <ref name="mentioned"/>
      </optional>
      <optional>
         <ref name="soCalled"/>
      </optional>
      <optional>
         <ref name="term"/>
      </optional>
      <optional>
         <ref name="title"/>
      </optional>
      <optional>
         <ref name="code"/>
      </optional>
      <optional>
         <ref name="ident"/>
      </optional>
   </define>
   <define name="model.emphLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="foreign"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="emph"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mentioned"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="soCalled"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="term"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="title"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="code"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="ident"/>
      </zeroOrMore>
   </define>
   <define name="model.emphLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="foreign"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="emph"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mentioned"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="soCalled"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="term"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="title"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="code"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="ident"/>
      </oneOrMore>
   </define>
   <define name="model.highlighted">
      <choice>
         <ref name="model.hiLike"/>
         <ref name="model.emphLike"/>
      </choice>
   </define>
   <define name="model.highlighted_alternation">
      <choice>
         <ref name="model.hiLike_alternation"/>
         <ref name="model.emphLike_alternation"/>
      </choice>
   </define>
   <define name="model.highlighted_sequence">
      <ref name="model.hiLike_sequence"/>
      <ref name="model.emphLike_sequence"/>
   </define>
   <define name="model.highlighted_sequenceOptional">
      <optional>
         <ref name="model.hiLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="model.emphLike_sequenceOptional"/>
      </optional>
   </define>
   <define name="model.highlighted_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="model.hiLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="model.emphLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
   </define>
   <define name="model.highlighted_sequenceRepeatable">
      <oneOrMore>
         <ref name="model.hiLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="model.emphLike_sequenceRepeatable"/>
      </oneOrMore>
   </define>
   <define name="model.dateLike">
      <choice>
         <ref name="date"/>
      </choice>
   </define>
   <define name="model.dateLike_alternation">
      <choice>
         <ref name="date"/>
      </choice>
   </define>
   <define name="model.dateLike_sequence">
      <ref name="date"/>
   </define>
   <define name="model.dateLike_sequenceOptional">
      <optional>
         <ref name="date"/>
      </optional>
   </define>
   <define name="model.dateLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="date"/>
      </zeroOrMore>
   </define>
   <define name="model.dateLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="date"/>
      </oneOrMore>
   </define>
   <define name="model.measureLike">
      <choice>
         <ref name="num"/>
      </choice>
   </define>
   <define name="model.measureLike_alternation">
      <choice>
         <ref name="num"/>
      </choice>
   </define>
   <define name="model.measureLike_sequence">
      <ref name="num"/>
   </define>
   <define name="model.measureLike_sequenceOptional">
      <optional>
         <ref name="num"/>
      </optional>
   </define>
   <define name="model.measureLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="num"/>
      </zeroOrMore>
   </define>
   <define name="model.measureLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="num"/>
      </oneOrMore>
   </define>
   <define name="model.egLike">
      <choice>
         <ref name="eg"/>
         <ref name="egXML"/>
      </choice>
   </define>
   <define name="model.egLike_alternation">
      <choice>
         <ref name="eg"/>
         <ref name="egXML"/>
      </choice>
   </define>
   <define name="model.egLike_sequence">
      <ref name="eg"/>
      <ref name="egXML"/>
   </define>
   <define name="model.egLike_sequenceOptional">
      <optional>
         <ref name="eg"/>
      </optional>
      <optional>
         <ref name="egXML"/>
      </optional>
   </define>
   <define name="model.egLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="eg"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="egXML"/>
      </zeroOrMore>
   </define>
   <define name="model.egLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="eg"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="egXML"/>
      </oneOrMore>
   </define>
   <define name="model.graphicLike">
      <choice>
         <ref name="graphic"/>
      </choice>
   </define>
   <define name="model.graphicLike_alternation">
      <choice>
         <ref name="graphic"/>
      </choice>
   </define>
   <define name="model.graphicLike_sequence">
      <ref name="graphic"/>
   </define>
   <define name="model.graphicLike_sequenceOptional">
      <optional>
         <ref name="graphic"/>
      </optional>
   </define>
   <define name="model.graphicLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="graphic"/>
      </zeroOrMore>
   </define>
   <define name="model.graphicLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="graphic"/>
      </oneOrMore>
   </define>
   <define name="model.offsetLike">
      <notAllowed/>
   </define>
   <define name="model.offsetLike_alternation">
      <notAllowed/>
   </define>
   <define name="model.offsetLike_sequence">
      <empty/>
   </define>
   <define name="model.offsetLike_sequenceOptional">
      <empty/>
   </define>
   <define name="model.offsetLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="model.offsetLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="model.pPart.msdesc">
      <notAllowed/>
   </define>
   <define name="model.pPart.msdesc_alternation">
      <notAllowed/>
   </define>
   <define name="model.pPart.msdesc_sequence">
      <empty/>
   </define>
   <define name="model.pPart.msdesc_sequenceOptional">
      <empty/>
   </define>
   <define name="model.pPart.msdesc_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="model.pPart.msdesc_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="model.pPart.editorial">
      <choice>
         <ref name="abbr"/>
      </choice>
   </define>
   <define name="model.pPart.editorial_alternation">
      <choice>
         <ref name="abbr"/>
      </choice>
   </define>
   <define name="model.pPart.editorial_sequence">
      <ref name="abbr"/>
   </define>
   <define name="model.pPart.editorial_sequenceOptional">
      <optional>
         <ref name="abbr"/>
      </optional>
   </define>
   <define name="model.pPart.editorial_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="abbr"/>
      </zeroOrMore>
   </define>
   <define name="model.pPart.editorial_sequenceRepeatable">
      <oneOrMore>
         <ref name="abbr"/>
      </oneOrMore>
   </define>
   <define name="model.pPart.transcriptional">
      <choice>
         <ref name="supplied"/>
      </choice>
   </define>
   <define name="model.pPart.transcriptional_alternation">
      <choice>
         <ref name="supplied"/>
      </choice>
   </define>
   <define name="model.pPart.transcriptional_sequence">
      <ref name="supplied"/>
   </define>
   <define name="model.pPart.transcriptional_sequenceOptional">
      <optional>
         <ref name="supplied"/>
      </optional>
   </define>
   <define name="model.pPart.transcriptional_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="supplied"/>
      </zeroOrMore>
   </define>
   <define name="model.pPart.transcriptional_sequenceRepeatable">
      <oneOrMore>
         <ref name="supplied"/>
      </oneOrMore>
   </define>
   <define name="model.pPart.edit">
      <choice>
         <ref name="model.pPart.editorial"/>
         <ref name="model.pPart.transcriptional"/>
      </choice>
   </define>
   <define name="model.pPart.edit_alternation">
      <choice>
         <ref name="model.pPart.editorial_alternation"/>
         <ref name="model.pPart.transcriptional_alternation"/>
      </choice>
   </define>
   <define name="model.pPart.edit_sequence">
      <ref name="model.pPart.editorial_sequence"/>
      <ref name="model.pPart.transcriptional_sequence"/>
   </define>
   <define name="model.pPart.edit_sequenceOptional">
      <optional>
         <ref name="model.pPart.editorial_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="model.pPart.transcriptional_sequenceOptional"/>
      </optional>
   </define>
   <define name="model.pPart.edit_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="model.pPart.editorial_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="model.pPart.transcriptional_sequenceOptionalRepeatable"/>
      </zeroOrMore>
   </define>
   <define name="model.pPart.edit_sequenceRepeatable">
      <oneOrMore>
         <ref name="model.pPart.editorial_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="model.pPart.transcriptional_sequenceRepeatable"/>
      </oneOrMore>
   </define>
   <define name="model.ptrLike">
      <choice>
         <ref name="ptr"/>
         <ref name="ref"/>
      </choice>
   </define>
   <define name="model.ptrLike_alternation">
      <choice>
         <ref name="ptr"/>
         <ref name="ref"/>
      </choice>
   </define>
   <define name="model.ptrLike_sequence">
      <ref name="ptr"/>
      <ref name="ref"/>
   </define>
   <define name="model.ptrLike_sequenceOptional">
      <optional>
         <ref name="ptr"/>
      </optional>
      <optional>
         <ref name="ref"/>
      </optional>
   </define>
   <define name="model.ptrLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="ptr"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="ref"/>
      </zeroOrMore>
   </define>
   <define name="model.ptrLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="ptr"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="ref"/>
      </oneOrMore>
   </define>
   <define name="model.lPart">
      <notAllowed/>
   </define>
   <define name="model.lPart_alternation">
      <notAllowed/>
   </define>
   <define name="model.lPart_sequence">
      <empty/>
   </define>
   <define name="model.lPart_sequenceOptional">
      <empty/>
   </define>
   <define name="model.lPart_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="model.lPart_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="model.global.meta">
      <notAllowed/>
   </define>
   <define name="model.global.meta_alternation">
      <notAllowed/>
   </define>
   <define name="model.global.meta_sequence">
      <empty/>
   </define>
   <define name="model.global.meta_sequenceOptional">
      <empty/>
   </define>
   <define name="model.global.meta_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="model.global.meta_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="model.milestoneLike">
      <choice>
         <ref name="lb"/>
      </choice>
   </define>
   <define name="model.milestoneLike_alternation">
      <choice>
         <ref name="lb"/>
      </choice>
   </define>
   <define name="model.milestoneLike_sequence">
      <ref name="lb"/>
   </define>
   <define name="model.milestoneLike_sequenceOptional">
      <optional>
         <ref name="lb"/>
      </optional>
   </define>
   <define name="model.milestoneLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="lb"/>
      </zeroOrMore>
   </define>
   <define name="model.milestoneLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="lb"/>
      </oneOrMore>
   </define>
   <define name="model.gLike">
      <notAllowed/>
   </define>
   <define name="model.oddDecl">
      <notAllowed/>
   </define>
   <define name="model.oddDecl_alternation">
      <notAllowed/>
   </define>
   <define name="model.oddDecl_sequence">
      <empty/>
   </define>
   <define name="model.oddDecl_sequenceOptional">
      <empty/>
   </define>
   <define name="model.oddDecl_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="model.oddDecl_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="model.phrase.xml">
      <choice>
         <ref name="att"/>
         <ref name="gi"/>
         <ref name="tag"/>
         <ref name="val"/>
      </choice>
   </define>
   <define name="model.phrase.xml_alternation">
      <choice>
         <ref name="att"/>
         <ref name="gi"/>
         <ref name="tag"/>
         <ref name="val"/>
      </choice>
   </define>
   <define name="model.phrase.xml_sequence">
      <ref name="att"/>
      <ref name="gi"/>
      <ref name="tag"/>
      <ref name="val"/>
   </define>
   <define name="model.phrase.xml_sequenceOptional">
      <optional>
         <ref name="att"/>
      </optional>
      <optional>
         <ref name="gi"/>
      </optional>
      <optional>
         <ref name="tag"/>
      </optional>
      <optional>
         <ref name="val"/>
      </optional>
   </define>
   <define name="model.phrase.xml_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="att"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="gi"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="tag"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="val"/>
      </zeroOrMore>
   </define>
   <define name="model.phrase.xml_sequenceRepeatable">
      <oneOrMore>
         <ref name="att"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="gi"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="tag"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="val"/>
      </oneOrMore>
   </define>
   <define name="model.specDescLike">
      <notAllowed/>
   </define>
   <define name="model.specDescLike_alternation">
      <notAllowed/>
   </define>
   <define name="model.specDescLike_sequence">
      <empty/>
   </define>
   <define name="model.specDescLike_sequenceOptional">
      <empty/>
   </define>
   <define name="model.specDescLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="model.specDescLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="model.biblLike">
      <choice>
         <ref name="bibl"/>
         <ref name="listBibl"/>
      </choice>
   </define>
   <define name="model.biblLike_alternation">
      <choice>
         <ref name="bibl"/>
         <ref name="listBibl"/>
      </choice>
   </define>
   <define name="model.biblLike_sequence">
      <ref name="bibl"/>
      <ref name="listBibl"/>
   </define>
   <define name="model.biblLike_sequenceOptional">
      <optional>
         <ref name="bibl"/>
      </optional>
      <optional>
         <ref name="listBibl"/>
      </optional>
   </define>
   <define name="model.biblLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="bibl"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="listBibl"/>
      </zeroOrMore>
   </define>
   <define name="model.biblLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="bibl"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="listBibl"/>
      </oneOrMore>
   </define>
   <define name="model.headLike">
      <choice>
         <ref name="head"/>
      </choice>
   </define>
   <define name="model.headLike_alternation">
      <choice>
         <ref name="head"/>
      </choice>
   </define>
   <define name="model.headLike_sequence">
      <ref name="head"/>
   </define>
   <define name="model.headLike_sequenceOptional">
      <optional>
         <ref name="head"/>
      </optional>
   </define>
   <define name="model.headLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="head"/>
      </zeroOrMore>
   </define>
   <define name="model.headLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="head"/>
      </oneOrMore>
   </define>
   <define name="model.labelLike">
      <choice>
         <ref name="desc"/>
         <ref name="label"/>
      </choice>
   </define>
   <define name="model.labelLike_alternation">
      <choice>
         <ref name="desc"/>
         <ref name="label"/>
      </choice>
   </define>
   <define name="model.labelLike_sequence">
      <ref name="desc"/>
      <ref name="label"/>
   </define>
   <define name="model.labelLike_sequenceOptional">
      <optional>
         <ref name="desc"/>
      </optional>
      <optional>
         <ref name="label"/>
      </optional>
   </define>
   <define name="model.labelLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="desc"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="label"/>
      </zeroOrMore>
   </define>
   <define name="model.labelLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="desc"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="label"/>
      </oneOrMore>
   </define>
   <define name="model.listLike">
      <choice>
         <ref name="list"/>
         <ref name="table"/>
         <ref name="listPerson"/>
      </choice>
   </define>
   <define name="model.listLike_alternation">
      <choice>
         <ref name="list"/>
         <ref name="table"/>
         <ref name="listPerson"/>
      </choice>
   </define>
   <define name="model.listLike_sequence">
      <ref name="list"/>
      <ref name="table"/>
      <ref name="listPerson"/>
   </define>
   <define name="model.listLike_sequenceOptional">
      <optional>
         <ref name="list"/>
      </optional>
      <optional>
         <ref name="table"/>
      </optional>
      <optional>
         <ref name="listPerson"/>
      </optional>
   </define>
   <define name="model.listLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="list"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="table"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="listPerson"/>
      </zeroOrMore>
   </define>
   <define name="model.listLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="list"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="table"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="listPerson"/>
      </oneOrMore>
   </define>
   <define name="model.noteLike">
      <choice>
         <ref name="note"/>
      </choice>
   </define>
   <define name="model.noteLike_alternation">
      <choice>
         <ref name="note"/>
      </choice>
   </define>
   <define name="model.noteLike_sequence">
      <ref name="note"/>
   </define>
   <define name="model.noteLike_sequenceOptional">
      <optional>
         <ref name="note"/>
      </optional>
   </define>
   <define name="model.noteLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="note"/>
      </zeroOrMore>
   </define>
   <define name="model.noteLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="note"/>
      </oneOrMore>
   </define>
   <define name="model.lLike">
      <notAllowed/>
   </define>
   <define name="model.lLike_alternation">
      <notAllowed/>
   </define>
   <define name="model.lLike_sequence">
      <empty/>
   </define>
   <define name="model.lLike_sequenceOptional">
      <empty/>
   </define>
   <define name="model.lLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="model.lLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="model.pLike">
      <choice>
         <ref name="p"/>
      </choice>
   </define>
   <define name="model.pLike_alternation">
      <choice>
         <ref name="p"/>
      </choice>
   </define>
   <define name="model.pLike_sequence">
      <ref name="p"/>
   </define>
   <define name="model.pLike_sequenceOptional">
      <optional>
         <ref name="p"/>
      </optional>
   </define>
   <define name="model.pLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="p"/>
      </zeroOrMore>
   </define>
   <define name="model.pLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="p"/>
      </oneOrMore>
   </define>
   <define name="model.stageLike">
      <notAllowed/>
   </define>
   <define name="model.stageLike_alternation">
      <notAllowed/>
   </define>
   <define name="model.stageLike_sequence">
      <empty/>
   </define>
   <define name="model.stageLike_sequenceOptional">
      <empty/>
   </define>
   <define name="model.stageLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="model.stageLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="model.eventLike">
      <notAllowed/>
   </define>
   <define name="model.global.edit">
      <choice>
         <ref name="gap"/>
      </choice>
   </define>
   <define name="model.global.edit_alternation">
      <choice>
         <ref name="gap"/>
      </choice>
   </define>
   <define name="model.global.edit_sequence">
      <ref name="gap"/>
   </define>
   <define name="model.global.edit_sequenceOptional">
      <optional>
         <ref name="gap"/>
      </optional>
   </define>
   <define name="model.global.edit_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="gap"/>
      </zeroOrMore>
   </define>
   <define name="model.global.edit_sequenceRepeatable">
      <oneOrMore>
         <ref name="gap"/>
      </oneOrMore>
   </define>
   <define name="model.divPart">
      <choice>
         <ref name="model.lLike"/>
         <ref name="model.pLike"/>
      </choice>
   </define>
   <define name="model.persStateLike">
      <choice>
         <ref name="affiliation"/>
      </choice>
   </define>
   <define name="model.personLike">
      <choice>
         <ref name="person"/>
      </choice>
   </define>
   <define name="model.personPart">
      <choice>
         <ref name="model.biblLike"/>
         <ref name="model.eventLike"/>
         <ref name="model.persStateLike"/>
         <ref name="name"/>
         <ref name="idno"/>
      </choice>
   </define>
   <define name="model.placeNamePart">
      <choice>
         <ref name="placeName"/>
      </choice>
   </define>
   <define name="model.placeNamePart_alternation">
      <choice>
         <ref name="placeName"/>
      </choice>
   </define>
   <define name="model.placeNamePart_sequence">
      <ref name="placeName"/>
   </define>
   <define name="model.placeNamePart_sequenceOptional">
      <optional>
         <ref name="placeName"/>
      </optional>
   </define>
   <define name="model.placeNamePart_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="placeName"/>
      </zeroOrMore>
   </define>
   <define name="model.placeNamePart_sequenceRepeatable">
      <oneOrMore>
         <ref name="placeName"/>
      </oneOrMore>
   </define>
   <define name="model.placeStateLike">
      <choice>
         <ref name="model.placeNamePart"/>
      </choice>
   </define>
   <define name="model.placeStateLike_alternation">
      <choice>
         <ref name="model.placeNamePart_alternation"/>
      </choice>
   </define>
   <define name="model.placeStateLike_sequence">
      <ref name="model.placeNamePart_sequence"/>
   </define>
   <define name="model.placeStateLike_sequenceOptional">
      <optional>
         <ref name="model.placeNamePart_sequenceOptional"/>
      </optional>
   </define>
   <define name="model.placeStateLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="model.placeNamePart_sequenceOptionalRepeatable"/>
      </zeroOrMore>
   </define>
   <define name="model.placeStateLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="model.placeNamePart_sequenceRepeatable"/>
      </oneOrMore>
   </define>
   <define name="model.publicationStmtPart.agency">
      <choice>
         <ref name="publisher"/>
      </choice>
   </define>
   <define name="model.publicationStmtPart.detail">
      <choice>
         <ref name="model.ptrLike"/>
         <ref name="date"/>
         <ref name="pubPlace"/>
         <ref name="idno"/>
         <ref name="availability"/>
      </choice>
   </define>
   <define name="model.availabilityPart">
      <choice>
         <ref name="licence"/>
      </choice>
   </define>
   <define name="model.certLike">
      <notAllowed/>
   </define>
   <define name="model.descLike">
      <choice>
         <ref name="desc"/>
      </choice>
   </define>
   <define name="model.quoteLike">
      <choice>
         <ref name="quote"/>
         <ref name="cit"/>
      </choice>
   </define>
   <define name="model.quoteLike_alternation">
      <choice>
         <ref name="quote"/>
         <ref name="cit"/>
      </choice>
   </define>
   <define name="model.quoteLike_sequence">
      <ref name="quote"/>
      <ref name="cit"/>
   </define>
   <define name="model.quoteLike_sequenceOptional">
      <optional>
         <ref name="quote"/>
      </optional>
      <optional>
         <ref name="cit"/>
      </optional>
   </define>
   <define name="model.quoteLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="quote"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="cit"/>
      </zeroOrMore>
   </define>
   <define name="model.quoteLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="quote"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="cit"/>
      </oneOrMore>
   </define>
   <define name="model.attributable">
      <choice>
         <ref name="model.quoteLike"/>
      </choice>
   </define>
   <define name="model.attributable_alternation">
      <choice>
         <ref name="model.quoteLike_alternation"/>
      </choice>
   </define>
   <define name="model.attributable_sequence">
      <ref name="model.quoteLike_sequence"/>
   </define>
   <define name="model.attributable_sequenceOptional">
      <optional>
         <ref name="model.quoteLike_sequenceOptional"/>
      </optional>
   </define>
   <define name="model.attributable_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="model.quoteLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
   </define>
   <define name="model.attributable_sequenceRepeatable">
      <oneOrMore>
         <ref name="model.quoteLike_sequenceRepeatable"/>
      </oneOrMore>
   </define>
   <define name="model.respLike">
      <choice>
         <ref name="author"/>
         <ref name="editor"/>
         <ref name="respStmt"/>
      </choice>
   </define>
   <define name="model.divWrapper">
      <notAllowed/>
   </define>
   <define name="model.divTopPart">
      <choice>
         <ref name="model.headLike"/>
      </choice>
   </define>
   <define name="model.divTop">
      <choice>
         <ref name="model.divWrapper"/>
         <ref name="model.divTopPart"/>
      </choice>
   </define>
   <define name="model.frontPart.drama">
      <notAllowed/>
   </define>
   <define name="model.pLike.front">
      <choice>
         <ref name="head"/>
      </choice>
   </define>
   <define name="model.divBottomPart">
      <notAllowed/>
   </define>
   <define name="model.divBottom">
      <choice>
         <ref name="model.divWrapper"/>
         <ref name="model.divBottomPart"/>
      </choice>
   </define>
   <define name="model.imprintPart">
      <choice>
         <ref name="publisher"/>
         <ref name="biblScope"/>
         <ref name="pubPlace"/>
      </choice>
   </define>
   <define name="model.addressLike">
      <choice>
         <ref name="email"/>
         <ref name="affiliation"/>
      </choice>
   </define>
   <define name="model.addressLike_alternation">
      <choice>
         <ref name="email"/>
         <ref name="affiliation"/>
      </choice>
   </define>
   <define name="model.addressLike_sequence">
      <ref name="email"/>
      <ref name="affiliation"/>
   </define>
   <define name="model.addressLike_sequenceOptional">
      <optional>
         <ref name="email"/>
      </optional>
      <optional>
         <ref name="affiliation"/>
      </optional>
   </define>
   <define name="model.addressLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="email"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="affiliation"/>
      </zeroOrMore>
   </define>
   <define name="model.addressLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="email"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="affiliation"/>
      </oneOrMore>
   </define>
   <define name="model.nameLike">
      <choice>
         <ref name="model.nameLike.agent"/>
         <ref name="model.offsetLike"/>
         <ref name="model.placeStateLike"/>
         <ref name="idno"/>
         <ref name="model.persNamePart"/>
      </choice>
   </define>
   <define name="model.nameLike_alternation">
      <choice>
         <ref name="model.nameLike.agent_alternation"/>
         <ref name="model.offsetLike_alternation"/>
         <ref name="model.placeStateLike_alternation"/>
         <ref name="idno"/>
         <ref name="model.persNamePart_alternation"/>
      </choice>
   </define>
   <define name="model.nameLike_sequence">
      <ref name="model.nameLike.agent_sequence"/>
      <ref name="model.offsetLike_sequence"/>
      <ref name="model.placeStateLike_sequence"/>
      <ref name="idno"/>
      <ref name="model.persNamePart_sequence"/>
   </define>
   <define name="model.nameLike_sequenceOptional">
      <optional>
         <ref name="model.nameLike.agent_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="model.offsetLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="model.placeStateLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="idno"/>
      </optional>
      <optional>
         <ref name="model.persNamePart_sequenceOptional"/>
      </optional>
   </define>
   <define name="model.nameLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="model.nameLike.agent_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="model.offsetLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="model.placeStateLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="idno"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="model.persNamePart_sequenceOptionalRepeatable"/>
      </zeroOrMore>
   </define>
   <define name="model.nameLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="model.nameLike.agent_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="model.offsetLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="model.placeStateLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="idno"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="model.persNamePart_sequenceRepeatable"/>
      </oneOrMore>
   </define>
   <define name="model.global">
      <choice>
         <ref name="model.global.meta"/>
         <ref name="model.milestoneLike"/>
         <ref name="model.noteLike"/>
         <ref name="model.global.edit"/>
         <ref name="figure"/>
      </choice>
   </define>
   <define name="model.biblPart">
      <choice>
         <ref name="model.respLike"/>
         <ref name="model.imprintPart"/>
         <ref name="quote"/>
         <ref name="series"/>
         <ref name="bibl"/>
         <ref name="edition"/>
         <ref name="availability"/>
      </choice>
   </define>
   <define name="model.frontPart">
      <choice>
         <ref name="model.frontPart.drama"/>
         <ref name="listBibl"/>
      </choice>
   </define>
   <define name="model.pPart.data">
      <choice>
         <ref name="model.dateLike"/>
         <ref name="model.measureLike"/>
         <ref name="model.addressLike"/>
         <ref name="model.nameLike"/>
      </choice>
   </define>
   <define name="model.pPart.data_alternation">
      <choice>
         <ref name="model.dateLike_alternation"/>
         <ref name="model.measureLike_alternation"/>
         <ref name="model.addressLike_alternation"/>
         <ref name="model.nameLike_alternation"/>
      </choice>
   </define>
   <define name="model.pPart.data_sequence">
      <ref name="model.dateLike_sequence"/>
      <ref name="model.measureLike_sequence"/>
      <ref name="model.addressLike_sequence"/>
      <ref name="model.nameLike_sequence"/>
   </define>
   <define name="model.pPart.data_sequenceOptional">
      <optional>
         <ref name="model.dateLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="model.measureLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="model.addressLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="model.nameLike_sequenceOptional"/>
      </optional>
   </define>
   <define name="model.pPart.data_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="model.dateLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="model.measureLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="model.addressLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="model.nameLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
   </define>
   <define name="model.pPart.data_sequenceRepeatable">
      <oneOrMore>
         <ref name="model.dateLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="model.measureLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="model.addressLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="model.nameLike_sequenceRepeatable"/>
      </oneOrMore>
   </define>
   <define name="model.inter">
      <choice>
         <ref name="model.egLike"/>
         <ref name="model.oddDecl"/>
         <ref name="model.biblLike"/>
         <ref name="model.labelLike"/>
         <ref name="model.listLike"/>
         <ref name="model.stageLike"/>
         <ref name="model.attributable"/>
      </choice>
   </define>
   <define name="model.cmc">
      <notAllowed/>
   </define>
   <define name="model.common">
      <choice>
         <ref name="model.divPart"/>
         <ref name="model.inter"/>
         <ref name="model.cmc"/>
         <ref name="q"/>
      </choice>
   </define>
   <define name="model.phrase">
      <choice>
         <ref name="model.segLike"/>
         <ref name="model.highlighted"/>
         <ref name="model.graphicLike"/>
         <ref name="model.pPart.msdesc"/>
         <ref name="model.pPart.edit"/>
         <ref name="model.ptrLike"/>
         <ref name="model.lPart"/>
         <ref name="model.phrase.xml"/>
         <ref name="model.specDescLike"/>
         <ref name="model.pPart.data"/>
      </choice>
   </define>
   <define name="model.paraPart">
      <choice>
         <ref name="model.gLike"/>
         <ref name="model.lLike"/>
         <ref name="model.global"/>
         <ref name="model.inter"/>
         <ref name="model.phrase"/>
      </choice>
   </define>
   <define name="model.limitedPhrase">
      <choice>
         <ref name="model.hiLike"/>
         <ref name="model.emphLike"/>
         <ref name="model.pPart.msdesc"/>
         <ref name="model.pPart.editorial"/>
         <ref name="model.ptrLike"/>
         <ref name="model.phrase.xml"/>
         <ref name="model.pPart.data"/>
      </choice>
   </define>
   <define name="model.divLike">
      <choice>
         <ref name="div"/>
      </choice>
   </define>
   <define name="model.divGenLike">
      <notAllowed/>
   </define>
   <define name="model.div1Like">
      <notAllowed/>
   </define>
   <define name="model.applicationLike">
      <choice>
         <ref name="application"/>
      </choice>
   </define>
   <define name="model.teiHeaderPart">
      <choice>
         <ref name="encodingDesc"/>
         <ref name="profileDesc"/>
      </choice>
   </define>
   <define name="model.sourceDescPart">
      <notAllowed/>
   </define>
   <define name="model.encodingDescPart">
      <choice>
         <ref name="projectDesc"/>
         <ref name="tagsDecl"/>
         <ref name="appInfo"/>
      </choice>
   </define>
   <define name="model.profileDescPart">
      <choice>
         <ref name="particDesc"/>
         <ref name="langUsage"/>
         <ref name="textClass"/>
      </choice>
   </define>
   <define name="model.resource">
      <choice>
         <ref name="text"/>
      </choice>
   </define>
   <define name="att.personal.attributes">
      <ref name="att.naming.attributes"/>
   </define>
   <define name="p">
      <element name="p">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(paragraph) marks paragraphs in prose. [3.1. Paragraphs 7.2.5. Speech Contents]</a:documentation>
         <ref name="macro.paraContent"/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-p-abstractModel-structure-p-in-ab-or-p-constraint-rule-9">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:p">
               <sch:report test="(ancestor::tei:ab or ancestor::tei:p) and                        not( ancestor::tei:floatingText                           | parent::tei:exemplum                           | parent::tei:item                           | parent::tei:note                           | parent::tei:q                           | parent::tei:quote                           | parent::tei:remarks                           | parent::tei:said                           | parent::tei:sp                           | parent::tei:stage                           | parent::tei:cell                           | parent::tei:figure )">
          Abstract model violation: Paragraphs may not occur inside other paragraphs or ab elements.
        </sch:report>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-p-abstractModel-structure-p-in-l-constraint-rule-10">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:l//tei:p">
               <sch:assert test="ancestor::tei:floatingText | parent::tei:figure | parent::tei:note">
          Abstract model violation: Metrical lines may not contain higher-level structural elements such as div, p, or ab, unless p is a child of figure or note, or is a descendant of floatingText.
        </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.written.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="foreign">
      <element name="foreign">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(foreign) identifies a word or phrase as belonging to some language other than that of the surrounding text. [3.3.2.1. Foreign Words or Expressions]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="emph">
      <element name="emph">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(Emphasis (italicization)) The <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;emph&gt;</code> element is used for emphasized text, and will be rendered in italics. [3.3.2.2. Emphatic Words and Phrases 3.3.2. Emphasis, Foreign Words, and Unusual Language]</a:documentation>
         <ref name="macro.paraContent"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.written.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="hi">
      <element name="hi">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(highlighted) marks a word or phrase as graphically distinct from the surrounding text, for reasons concerning which no claim is made. [3.3.2.2. Emphatic Words and Phrases 3.3.2. Emphasis, Foreign Words, and Unusual Language]</a:documentation>
         <ref name="macro.paraContent"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.written.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="quote">
      <element name="quote">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(quotation) contains a phrase or passage attributed by the narrator or author to some agency external to the text. [3.3.3. Quotation 4.3.1. Grouped Texts]</a:documentation>
         <ref name="macro.specialPara"/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-quote-jtei.sch-core-constraint-rule-11">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:quote">
               <sch:assert see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#quotations"
                           test="id(substring-after(@source, '#'))/(self::tei:ref[@type eq 'bibl']|self::tei:bibl[ancestor::tei:body])">
                  <sch:name/> must have a @source that points to the @xml:id of either a
                    ref[type='bibl'], or a &lt;bibl&gt; in the &lt;body&gt;. </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.notated.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="q">
      <element name="q">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(quoted) contains material which is distinguished from the surrounding text using quotation marks or a similar method, for any one of a variety of reasons including, but not limited to: direct speech or thought, technical terms or jargon, authorial distance, quotations from elsewhere, and passages that are mentioned but not used. [3.3.3. Quotation]</a:documentation>
         <ref name="macro.specialPara"/>
         <ref name="att.global.attributes"/>
         <ref name="att.ascribed.directed.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="cit">
      <element name="cit">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(cited block quotation) contains a quotation from some other document, together with a bibliographic reference to its source. In jTEI, this is used only for block quotations, and it will be rendered as a block. For inline quotations, use the <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;quote&gt;</code> element and link it to a reference using <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">@source</code>. [3.3.3. Quotation 4.3.1. Grouped Texts 10.3.5.1. Examples]</a:documentation>
         <oneOrMore>
            <choice>
               <ref name="quote"/>
               <ref name="model.biblLike"/>
               <ref name="model.ptrLike"/>
            </choice>
         </oneOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-cit-jtei.sch-cit-constraint-rule-12">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:cit"
                      role="warning">
               <sch:assert test="tei:ref"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#quotations">
                  <sch:name/> is normally expected to have a bibliographic reference (ref[@type="bibl"]). Please make sure you intended not to add one here.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mentioned">
      <element name="mentioned">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">marks words or phrases mentioned, not used. [3.3.3. Quotation]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="soCalled">
      <element name="soCalled">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(so called) contains a word or phrase for which the author or narrator indicates a disclaiming of responsibility, for example by the use of scare quotes or italics. [3.3.3. Quotation]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="desc">
      <element name="desc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(description) contains a short description of the purpose, function, or use of its parent element, or when the parent is a documentation element, describes or defines the object being documented.  [23.4.1. Description of Components]</a:documentation>
         <ref name="macro.limitedContent"/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-desc-deprecationInfo-only-in-deprecated-constraint-rule-13">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:desc[ @type eq 'deprecationInfo']">
               <sch:assert test="../@validUntil">Information about a
        deprecation should only be present in a specification element
        that is being deprecated: that is, only an element that has a
        @validUntil attribute should have a child &lt;desc
        type="deprecationInfo"&gt;.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="term">
      <element name="term">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(term) contains a single-word, multi-word, or symbolic designation which is regarded as a technical term. [3.4.1. Terms and Glosses]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="gap">
      <element name="gap">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(gap) indicates a point where material has been omitted in a transcription, whether for editorial reasons described in the TEI header, as part of sampling practice, or because the material is illegible, invisible, or inaudible. [3.5.3. Additions, Deletions, and Omissions]</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="model.descLike"/>
               <ref name="model.certLike"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-gap-jtei.sch-gap-constraint-rule-14">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:gap">
               <sch:report test="following-sibling::node()[1][self::text()] and starts-with(following-sibling::node()[1], '.')"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#inline_rhetorical">
                    A <sch:name/> element should follow a period rather than precede it when an ellipsis follows the end of a sentence.
                  </sch:report>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-gap-jtei.sch-gap-ws-constraint-rule-15">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:gap">
               <sch:report test="preceding-sibling::node()[1][self::text()][matches(., '\.\s+$')]"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#inline_rhetorical">
                    A <sch:name/> should follow a period directly, without preceding whitespace.
                  </sch:report>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.dimensions.attributes"/>
         <ref name="att.editLike.attributes"/>
         <optional>
            <attribute name="reason">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(reason) gives the reason for omission.
Suggested values include: 1] cancelled (cancelled); 2] deleted (deleted); 3] editorial (editorial); 4] illegible (illegible); 5] inaudible (inaudible); 6] irrelevant (irrelevant); 7] sampling (sampling)</a:documentation>
               <list>
                  <oneOrMore>
                     <choice>
                        <value>cancelled</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(cancelled) </a:documentation>
                        <value>deleted</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(deleted) </a:documentation>
                        <value>editorial</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(editorial) for features omitted from transcription due to editorial policy</a:documentation>
                        <value>illegible</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(illegible) </a:documentation>
                        <value>inaudible</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(inaudible) </a:documentation>
                        <value>irrelevant</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(irrelevant) </a:documentation>
                        <value>sampling</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(sampling) </a:documentation>
                        <data type="token">
                           <param name="pattern">[^\p{C}\p{Z}]+</param>
                        </data>
                     </choice>
                  </oneOrMore>
               </list>
            </attribute>
         </optional>
         <optional>
            <attribute name="agent">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(agent) in the case of text omitted because of damage, categorizes the cause of the damage, if it can be identified.
Sample values include: 1] rubbing (rubbing); 2] mildew (mildew); 3] smoke (smoke)</a:documentation>
               <data type="token">
                  <param name="pattern">[^\p{C}\p{Z}]+</param>
               </data>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="name">
      <element name="name">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(name, proper noun) contains a proper noun or noun phrase. [3.6.1. Referring Strings]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.datable.w3c.attribute.when"/>
         <ref name="att.datable.w3c.attribute.notBefore"/>
         <ref name="att.datable.w3c.attribute.from"/>
         <ref name="att.datable.w3c.attribute.to"/>
         <ref name="att.editLike.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="email">
      <element name="email">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(electronic mail address) contains an email address identifying a location to which email messages can be delivered. [3.6.2. Addresses]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="num">
      <element name="num">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(number) contains a number, written in any form. [3.6.3. Numbers and
Measures]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the type of numeric value. In jTEI, we particularly use num[@type='ordinal'] for e.g. 21st or 2nd; in rendering, this results in the non-numeric suffix to the number being output as superscript. Note, however, that ordinals for centuries should be spelled out, not written using digits (nineteenth century, not 19th century).
Suggested values include: 1] cardinal; 2] ordinal; 3] fraction; 4] percentage</a:documentation>
               <choice>
                  <value>cardinal</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">absolute number, e.g. 21, 21.5</a:documentation>
                  <value>ordinal</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">ordinal number, e.g. 21st</a:documentation>
                  <value>fraction</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">fraction, e.g. one half or three-quarters</a:documentation>
                  <value>percentage</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a percentage</a:documentation>
                  <data type="token">
                     <param name="pattern">[^\p{C}\p{Z}]+</param>
                  </data>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="value">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies the value of the number in standard form.</a:documentation>
               <choice>
                  <data type="double"/>
                  <data type="token">
                     <param name="pattern">(\-?[\d]+/\-?[\d]+)</param>
                  </data>
                  <data type="decimal"/>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="date">
      <element name="date">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(date) contains a date in any format. [3.6.4. Dates and Times 2.2.4. Publication, Distribution, Licensing, etc. 2.6. The Revision Description 3.12.2.4. Imprint, Size of a Document, and Reprint Information 16.2.3. The Setting Description 14.4. Dates]</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="model.gLike"/>
               <ref name="model.phrase"/>
               <ref name="model.global"/>
            </choice>
         </zeroOrMore>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.datable.attributes"/>
         <ref name="att.dimensions.attributes"/>
         <ref name="att.editLike.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="abbr">
      <element name="abbr">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(abbreviation) contains an abbreviation of any sort. [3.6.5. Abbreviations and Their Expansions]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(type) allows the encoder to classify the abbreviation according to some convenient typology.
Sample values include: 1] suspension (suspension); 2] contraction (contraction); 3] brevigraph; 4] superscription (superscription); 5] acronym (acronym); 6] title (title); 7] organization (organization); 8] geographic (geographic)</a:documentation>
               <data type="token">
                  <param name="pattern">[^\p{C}\p{Z}]+</param>
               </data>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="ptr">
      <element name="ptr">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(pointer) defines a pointer to another location. [3.7. Simple Links and Cross-References 17.1. Links]</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-ptr-jtei.sch-ptr-multipleTargets-constraint-rule-16">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:ptr[not(@type='crossref')]">
               <sch:report test="count(tokenize(normalize-space(@target), '\s+')) &gt; 1"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#internal_linking"> Multiple
                    values in @target are only allowed for <sch:name/>[@type='crossref'].
                  </sch:report>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-ptr-ptrAtts-constraint-rule-17">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:ptr">
               <sch:report test="@target and @cRef">Only one of the attributes @target and @cRef may be supplied on <sch:name/>.</sch:report>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <attribute name="target">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the destination of the reference by supplying one or more URI References.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="anyURI">
                     <param name="pattern">\S+</param>
                  </data>
               </oneOrMore>
            </list>
         </attribute>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">characterizes the element in some sense, using any convenient classification scheme or typology.</a:documentation>
               <choice>
                  <value>crossref</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(A cross-reference (reference to another part of the article).) To link to another part of your article, use `&lt;ptr type="crossref"&gt;`, and point to the <code xmlns="http://www.w3.org/1999/xhtml"
                           xmlns:rng="http://relaxng.org/ns/structure/1.0">@xml:id</code> value of the target location: `&lt;ptr type="crossref" target="#intro"&gt;`. The <code xmlns="http://www.w3.org/1999/xhtml"
                           xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;ptr&gt;</code> element will be expanded to create an appropriate link to the target location.</a:documentation>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="ref">
      <element name="ref">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(reference) defines a reference to another location, possibly modified by additional text or comment. [3.7. Simple Links and Cross-References 17.1. Links]</a:documentation>
         <ref name="macro.paraContent"/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-ref-jtei.sch-ref-multipleTargets-constraint-rule-18">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:ref">
               <sch:report test="count(tokenize(normalize-space(@target), '\s+')) &gt; 1"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#external_linking">
                  <sch:name/> with multiple values for @target is not supported. </sch:report>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-ref-jtei.sch-biblref-parentheses-constraint-rule-19">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:ref[@type eq 'bibl']">
               <sch:assert test="not(matches(., '^\(.*\)$'))"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#internal_linking">
                    Parentheses are not part of bibliographic references. Please move them out of <sch:name/>.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-ref-jtei.sch-biblref-target-constraint-rule-20">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:ref[@type eq 'bibl']">
               <sch:assert test="id(substring-after(@target, '#'))/(self::tei:bibl|self::tei:person[ancestor::tei:particDesc/parent::tei:profileDesc])"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#internal_linking"> A bibliographic reference must point with a @target to the @xml:id of an entry in the div[@type="bibliography"].
                  </sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-ref-jtei.sch-biblref-type-constraint-rule-21">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:ref[id(substring-after(@target, '#'))/self::tei:bibl]">
               <sch:assert test="@type eq 'bibl'"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#internal_linking"
                           sqf:fix="bibltype.add">
                    A bibliographic reference must be typed as @type="bibl".
                  </sch:assert>
               <sqf:fix id="bibltype.add">
                  <sqf:description>
                     <sqf:title>Add @type='bibl'.</sqf:title>
                  </sqf:description>
                  <sqf:add match="." node-type="attribute" target="type" select="'bibl'"/>
               </sqf:fix>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-ref-refAtts-constraint-rule-22">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:ref">
               <sch:report test="@target and @cRef">Only one of the attributes @target and @cRef may be supplied on <sch:name/>.</sch:report>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <attribute name="target">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the destination of the reference by supplying one or more URI References.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="anyURI">
                     <param name="pattern">\S+</param>
                  </data>
               </oneOrMore>
            </list>
         </attribute>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">characterizes the element in some sense, using any convenient classification scheme or typology.</a:documentation>
               <choice>
                  <value>crossref</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(A cross-reference (reference to another part of the article).) To link to another part of your article, use `&lt;ref type="crossref"&gt;`, and point to the <code xmlns="http://www.w3.org/1999/xhtml"
                           xmlns:rng="http://relaxng.org/ns/structure/1.0">@xml:id</code> value of the target location: `&lt;ref type="crossref" target="#intro"&gt;`.</a:documentation>
                  <value>bibl</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(A bibliographic reference (reference to an entry in the bibliography).) To link to a bibliographic description in the bibliography, use `&lt;ref type="bibl"&gt;`, and point to the <code xmlns="http://www.w3.org/1999/xhtml"
                           xmlns:rng="http://relaxng.org/ns/structure/1.0">@xml:id</code> value of the target location: `&lt;ref type="bibl" target="#ide88"&gt;`.</a:documentation>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="list">
      <element name="list">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(list) contains any sequence of items organized as a list. [3.8. Lists]</a:documentation>
         <group>
            <zeroOrMore>
               <choice>
                  <ref name="model.divTop"/>
                  <ref name="model.global"/>
                  <zeroOrMore>
                     <ref name="desc"/>
                  </zeroOrMore>
               </choice>
            </zeroOrMore>
            <choice>
               <oneOrMore>
                  <ref name="item"/>
                  <zeroOrMore>
                     <ref name="model.global"/>
                  </zeroOrMore>
               </oneOrMore>
               <group>
                  <oneOrMore>
                     <ref name="label"/>
                     <zeroOrMore>
                        <ref name="model.global"/>
                     </zeroOrMore>
                     <ref name="item"/>
                     <zeroOrMore>
                        <ref name="model.global"/>
                     </zeroOrMore>
                  </oneOrMore>
               </group>
            </choice>
            <zeroOrMore>
               <ref name="model.divBottom"/>
               <zeroOrMore>
                  <ref name="model.global"/>
               </zeroOrMore>
            </zeroOrMore>
         </group>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-list-gloss-list-must-have-labels-constraint-rule-23">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:list[@type='gloss']">
               <sch:assert test="tei:label">The content of a "gloss" list should include a sequence of one or more pairs of a label element followed by an item element</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attribute.xmlid"/>
         <ref name="att.global.attribute.n"/>
         <ref name="att.global.attribute.xmllang"/>
         <ref name="att.global.attribute.xmlbase"/>
         <ref name="att.global.attribute.xmlspace"/>
         <ref name="att.global.rendition.attribute.rendition"/>
         <ref name="att.global.responsibility.attribute.cert"/>
         <ref name="att.global.responsibility.attribute.resp"/>
         <ref name="att.global.source.attribute.source"/>
         <ref name="att.cmc.attributes"/>
         <optional>
            <attribute name="rend">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(rendition) describes the way the list should be rendered. </a:documentation>
               <list>
                  <oneOrMore>
                     <choice>
                        <value>bulleted</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(A bulleted list) Bulleted lists will appear with each item preceded by a leading dot.</a:documentation>
                        <value>inline</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(An inline list) Inline lists appear within a paragraph of ordinary text; list items do not start on a new line, but follow immediately from the preceding text or item. The value "inline" may be combined with another value; for example, "ordered inline" means that the list will be rendered inline, but each item will be preceded by a number in parentheses: (1) first item (2) second item, and so on.</a:documentation>
                        <value>ordered</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(A numbered list) Items in a numbered list will be preceded by a number. If the list is inline, then the number will be enclosed in parentheses, but if it is a block-level list (the default), the number will be followed by a period. </a:documentation>
                        <value>simple</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(A simple list (no bullets or numbers)) Items in a simple list will be rendered with no bullet or preceding number at all.</a:documentation>
                     </choice>
                  </oneOrMore>
               </list>
            </attribute>
         </optional>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(type) describes the nature of the items in the list.</a:documentation>
               <choice>
                  <value>gloss</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="item">
      <element name="item">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(item) contains one component of a list. [3.8. Lists 2.6. The Revision Description]</a:documentation>
         <ref name="macro.specialPara"/>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="label">
      <element name="label">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(label) contains any label or heading used to identify part of a text, typically but not exclusively in a list or glossary. [3.8. Lists]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.written.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="head">
      <element name="head">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(heading) contains any type of heading, for example the title of a section, or the heading of a list, glossary, manuscript description, etc. [4.2.1. Headings and Trailers]</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="model.gLike"/>
               <ref name="model.phrase"/>
               <ref name="model.inter"/>
               <ref name="model.lLike"/>
               <ref name="model.global"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-head-jtei.sch-head-number-constraint-rule-24">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:head">
               <sch:report test="matches(., '^\s*(((figure|fig\.|table|example|ex\.|section) )\d|\d+\.\d?)', 'i')"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#body">
                    Headings are numbered and labeled automatically, please remove the hard-coded label from the text.
                  </sch:report>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-head-jtei.sch-figure-head-constraint-rule-25">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:figure/tei:head">
               <sch:assert test="@type = ('legend', 'license')"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#figures"> Figure titles (&lt;head&gt;) must have a type
                    'legend' or 'license'. </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.placement.attributes"/>
         <ref name="att.written.attributes"/>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the type of heading. In jTEI, we only use this attribute in the context of a <code xmlns="http://www.w3.org/1999/xhtml"
                        xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;head&gt;</code> element in <code xmlns="http://www.w3.org/1999/xhtml"
                        xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;figure&gt;</code>, where it must have one of two values.</a:documentation>
               <choice>
                  <value>legend</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">the caption for a figure.</a:documentation>
                  <value>license</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">licensing information that must be shown alongside the figure.</a:documentation>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="note">
      <element name="note">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(note) contains a note or annotation. [3.9.1. Notes and Simple Annotation 2.2.6. The Notes Statement 3.12.2.8. Notes and Statement of Language 10.3.5.4. Notes within Entries]</a:documentation>
         <ref name="macro.specialPara"/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-note-jtei.sch-note-punctuation-constraint-rule-26">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:note">
               <sch:assert test="not(following::text()[not(ancestor::tei:note)][1][matches(., '^[,\.:;!?\]]')])"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#footnotes">
                    Footnotes should follow punctuation marks, not precede them. Place 
                    your &lt;<sch:name/>&gt; element after the punctuation mark.
                  </sch:assert>
            </sch:rule>
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:note">
               <sch:report test="preceding::text()[not(ancestor::tei:note)][1][matches(., '—$')]"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#footnotes">
                    Footnotes should precede the dash, not follow it. Place 
                    your &lt;<sch:name/>&gt; element before the dash.
                  </sch:report>
            </sch:rule>
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:note"
                      role="warning">
               <sch:report test="following::text()[not(ancestor::tei:note)][1][matches(normalize-space(), '^\)')]"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#footnotes">
                    Footnotes may be placed before closing parentheses, though this is
                    exceptional. Please check if this note's placement is correct.
                    Otherwise, move it after the closing parenthesis.
                  </sch:report>
            </sch:rule>
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:note"
                      role="warning">
               <sch:report test="descendant::node()[last()][                   not(matches(normalize-space(), '(^|[^.?!:;,])[.?!]$')) or                   preceding-sibling::node()[1]/descendant-or-self::*[last()]                       [matches(normalize-space(), '[.?!:;,]$')]                       ]"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#footnotes">
                  A footnote should end a with a single closing punctuation character.
                  </sch:report>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-note-jtei.sch-note-blocks-constraint-rule-30">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:note">
               <sch:report test=".//(tei:cit|tei:table|tei:list[not(tokenize(@rend, '\s+')[. eq 'inline'])]|tei:figure|eg:egXML|tei:eg)"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#footnotes"> No block-level elements (&lt;cit&gt;, &lt;table&gt;, &lt;figure&gt;, &lt;egXML&gt;, &lt;eg&gt;, &lt;list&gt; which do not have the value inline for @rend) are allowed inside <sch:name/>. </sch:report>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.written.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="graphic">
      <element name="graphic">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(graphic) indicates the location of a graphic or illustration, either forming part of a text, or providing an image of it. [3.10. Graphics and Other Non-textual Components 12.1. Digital Facsimiles]</a:documentation>
         <zeroOrMore>
            <ref name="model.descLike"/>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-graphic-jtei.sch-graphic-dimensions-constraint-rule-31">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:graphic">
               <sch:assert test="matches(@width, '\d+px') and matches(@height, '\d+px')"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#figures">
                    Width and height in pixels must be specified for any <sch:name/>.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-graphic-jtei.sch-graphic-context-constraint-rule-32">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:graphic">
               <sch:assert test="parent::tei:figure"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#figures">
                  <sch:name/> may only occur inside &lt;figure&gt;. </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.media.attributes"/>
         <ref name="att.resourced.attributes"/>
         <ref name="att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="lb">
      <element name="lb">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(line beginning) marks the beginning of a topographic line in some edition or version of a text. [3.11.3. Milestone
Elements 7.2.5. Speech Contents]</a:documentation>
         <empty/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="series">
      <element name="series">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(series information) contains information about the series in which a book or other bibliographic item has appeared. [3.12.2.1. Analytic, Monographic, and Series Levels]</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="model.gLike"/>
               <ref name="title"/>
               <ref name="model.ptrLike"/>
               <ref name="editor"/>
               <ref name="respStmt"/>
               <ref name="biblScope"/>
               <ref name="idno"/>
               <ref name="model.global"/>
               <ref name="availability"/>
            </choice>
         </zeroOrMore>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="author">
      <element name="author">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(author) in a bibliographic reference, contains the name(s) of an author, personal or corporate, of a work; for example in the same form as that provided by a recognized bibliographic name authority. [3.12.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-author-jtei.sch-author-constraint-rule-33">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:titleStmt/tei:author">
               <sch:assert test="tei:name and tei:affiliation and tei:email"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#structure">
                    Author information in the &lt;titleStmt&gt; must include &lt;name&gt;, &lt;affiliation&gt; and &lt;email&gt;.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.datable.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="editor">
      <element name="editor">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">contains a secondary statement of responsibility for a bibliographic item, for example the name of an individual, institution or organization, (or of several such) acting as editor, compiler, translator, etc. [3.12.2.2. Titles, Authors, and Editors]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.datable.attributes"/>
         <optional>
            <attribute name="role">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">may be used to specify further information about the entity referenced by this name in the form of a set of whitespace-separated values, for example the occupation of a person, or the status of a place.</a:documentation>
               <list>
                  <oneOrMore>
                     <choice>
                        <value>translator</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                        <value>guest</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                        <value>chief</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                        <value>managing</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                        <value>technical</value>
                        <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                     </choice>
                  </oneOrMore>
               </list>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="respStmt">
      <element name="respStmt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(statement of responsibility) supplies a statement of responsibility for the intellectual content of a text, edition, recording, or series, where the specialized elements for authors, editors, etc. do not suffice or do not apply. May also be used to encode information about individuals or organizations which have played a role in the production or distribution of a bibliographic work. [3.12.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement 2.2.2. The Edition Statement 2.2.5. The Series Statement]</a:documentation>
         <group>
            <choice>
               <group>
                  <oneOrMore>
                     <ref name="resp"/>
                  </oneOrMore>
                  <oneOrMore>
                     <ref name="model.nameLike.agent"/>
                  </oneOrMore>
               </group>
               <group>
                  <oneOrMore>
                     <ref name="model.nameLike.agent"/>
                  </oneOrMore>
                  <oneOrMore>
                     <ref name="resp"/>
                  </oneOrMore>
               </group>
            </choice>
            <zeroOrMore>
               <ref name="note"/>
            </zeroOrMore>
         </group>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-respStmt-jtei.sch-respSmt-constraint-rule-34">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:respStmt">
               <sch:assert test="ancestor::tei:sourceDesc">
                  <sch:name/> can only be used in the context of sourceDesc.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="resp">
      <element name="resp">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(responsibility) contains a phrase describing the nature of a person's intellectual responsibility, or an organization's role in the production or distribution of a work. [3.12.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement 2.2.2. The Edition Statement 2.2.5. The Series Statement]</a:documentation>
         <ref name="macro.phraseSeq.limited"/>
         <ref name="att.global.attributes"/>
         <ref name="att.datable.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="title">
      <element name="title">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(title) contains a title for any kind of work. [3.12.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement 2.2.5. The Series Statement]</a:documentation>
         <ref name="macro.paraContent"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.datable.attributes"/>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">classifies the title according to some convenient typology.</a:documentation>
               <choice>
                  <value>main</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(The main title of your article.) Academic articles often have a main title followed by a subtitle (sometimes with a colon separating them). If you have two such components in your article title, then in the <code xmlns="http://www.w3.org/1999/xhtml"
                           xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;titleStmt&gt;</code>, use `&lt;title type="main"&gt;` and `&lt;title type="sub"&gt;` to encode the two components of your title.</a:documentation>
                  <value>sub</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(The subtitle of your article.) Academic articles often have a main title followed by a subtitle (sometimes with a colon separating them). If you have two such components in your article title, then in the <code xmlns="http://www.w3.org/1999/xhtml"
                           xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;titleStmt&gt;</code>, use `&lt;title type="main"&gt;` and `&lt;title type="sub"&gt;` to encode the two components of your title.</a:documentation>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="level">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates the bibliographic level for a title, that is, whether it identifies an article, book, journal, series, or unpublished material.</a:documentation>
               <choice>
                  <value>a</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(analytic) the title applies to an analytic item, such as an article, poem, or other work published as part of a larger item.</a:documentation>
                  <value>m</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(monographic) the title applies to a monograph such as a book or other item considered to be a distinct publication, including single volumes of multi-volume works</a:documentation>
                  <value>j</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(journal) the title applies to any serial or periodical publication such as a journal, magazine, or newspaper</a:documentation>
                  <value>s</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(series) the title applies to a series of otherwise distinct publications such as a collection</a:documentation>
                  <value>u</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(unpublished) the title applies to any unpublished material (including theses and dissertations unless published by a commercial press)</a:documentation>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="publisher">
      <element name="publisher">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(publisher) provides the name of the organization responsible for the publication or distribution of a bibliographic item. [3.12.2.4. Imprint, Size of a Document, and Reprint Information 2.2.4. Publication, Distribution, Licensing, etc.]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="biblScope">
      <element name="biblScope">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(scope of bibliographic reference) defines the scope of a bibliographic reference, for example as a list of page numbers, or a named subdivision of a larger work. [3.12.2.5. Scopes and Ranges in Bibliographic Citations]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <optional>
            <attribute name="unit">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">identifies the unit of information conveyed by the element.</a:documentation>
               <choice>
                  <value>chapter</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                  <value>issue</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                  <value>page</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                  <value>part</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                  <value>volume</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="pubPlace">
      <element name="pubPlace">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(publication place) contains the name of the place where a bibliographic item was published. [3.12.2.4. Imprint, Size of a Document, and Reprint Information]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="bibl">
      <element name="bibl">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(bibliographic citation) contains a loosely-structured bibliographic citation of which the sub-components may or may not be explicitly tagged. [3.12.1. Methods of Encoding Bibliographic References and Lists of References 2.2.7. The Source Description 16.3.2. Declarable Elements]</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="model.gLike"/>
               <ref name="model.highlighted"/>
               <ref name="model.pPart.data"/>
               <ref name="model.pPart.edit"/>
               <ref name="model.segLike"/>
               <ref name="model.ptrLike"/>
               <ref name="model.biblPart"/>
               <ref name="model.global"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-bibl-jtei.sch-bibl-id-constraint-rule-35">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:back/tei:div[@type eq 'bibliography']//tei:bibl"
                      see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#back"
                      role="warning">
               <sch:assert test="@xml:id">
                    A bibliographic entry should have a unique value for @xml:id.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-bibl-jtei.sch-bibl-orphan-constraint-rule-36">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:back/tei:div[@type eq 'bibliography']//tei:bibl"
                      role="warning">
               <sch:assert test="key('idrefs', @xml:id)/parent::tei:ref[@type='bibl']"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#back">
                    This bibliographic entry is an orphan: no ref[@type="bibl"] references to it occur in the text.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-bibl-jtei.sch-bibl-endpunctuation-constraint-rule-37">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:back/tei:div[@type eq 'bibliography']//tei:bibl"
                      see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#back"
                      role="warning">
               <sch:report test="descendant::node()[last()][                     not(matches(normalize-space(), '(^|[^.?!:;,])\.$')) or                     preceding-sibling::node()[1]/descendant-or-self::*[last()]                       [matches(normalize-space(), '[.?!:;,]$')]                     ]">
                    A bibliographic entry should end with a single period.
                  </sch:report>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-bibl-jtei.sch-title-journal-CMOS-constraint-rule-38">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:bibl/tei:title[@level='j']"
                      role="warning">
               <sch:report test="self::*[preceding-sibling::*[1]/self::tei:title[@level='a']]                     [not(preceding-sibling::node()[normalize-space()][1][matches(normalize-space(), '[.,!?]$')])]                     "
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#back">
                    An analytic title and a journal title in a bibliographic entry should only be separated by a comma or a period (or the end punctuation of the analytic title). 
                  </sch:report>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="listBibl">
      <element name="listBibl">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(citation list) contains a list of bibliographic citations of any kind. [3.12.1. Methods of Encoding Bibliographic References and Lists of References 2.2.7. The Source Description 16.3.2. Declarable Elements]</a:documentation>
         <group>
            <zeroOrMore>
               <ref name="model.headLike"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="desc"/>
            </zeroOrMore>
            <zeroOrMore>
               <choice>
                  <ref name="model.milestoneLike"/>
               </choice>
            </zeroOrMore>
            <oneOrMore>
               <oneOrMore>
                  <ref name="model.biblLike"/>
               </oneOrMore>
               <zeroOrMore>
                  <choice>
                     <ref name="model.milestoneLike"/>
                  </choice>
               </zeroOrMore>
            </oneOrMore>
         </group>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="particDesc">
      <element name="particDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(participation description) describes the identifiable speakers, voices, or other participants in any kind of text or other persons named or otherwise referred to in a text, edition, or metadata. [16.2. Contextual Information]</a:documentation>
         <choice>
            <oneOrMore>
               <ref name="model.pLike"/>
            </oneOrMore>
            <oneOrMore>
               <choice>
                  <ref name="model.personLike"/>
                  <ref name="listPerson"/>
               </choice>
            </oneOrMore>
         </choice>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="att.tableDecoration.attributes">
      <ref name="att.tableDecoration.attribute.role"/>
      <ref name="att.tableDecoration.attribute.rows"/>
      <ref name="att.tableDecoration.attribute.cols"/>
   </define>
   <define name="att.tableDecoration.attribute.role">
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                    name="role"
                    a:defaultValue="data">
            <a:documentation>(role) indicates the kind of information held in this cell or in each cell of this row.</a:documentation>
            <choice>
               <value>data</value>
               <a:documentation/>
               <value>label</value>
               <a:documentation/>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="att.tableDecoration.attribute.rows">
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                    name="rows"
                    a:defaultValue="1">
            <a:documentation>(rows) indicates the number of rows occupied by this cell or row.</a:documentation>
            <data type="nonNegativeInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="att.tableDecoration.attribute.cols">
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                    name="cols"
                    a:defaultValue="1">
            <a:documentation>(columns) indicates the number of columns occupied by this cell or row.</a:documentation>
            <data type="nonNegativeInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="table">
      <element name="table">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(table) contains text displayed in tabular form, in rows and columns. [15.1.1. TEI Tables]</a:documentation>
         <group>
            <zeroOrMore>
               <choice>
                  <ref name="model.headLike"/>
                  <ref name="model.global"/>
               </choice>
            </zeroOrMore>
            <choice>
               <oneOrMore>
                  <ref name="row"/>
                  <zeroOrMore>
                     <ref name="model.global"/>
                  </zeroOrMore>
               </oneOrMore>
               <oneOrMore>
                  <ref name="model.graphicLike"/>
                  <zeroOrMore>
                     <ref name="model.global"/>
                  </zeroOrMore>
               </oneOrMore>
            </choice>
            <zeroOrMore>
               <ref name="model.divBottom"/>
               <zeroOrMore>
                  <ref name="model.global"/>
               </zeroOrMore>
            </zeroOrMore>
         </group>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-table-jtei.sch-table-constraint-rule-39">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:table">
               <sch:assert test="not(ancestor::tei:list)"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#lists"> No tables are allowed inside
                    lists. </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.typed.attributes"/>
         <optional>
            <attribute name="rows">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(rows) indicates the number of rows in the table.</a:documentation>
               <data type="nonNegativeInteger"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="cols">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(columns) indicates the number of columns in each row of the table.</a:documentation>
               <data type="nonNegativeInteger"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="row">
      <element name="row">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(row) contains one row of a table. [15.1.1. TEI Tables]</a:documentation>
         <oneOrMore>
            <ref name="cell"/>
         </oneOrMore>
         <ref name="att.global.attributes"/>
         <ref name="att.tableDecoration.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="cell">
      <element name="cell">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(cell) contains one cell of a table. [15.1.1. TEI Tables]</a:documentation>
         <ref name="macro.specialPara"/>
         <ref name="att.global.attributes"/>
         <ref name="att.tableDecoration.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="figure">
      <element name="figure">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(figure) groups elements representing or containing graphic information such as a graphic illustration, or a block of example code. Figure must contain either <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;graphic&gt;</code>, <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;egXML&gt;</code> (for example XML code) or <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;eg&gt;</code> (for non-XML code), and a mandatory <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;head&gt;</code> element containing the caption for the figure. Inline code examples may be provided through <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;egXML&gt;</code> and <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;eg&gt;</code> without the <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;figure&gt;</code> wrapper. [15.4. Specific Elements for Graphic Images]</a:documentation>
         <group>
            <choice>
               <ref name="graphic"/>
               <ref name="egXML"/>
               <ref name="eg"/>
            </choice>
            <oneOrMore>
               <ref name="head"/>
            </oneOrMore>
         </group>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.written.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="teiHeader">
      <element name="teiHeader">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(TEI header) supplies descriptive and declarative metadata associated with a digital resource or set of resources. [2.1.1. The TEI Header and Its Components 16.1. Varieties of Composite Text]</a:documentation>
         <group>
            <ref name="fileDesc"/>
            <zeroOrMore>
               <ref name="model.teiHeaderPart"/>
            </zeroOrMore>
            <optional>
               <ref name="revisionDesc"/>
            </optional>
         </group>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="fileDesc">
      <element name="fileDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(file description) contains a full bibliographic description of an electronic file. [2.2. The File Description 2.1.1. The TEI Header and Its Components]</a:documentation>
         <group>
            <group>
               <ref name="titleStmt"/>
               <ref name="publicationStmt"/>
               <zeroOrMore>
                  <ref name="seriesStmt"/>
               </zeroOrMore>
            </group>
            <oneOrMore>
               <ref name="sourceDesc"/>
            </oneOrMore>
         </group>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="titleStmt">
      <element name="titleStmt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(title statement) groups information about the title of a work and those responsible for its content. In jTEI, this must include a title and an <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;author&gt;</code> element for each author of the paper, which in turn must include <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;name&gt;</code>, <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;affiliation&gt;</code> and <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;email&gt;</code>. [2.2.1. The Title Statement 2.2. The File Description]</a:documentation>
         <group>
            <oneOrMore>
               <ref name="title"/>
            </oneOrMore>
            <oneOrMore>
               <ref name="author"/>
            </oneOrMore>
         </group>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-titleStmt-jtei.sch-title-constraint-rule-40">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xi="http://www.w3.org/2001/XInclude"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:titleStmt">
               <sch:assert test="tei:title[@type = 'main']" sqf:fix="type.add">
                    A title of type "main" is required in <sch:name/>.
                  </sch:assert>
               <sqf:fix id="type.add">
                  <sqf:description>
                     <sqf:title>Add a @type='main' attribute to the first title.</sqf:title>
                  </sqf:description>
                  <sqf:add match="tei:title[not(@type='main')][1]"
                           node-type="attribute"
                           target="type">main</sqf:add>
               </sqf:fix>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="edition">
      <element name="edition">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(edition) describes the particularities of one edition of a text. [2.2.2. The Edition Statement]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="publicationStmt">
      <element name="publicationStmt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(publication statement) groups information concerning the publication or distribution of an electronic or other text. [2.2.4. Publication, Distribution, Licensing, etc. 2.2. The File Description]</a:documentation>
         <choice>
            <oneOrMore>
               <ref name="model.publicationStmtPart.agency"/>
               <zeroOrMore>
                  <ref name="model.publicationStmtPart.detail"/>
               </zeroOrMore>
            </oneOrMore>
            <oneOrMore>
               <ref name="model.pLike"/>
            </oneOrMore>
         </choice>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="idno">
      <element name="idno">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(identifier) supplies any form of identifier used to identify some object, such as a bibliographic item, a person, a title, an organization, etc. in a standardized way. [14.3.1. Basic Principles 2.2.4. Publication, Distribution, Licensing, etc. 2.2.5. The Series Statement 3.12.2.4. Imprint, Size of a Document, and Reprint Information]</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="model.gLike"/>
               <ref name="idno"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-idno-jtei.sch-doi-order-constraint-rule-41">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xi="http://www.w3.org/2001/XInclude"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:back/tei:div[@type eq 'bibliography']//tei:idno[@type eq 'doi']">
               <sch:report test="following-sibling::tei:ref"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#back">
                    If a bibliographic entry has a formal DOI code, it should be placed at the very end of the bibliographic description.
                  </sch:report>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.datable.attributes"/>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">categorizes the identifier, for example as an ISBN, Social Security number, etc.
Suggested values include: 1] ISBN; 2] ISSN; 3] DOI; 4] URI; 5] VIAF; 6] ESTC; 7] OCLC</a:documentation>
               <choice>
                  <value>ISBN</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">International Standard Book Number: a 13- or (if assigned prior to 2007) 10-digit identifying number assigned by the publishing industry to a published book or similar item, registered with the <a xmlns="http://www.w3.org/1999/xhtml"
                        xmlns:rng="http://relaxng.org/ns/structure/1.0"
                        href="https://www.isbn-international.org"> International ISBN Agency.</a>
                  </a:documentation>
                  <value>ISSN</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">International Standard Serial Number: an eight-digit number to uniquely identify a serial publication.</a:documentation>
                  <value>DOI</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Digital Object Identifier: a unique string of letters and numbers assigned to an electronic document.</a:documentation>
                  <value>URI</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Uniform Resource Identifier: a string of characters to uniquely identify a resource, following the syntax of <a xmlns="http://www.w3.org/1999/xhtml"
                        xmlns:rng="http://relaxng.org/ns/structure/1.0"
                        href="https://datatracker.ietf.org/doc/html/rfc3986">RFC 3986</a>.</a:documentation>
                  <value>VIAF</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A data number in the Virtual Internet Authority File assigned to link different names in catalogs around the world for the same entity.</a:documentation>
                  <value>ESTC</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">English Short-Title Catalogue number: an identifying number assigned to a document in English printed in the British Isles or North America before 1801.</a:documentation>
                  <value>OCLC</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">OCLC control number (record number) for the union catalog record in WorldCat, a union catalog for member libraries in the Online Computer Library Center global cooperative.</a:documentation>
                  <data type="token">
                     <param name="pattern">[^\p{C}\p{Z}]+</param>
                  </data>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="availability">
      <element name="availability">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(availability) supplies information about the availability of a text, for example any restrictions on its use or distribution, its copyright status, any licence applying to it, etc. [2.2.4. Publication, Distribution, Licensing, etc.]</a:documentation>
         <oneOrMore>
            <choice>
               <ref name="model.availabilityPart"/>
               <ref name="model.pLike"/>
            </choice>
         </oneOrMore>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="licence">
      <element name="licence">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">contains information about a licence or other legal agreement applicable to the text. [2.2.4. Publication, Distribution, Licensing, etc.]</a:documentation>
         <ref name="macro.specialPara"/>
         <ref name="att.global.attributes"/>
         <ref name="att.datable.attributes"/>
         <ref name="att.pointing.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="seriesStmt">
      <element name="seriesStmt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(series statement) groups information about the series, if any, to which a publication belongs. [2.2.5. The Series Statement 2.2. The File Description]</a:documentation>
         <choice>
            <oneOrMore>
               <ref name="model.pLike"/>
            </oneOrMore>
            <group>
               <oneOrMore>
                  <ref name="title"/>
               </oneOrMore>
               <zeroOrMore>
                  <choice>
                     <ref name="editor"/>
                     <ref name="respStmt"/>
                  </choice>
               </zeroOrMore>
               <zeroOrMore>
                  <choice>
                     <ref name="idno"/>
                     <ref name="biblScope"/>
                  </choice>
               </zeroOrMore>
            </group>
         </choice>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="sourceDesc">
      <element name="sourceDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(source description) describes the source(s) from which an electronic text was derived or generated, typically a bibliographic description in the case of a digitized text, or a phrase such as born digital for a text which has no previous existence. [2.2.7. The Source Description]</a:documentation>
         <choice>
            <oneOrMore>
               <ref name="model.pLike"/>
            </oneOrMore>
            <oneOrMore>
               <choice>
                  <ref name="model.biblLike"/>
                  <ref name="model.sourceDescPart"/>
                  <ref name="model.listLike"/>
               </choice>
            </oneOrMore>
         </choice>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="encodingDesc">
      <element name="encodingDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(encoding description) documents the relationship between an electronic text and the source or sources from which it was derived. [2.3. The Encoding Description 2.1.1. The TEI Header and Its Components]</a:documentation>
         <oneOrMore>
            <choice>
               <ref name="model.encodingDescPart"/>
               <ref name="model.pLike"/>
            </choice>
         </oneOrMore>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="projectDesc">
      <element name="projectDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(project description) describes in detail the aim or purpose for which an electronic file was encoded, together with any other relevant information concerning the process by which it was assembled or collected. [2.3.1. The Project Description 2.3. The Encoding Description 16.3.2. Declarable Elements]</a:documentation>
         <oneOrMore>
            <ref name="model.pLike"/>
         </oneOrMore>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="tagsDecl">
      <element name="tagsDecl">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(tagging declaration) provides detailed information about the tagging applied to a document. [2.3.4. The Tagging Declaration 2.3. The Encoding Description]</a:documentation>
         <group>
            <zeroOrMore>
               <ref name="rendition"/>
            </zeroOrMore>
         </group>
         <ref name="att.global.attributes"/>
         <optional>
            <attribute name="partial">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates whether the element types listed exhaustively include all those found within <code xmlns="http://www.w3.org/1999/xhtml"
                        xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;text&gt;</code>, or represent only a subset.</a:documentation>
               <data type="boolean"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="rendition">
      <element name="rendition">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(rendition) supplies information about the rendition or appearance of one or more elements in the source text. [2.3.4. The Tagging Declaration]</a:documentation>
         <ref name="macro.limitedContent"/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-rendition-jtei.sch-rendition-constraint-rule-42">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xi="http://www.w3.org/2001/XInclude"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:rendition">
               <sch:assert test="key('idrefs', @xml:id)[. instance of attribute(rendition)]">
                    Please remove all <sch:name/> definitions that aren't actually being used in the article.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <optional>
            <attribute name="scheme">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">identifies the language used to describe the rendition.</a:documentation>
               <choice>
                  <value>css</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="selector">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">contains a selector or series of selectors specifying the elements to which the contained style description applies, expressed in the language specified in the <code xmlns="http://www.w3.org/1999/xhtml"
                        xmlns:rng="http://relaxng.org/ns/structure/1.0">@scheme</code> attribute.</a:documentation>
               <data type="string"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="appInfo">
      <element name="appInfo">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(application information) records information about an application which has edited the TEI file. [2.3.11. The Application Information Element]</a:documentation>
         <oneOrMore>
            <ref name="model.applicationLike"/>
         </oneOrMore>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="application">
      <element name="application">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">provides information about an application which has acted upon the document. [2.3.11. The Application Information Element]</a:documentation>
         <group>
            <oneOrMore>
               <ref name="model.labelLike"/>
            </oneOrMore>
            <choice>
               <zeroOrMore>
                  <ref name="model.ptrLike"/>
               </zeroOrMore>
               <zeroOrMore>
                  <ref name="model.pLike"/>
               </zeroOrMore>
            </choice>
         </group>
         <ref name="att.global.attributes"/>
         <ref name="att.datable.w3c.attribute.when"/>
         <ref name="att.datable.w3c.attribute.notBefore"/>
         <ref name="att.datable.w3c.attribute.from"/>
         <ref name="att.datable.w3c.attribute.to"/>
         <attribute name="ident">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies an identifier for the application, independent of its version number or display name.</a:documentation>
            <data type="Name"/>
         </attribute>
         <attribute name="version">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">supplies a version number for the application, independent of its identifier or display name.</a:documentation>
            <data type="token">
               <param name="pattern">[\d]+[a-z]*[\d]*(\.[\d]+[a-z]*[\d]*){0,3}</param>
            </data>
         </attribute>
         <empty/>
      </element>
   </define>
   <define name="profileDesc">
      <element name="profileDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(text-profile description) provides a detailed description of non-bibliographic aspects of a text, specifically the languages and sublanguages used, the situation in which it was produced, the participants and their setting. [2.4. The Profile Description 2.1.1. The TEI Header and Its Components]</a:documentation>
         <zeroOrMore>
            <ref name="model.profileDescPart"/>
         </zeroOrMore>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="langUsage">
      <element name="langUsage">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(language usage) describes the languages, sublanguages, registers, dialects, etc. represented within a text. [2.4.2. Language Usage 2.4. The Profile Description 16.3.2. Declarable Elements]</a:documentation>
         <choice>
            <oneOrMore>
               <ref name="model.pLike"/>
            </oneOrMore>
            <oneOrMore>
               <ref name="language"/>
            </oneOrMore>
         </choice>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="language">
      <element name="language">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(language) characterizes a single language or sublanguage used within a text. [2.4.2. Language Usage]</a:documentation>
         <ref name="macro.phraseSeq.limited"/>
         <ref name="att.global.attributes"/>
         <ref name="att.scope.attributes"/>
         <attribute name="ident">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(identifier) Supplies a language code constructed as defined in <a xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  href="https://tools.ietf.org/html/bcp47">BCP 47</a> which is used to identify the language documented by this element, and which may be referenced by the global <code xmlns="http://www.w3.org/1999/xhtml"
                     xmlns:rng="http://relaxng.org/ns/structure/1.0">@xml:lang</code> attribute.</a:documentation>
            <choice>
               <data type="language"/>
               <choice>
                  <value/>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
               </choice>
            </choice>
         </attribute>
         <empty/>
      </element>
   </define>
   <define name="textClass">
      <element name="textClass">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(text classification) groups information which describes the nature or topic of a text in terms of a standard classification scheme, thesaurus, etc. [2.4.3. The Text Classification]</a:documentation>
         <group>
            <zeroOrMore>
               <choice>
                  <ref name="classCode"/>
                  <ref name="catRef"/>
               </choice>
            </zeroOrMore>
            <ref name="keywords"/>
         </group>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="keywords">
      <element name="keywords">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(keywords) contains a list of keywords or phrases identifying the topic or nature of a text. [2.4.3. The Text Classification]</a:documentation>
         <choice>
            <oneOrMore>
               <ref name="term"/>
            </oneOrMore>
            <ref name="list"/>
         </choice>
         <ref name="att.global.attributes"/>
         <optional>
            <attribute name="scheme">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">identifies the controlled vocabulary within which the set of keywords concerned is defined, for example by a <code xmlns="http://www.w3.org/1999/xhtml"
                        xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;taxonomy&gt;</code> element, or by some other resource.</a:documentation>
               <data type="anyURI">
                  <param name="pattern">\S+</param>
               </data>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="classCode">
      <element name="classCode">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(classification code) contains the classification code used for this text in some standard classification system. [2.4.3. The Text Classification]</a:documentation>
         <ref name="macro.phraseSeq.limited"/>
         <ref name="att.global.attributes"/>
         <attribute name="scheme">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">identifies the classification system in use, as defined by, e.g. a <code xmlns="http://www.w3.org/1999/xhtml"
                     xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;taxonomy&gt;</code> element, or some other resource.</a:documentation>
            <data type="anyURI">
               <param name="pattern">\S+</param>
            </data>
         </attribute>
         <empty/>
      </element>
   </define>
   <define name="catRef">
      <element name="catRef">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(category reference) specifies one or more defined categories within some taxonomy or text typology. [2.4.3. The Text Classification]</a:documentation>
         <empty/>
         <ref name="att.global.attributes"/>
         <ref name="att.pointing.attributes"/>
         <optional>
            <attribute name="scheme">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">identifies the classification scheme within which the set of categories concerned is defined, for example by a <code xmlns="http://www.w3.org/1999/xhtml"
                        xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;taxonomy&gt;</code> element, or by some other resource.</a:documentation>
               <data type="anyURI">
                  <param name="pattern">\S+</param>
               </data>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="revisionDesc">
      <element name="revisionDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(revision description) summarizes the revision history for a file. [2.6. The Revision Description 2.1.1. The TEI Header and Its Components]</a:documentation>
         <choice>
            <oneOrMore>
               <ref name="list"/>
            </oneOrMore>
            <oneOrMore>
               <ref name="listChange"/>
            </oneOrMore>
            <oneOrMore>
               <ref name="change"/>
            </oneOrMore>
         </choice>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="change">
      <element name="change">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(change) documents a change or set of changes made during the production of a source document, or during the revision of an electronic file. [2.6. The Revision Description 2.4.1. Creation 12.7. Identifying Changes and Revisions]</a:documentation>
         <ref name="macro.specialPara"/>
         <ref name="att.global.attributes"/>
         <ref name="att.ascribed.attributes"/>
         <ref name="att.datable.attributes"/>
         <ref name="att.typed.attributes"/>
         <optional>
            <attribute name="target">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(target) points to one or more elements that belong to this change.</a:documentation>
               <list>
                  <oneOrMore>
                     <data type="anyURI">
                        <param name="pattern">\S+</param>
                     </data>
                  </oneOrMore>
               </list>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="listChange">
      <element name="listChange">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">groups a number of change descriptions associated with either the creation of a source text or the revision of an encoded text. [2.6. The Revision Description 12.7. Identifying Changes and Revisions]</a:documentation>
         <group>
            <zeroOrMore>
               <ref name="desc"/>
            </zeroOrMore>
            <oneOrMore>
               <choice>
                  <ref name="listChange"/>
                  <ref name="change"/>
               </choice>
            </oneOrMore>
         </group>
         <ref name="att.global.attributes"/>
         <ref name="att.typed.attributes"/>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                       name="ordered"
                       a:defaultValue="true">
               <a:documentation>indicates whether the ordering of its child <code xmlns="http://www.w3.org/1999/xhtml"
                        xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;change&gt;</code> elements is to be considered significant or not.</a:documentation>
               <data type="boolean"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="model.persNamePart">
      <choice>
         <ref name="surname"/>
         <ref name="forename"/>
         <ref name="roleName"/>
      </choice>
   </define>
   <define name="model.persNamePart_alternation">
      <choice>
         <ref name="surname"/>
         <ref name="forename"/>
         <ref name="roleName"/>
      </choice>
   </define>
   <define name="model.persNamePart_sequence">
      <ref name="surname"/>
      <ref name="forename"/>
      <ref name="roleName"/>
   </define>
   <define name="model.persNamePart_sequenceOptional">
      <optional>
         <ref name="surname"/>
      </optional>
      <optional>
         <ref name="forename"/>
      </optional>
      <optional>
         <ref name="roleName"/>
      </optional>
   </define>
   <define name="model.persNamePart_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="surname"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="forename"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="roleName"/>
      </zeroOrMore>
   </define>
   <define name="model.persNamePart_sequenceRepeatable">
      <oneOrMore>
         <ref name="surname"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="forename"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="roleName"/>
      </oneOrMore>
   </define>
   <define name="orgName">
      <element name="orgName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(organization name) contains an organizational name. [14.2.2. Organizational Names]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.datable.w3c.attribute.when"/>
         <ref name="att.datable.w3c.attribute.notBefore"/>
         <ref name="att.datable.w3c.attribute.from"/>
         <ref name="att.datable.w3c.attribute.to"/>
         <ref name="att.editLike.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="surname">
      <element name="surname">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(surname) contains a family (inherited) name, as opposed to a given, baptismal, or nick name. [14.2.1. Personal Names]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="forename">
      <element name="forename">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(forename) contains a forename, given or baptismal name. [14.2.1. Personal Names]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="roleName">
      <element name="roleName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(role name) contains a name component which indicates that the referent has a particular role or position in society, such as an official title or rank. [14.2.1. Personal Names]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="placeName">
      <element name="placeName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(place name) contains an absolute or relative place name. [14.2.3. Place Names]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.datable.attributes"/>
         <ref name="att.editLike.attributes"/>
         <ref name="att.personal.attributes"/>
         <ref name="att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="affiliation">
      <element name="affiliation">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(affiliation) contains an informal description of a person's present or past affiliation with some organization, for example an employer or sponsor. [16.2.2. The Participant Description]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.datable.w3c.attribute.when"/>
         <ref name="att.datable.w3c.attribute.notBefore"/>
         <ref name="att.datable.w3c.attribute.from"/>
         <ref name="att.datable.w3c.attribute.to"/>
         <ref name="att.editLike.attributes"/>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">characterizes the element in some sense, using any convenient classification scheme or typology.
Sample values include: 1] sponsor; 2] recommend; 3] discredit; 4] pledged</a:documentation>
               <data type="token">
                  <param name="pattern">[^\p{C}\p{Z}]+</param>
               </data>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="listPerson">
      <element name="listPerson">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(list of persons) contains a list of descriptions, each of which provides information about an identifiable person or a group of people, for example the participants in a language interaction, or the people referred to in a historical source. [14.3.2. The Person Element 16.2. Contextual Information 2.4. The Profile Description 16.3.2. Declarable Elements]</a:documentation>
         <group>
            <zeroOrMore>
               <ref name="model.headLike"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="desc"/>
            </zeroOrMore>
            <zeroOrMore>
               <empty/>
            </zeroOrMore>
            <oneOrMore>
               <oneOrMore>
                  <choice>
                     <ref name="model.personLike"/>
                     <ref name="listPerson"/>
                  </choice>
               </oneOrMore>
               <zeroOrMore>
                  <empty/>
               </zeroOrMore>
            </oneOrMore>
         </group>
         <ref name="att.global.attributes"/>
         <ref name="att.cmc.attributes"/>
         <ref name="att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="person">
      <element name="person">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(person) provides information about an identifiable individual, for example a participant in a language interaction, or a person referred to in a historical source. [14.3.2. The Person Element 16.2.2. The Participant Description]</a:documentation>
         <choice>
            <oneOrMore>
               <ref name="model.pLike"/>
            </oneOrMore>
            <zeroOrMore>
               <choice>
                  <ref name="model.personPart"/>
                  <ref name="model.global"/>
                  <ref name="model.ptrLike"/>
               </choice>
            </zeroOrMore>
         </choice>
         <ref name="att.global.attributes"/>
         <ref name="att.editLike.attributes"/>
         <optional>
            <attribute name="role">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies a primary role or classification for the person.</a:documentation>
               <list>
                  <oneOrMore>
                     <data type="token">
                        <param name="pattern">[^\p{C}\p{Z}]+</param>
                     </data>
                  </oneOrMore>
               </list>
            </attribute>
         </optional>
         <optional>
            <attribute name="sex">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the sex of the person.</a:documentation>
               <list>
                  <oneOrMore>
                     <data type="token">
                        <param name="pattern">[^\p{C}\p{Z}]+</param>
                     </data>
                  </oneOrMore>
               </list>
            </attribute>
         </optional>
         <optional>
            <attribute name="gender">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies the gender of the person.</a:documentation>
               <list>
                  <oneOrMore>
                     <data type="token">
                        <param name="pattern">[^\p{C}\p{Z}]+</param>
                     </data>
                  </oneOrMore>
               </list>
            </attribute>
         </optional>
         <optional>
            <attribute name="age">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">specifies an age group for the person.</a:documentation>
               <data type="token">
                  <param name="pattern">[^\p{C}\p{Z}]+</param>
               </data>
            </attribute>
         </optional>
         <empty/>
      </element>
   </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. [23. Documentation Elements]</a:documentation>
         <data type="Name"/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-att-jtei.sch-att-constraint-rule-43">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xi="http://www.w3.org/2001/XInclude"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:att">
               <sch:assert test="not(matches(., '^@'))">
                    Attribute delimiters are not allowed for <sch:name/>: they are completed at processing time via XSLT.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </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. [23.1.1. Phrase Level Terms]</a:documentation>
         <text/>
         <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{C}\p{Z}]+</param>
               </data>
            </attribute>
         </optional>
         <empty/>
      </element>
   </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. [23.5. Element Specifications 23.5.3. Attribute List Specification]</a:documentation>
         <ref name="macro.phraseSeq"/>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </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) a single XML fragment demonstrating the use of some XML, such as elements, attributes, or processing instructions, etc., in which the <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;egXML&gt;</code> element functions as the root element. [23.1.1. Phrase Level Terms]</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="anyElement_egXML_1"/>
            </choice>
         </zeroOrMore>
         <ref name="att.global.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/>
      </element>
   </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. [23. Documentation Elements 23.5. Element Specifications]</a:documentation>
         <data type="Name"/>
         <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{C}\p{Z}]+</param>
               </data>
            </attribute>
         </optional>
         <empty/>
      </element>
   </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. <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;ident&gt;</code> is used for tokens such as variable names, class names, type names, function names etc. in formal programming languages. [23.1.1. Phrase Level Terms]</a:documentation>
         <text/>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="tag">
      <element name="tag">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(tag) contains text of a complete start- or end-tag, possibly including attribute specifications, but excluding the opening and closing markup delimiter characters. [23. Documentation Elements]</a:documentation>
         <text/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-tag-jtei.sch-tag-constraint-rule-44">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xi="http://www.w3.org/2001/XInclude"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:tag">
               <sch:assert test="not(matches(., '^[&lt;!?-]|[&gt;/?\-]$'))"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#inline_technical">
                    Tag delimiters such as angle brackets and tag-closing slashes are not allowed for <sch:name/>: they are completed at processing time via XSLT.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <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">an 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{C}\p{Z}]+</param>
               </data>
            </attribute>
         </optional>
         <empty/>
      </element>
   </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. [23. Documentation Elements 23.5.3. Attribute List Specification]</a:documentation>
         <text/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-val-jtei.sch-val-constraint-rule-45">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xi="http://www.w3.org/2001/XInclude"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:val">
               <sch:assert test="not(matches(., concat('^', $quotes, '|', $quotes, '$')))"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#inline_technical">
                    Attribute value delimiters are not allowed for <sch:name/>: they are completed at processing time via XSLT.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="TEI">
      <element name="TEI">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(TEI document) contains a single TEI-conformant document, combining a single TEI header with one or more members of the model.resource class. Multiple <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;TEI&gt;</code> elements may be combined within a <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;TEI&gt;</code> (or <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;teiCorpus&gt;</code>) element. [4. Default Text Structure 16.1. Varieties of Composite Text]</a:documentation>
         <group>
            <ref name="teiHeader"/>
            <choice>
               <group>
                  <oneOrMore>
                     <ref name="model.resource"/>
                  </oneOrMore>
                  <zeroOrMore>
                     <ref name="TEI"/>
                  </zeroOrMore>
               </group>
               <oneOrMore>
                  <ref name="TEI"/>
               </oneOrMore>
            </choice>
         </group>
         <ref name="att.global.attributes"/>
         <ref name="att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="text">
      <element name="text">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(text) contains the complete text of the article. Must include a <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;front&gt;</code> containing an abstract, a <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;body&gt;</code> containing the main text, and a <code xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0">&lt;back&gt;</code> containing the bibliography and any appendices. [4. Default Text Structure 16.1. Varieties of Composite Text]</a:documentation>
         <group>
            <zeroOrMore>
               <ref name="model.global"/>
            </zeroOrMore>
            <rng:optional xmlns:rng="http://relaxng.org/ns/structure/1.0">
               <rng:group>
                  <rng:ref name="front"/>
                  <rng:zeroOrMore>
                     <rng:ref name="model.global"/>
                  </rng:zeroOrMore>
               </rng:group>
            </rng:optional>
            <choice>
               <ref name="body"/>
            </choice>
            <zeroOrMore>
               <ref name="model.global"/>
            </zeroOrMore>
            <rng:optional xmlns:rng="http://relaxng.org/ns/structure/1.0">
               <rng:group>
                  <rng:ref name="back"/>
                  <rng:zeroOrMore>
                     <rng:ref name="model.global"/>
                  </rng:zeroOrMore>
               </rng:group>
            </rng:optional>
         </group>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-text-jtei.sch-article-keywords-constraint-rule-46">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:text[not(tei:body/tei:div[@type = ('editorialIntroduction')])]">
               <sch:assert test="parent::tei:TEI/tei:teiHeader/tei:profileDesc/tei:textClass/tei:keywords"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#header">
                    An article must have a keyword list in the header. This should be a list of &lt;term&gt; elements in TEI/teiHeader/profileDesc/textClass/keywords </sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-text-jtei.sch-article-abstract-constraint-rule-47">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:text[not(tei:body/tei:div[@type = ('editorialIntroduction')])]">
               <sch:assert test="tei:front/tei:div[@type='abstract']"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#front"> An article must have a
                    front section with an abstract (div[@type='abstract']). </sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-text-jtei.sch-article-back-constraint-rule-48">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:text[not(tei:body/tei:div[@type = ('editorialIntroduction')])]">
               <sch:assert test="tei:back/tei:div[@type='bibliography']/tei:listBibl"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#back"> An article
                    must have a back section with a bibliography (div[@type='bibliography']). </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.written.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="body">
      <element name="body">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(text body) contains the whole body of a single unitary text, excluding any front or back matter. [4. Default Text Structure]</a:documentation>
         <group>
            <zeroOrMore>
               <choice>
                  <ref name="model.divTop"/>
                  <ref name="model.global"/>
               </choice>
            </zeroOrMore>
            <rng:optional xmlns:rng="http://relaxng.org/ns/structure/1.0">
               <rng:group>
                  <rng:choice>
                     <oneOrMore>
                        <rng:choice>
                           <rng:ref name="model.divLike"/>
                           <rng:ref name="model.divGenLike"/>
                        </rng:choice>
                        <rng:zeroOrMore>
                           <rng:ref name="model.global"/>
                        </rng:zeroOrMore>
                     </oneOrMore>
                     <group>
                        <oneOrMore>
                           <rng:ref name="model.common"/>
                           <rng:zeroOrMore>
                              <rng:ref name="model.global"/>
                           </rng:zeroOrMore>
                        </oneOrMore>
                        <rng:zeroOrMore>
                           <rng:choice>
                              <rng:ref name="model.divLike"/>
                              <rng:ref name="model.divGenLike"/>
                           </rng:choice>
                           <rng:zeroOrMore>
                              <rng:ref name="model.global"/>
                           </rng:zeroOrMore>
                        </rng:zeroOrMore>
                     </group>
                  </rng:choice>
                  <rng:zeroOrMore>
                     <rng:ref name="model.divBottom"/>
                     <rng:zeroOrMore>
                        <rng:ref name="model.global"/>
                     </rng:zeroOrMore>
                  </rng:zeroOrMore>
               </rng:group>
            </rng:optional>
         </group>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-body-jtei.sch-body-constraint-rule-49">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:body[child::tei:div[not(@type=('editorialIntroduction'))]]">
               <sch:assert test="count(child::tei:div) gt 1"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#body">
                    If <sch:name/> contains a div, and that div is not an editorial introduction, then there should be 
                    more than one div. Rather than using only a single div, you may place the content directly
                    in the <sch:name/> element.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="div">
      <element name="div">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(text division) contains a subdivision of the front, body, or back of a text. [4.1. Divisions of the Body]</a:documentation>
         <group>
            <zeroOrMore>
               <choice>
                  <ref name="model.divTop"/>
                  <ref name="model.global"/>
               </choice>
            </zeroOrMore>
            <rng:optional xmlns:rng="http://relaxng.org/ns/structure/1.0">
               <rng:group>
                  <rng:choice>
                     <oneOrMore>
                        <rng:choice>
                           <rng:ref name="model.divLike"/>
                           <rng:ref name="model.divGenLike"/>
                        </rng:choice>
                        <rng:zeroOrMore>
                           <rng:ref name="model.global"/>
                        </rng:zeroOrMore>
                     </oneOrMore>
                     <group>
                        <oneOrMore>
                           <rng:ref name="model.common"/>
                           <rng:zeroOrMore>
                              <rng:ref name="model.global"/>
                           </rng:zeroOrMore>
                        </oneOrMore>
                        <rng:zeroOrMore>
                           <rng:choice>
                              <rng:ref name="model.divLike"/>
                              <rng:ref name="model.divGenLike"/>
                           </rng:choice>
                           <rng:zeroOrMore>
                              <rng:ref name="model.global"/>
                           </rng:zeroOrMore>
                        </rng:zeroOrMore>
                     </group>
                  </rng:choice>
                  <rng:zeroOrMore>
                     <rng:ref name="model.divBottom"/>
                     <rng:zeroOrMore>
                        <rng:ref name="model.global"/>
                     </rng:zeroOrMore>
                  </rng:zeroOrMore>
               </rng:group>
            </rng:optional>
         </group>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-div-jtei.sch-divtypes-front-constraint-rule-50">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:div[@type = $div.types.front]">
               <sch:assert test="parent::tei:front"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#front">
                    A text division of type <sch:value-of select="@type"/> may only occur inside &lt;front&gt;. </sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-div-jtei.sch-divtypes-front2-constraint-rule-51">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:front/tei:div">
               <sch:assert test="@type = $div.types.front"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#front">
                    Only text divisions of type <sch:value-of select="string-join(for $i in $div.types.front return concat(if (index-of($div.types.front, $i) = count($div.types.front)) then 'or ' else (), '&#34;', $i, '&#34;'), ', ')"/> may appear in the &lt;front&gt;.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-div-jtei.sch-divtypes-back-constraint-rule-52">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:div[@type = ('bibliography', 'appendix')]"
                      see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#back">
               <sch:assert test="parent::tei:back">
                    Bibliography (<sch:name/>[@type="bibliography"]) and appendices (<sch:name/>[@type="appendix"]) may only occur inside &lt;back&gt;. </sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-div-jtei.sch-divtypes-body-constraint-rule-53">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:div[@type = ('editorialIntroduction')]">
               <sch:assert test="parent::tei:body"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#body">
                    An editorial introduction (<sch:name/>[@type="editorialIntroduction"]) may only occur inside &lt;body&gt;.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-div-jtei.sch-div-head-constraint-rule-54">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:body//tei:div[not(@type = ('editorialIntroduction'))]">
               <sch:assert test="tei:head"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#divs">
                    A <sch:name/> must contain a &lt;head&gt;. </sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-div-abstractModel-structure-div-in-l-constraint-rule-55">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:l//tei:div">
               <sch:assert test="ancestor::tei:floatingText">
          Abstract model violation: Metrical lines may not contain higher-level structural elements such as div, unless div is a descendant of floatingText.
        </sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-div-abstractModel-structure-div-in-ab-or-p-constraint-rule-56">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:div">
               <sch:report test="(ancestor::tei:p or ancestor::tei:ab) and not(ancestor::tei:floatingText)">
          Abstract model violation: p and ab may not contain higher-level structural elements such as div, unless div is a descendant of floatingText.
        </sch:report>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.divLike.attributes"/>
         <ref name="att.placement.attributes"/>
         <ref name="att.written.attributes"/>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">characterizes the element in some sense, using any convenient classification scheme or typology.</a:documentation>
               <choice>
                  <value>abstract</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(Abstract for the article, appearing inside &lt;front&gt;.) Every article must include an abstract, consisting of one or two paragraphs. This appears in the &lt;front&gt; element and may not appear anywhere else.</a:documentation>
                  <value>acknowledgements</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(Acknowledgements for the article, appearing inside &lt;front&gt;.) If an article includes a section for acknowledgements (for funders, supporters, etc.), it should be as brief as possible, and must appear in the &lt;front&gt; element and nowhere else.</a:documentation>
                  <value>authorNotes</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(Author's notes for the article, appearing inside &lt;front&gt;.) If an article includes a section for author notes, it should be as brief as possible, and must appear in the &lt;front&gt; element and nowhere else.)</a:documentation>
                  <value>dedication</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(A dedication for the article, appearing inside &lt;front&gt;.) If an article includes a section for a dedication, it should be as brief as possible, and must appear in the &lt;front&gt; element and nowhere else.)</a:documentation>
                  <value>appendix</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(Appendix to the article, appearing inside &lt;back&gt;.) Any appendices must appear in the &lt;back&gt; of the article, following the bibliography.</a:documentation>
                  <value>bibliography</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(Bibliography, appearing inside &lt;back&gt;.) Every article must include a bibliography, which appears as the first component of the &lt;back&gt; element, followed by any appendices.</a:documentation>
                  <value>editorialIntroduction</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(Editorial introduction, appearing inside &lt;body&gt;.) [Reserved for editors only: An editorial introduction to an issue must contain a &lt;div type="editorialIntroduction"&gt;, which must appear in the &lt;body&gt; element and may not appear anywhere else.]</a:documentation>
                  <value>editorNotes</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(Editor notes for the article, appearing inside &lt;front&gt;.) [Reserved for editors only: if an article includes a section for editor notes, it should be as brief as possible, and must appear in the &lt;front&gt; element and nowhere else.]</a:documentation>
                  <value>corrections</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(Statement of corrections to the article, appearing inside &lt;front&gt;.) [Reserved for editors only: if an article needs corrections, those must be stated in this section, which must appear in the &lt;front&gt; element and nowhere else.]</a:documentation>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="front">
      <element name="front">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(front matter) contains any prefatory matter (headers, abstracts, title page, prefaces, dedications, etc.) found at the start of a document, before the main body. [4.6. Title Pages 4. Default Text Structure]</a:documentation>
         <group>
            <zeroOrMore>
               <choice>
                  <ref name="model.frontPart"/>
                  <ref name="model.pLike"/>
                  <ref name="model.pLike.front"/>
                  <ref name="model.global"/>
               </choice>
            </zeroOrMore>
            <rng:optional xmlns:rng="http://relaxng.org/ns/structure/1.0">
               <rng:group>
                  <rng:choice>
                     <group>
                        <rng:ref name="model.div1Like"/>
                        <rng:zeroOrMore>
                           <rng:choice>
                              <rng:ref name="model.div1Like"/>
                              <rng:ref name="model.frontPart"/>
                              <rng:ref name="model.global"/>
                           </rng:choice>
                        </rng:zeroOrMore>
                     </group>
                     <group>
                        <rng:ref name="model.divLike"/>
                        <rng:zeroOrMore>
                           <rng:choice>
                              <rng:ref name="model.divLike"/>
                              <rng:ref name="model.frontPart"/>
                              <rng:ref name="model.global"/>
                           </rng:choice>
                        </rng:zeroOrMore>
                     </group>
                  </rng:choice>
                  <optional>
                     <rng:ref name="model.divBottom"/>
                     <rng:zeroOrMore>
                        <rng:choice>
                           <rng:ref name="model.divBottom"/>
                           <rng:ref name="model.global"/>
                        </rng:choice>
                     </rng:zeroOrMore>
                  </optional>
               </rng:group>
            </rng:optional>
         </group>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-front-jtei.sch-front-abstract-constraint-rule-57">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:front">
               <sch:assert test="tei:div[@type='abstract']"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#front">
                  <sch:name/> must have an abstract (div[@type='abstract']).
                  </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="back">
      <element name="back">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(back matter) contains any appendixes, etc. following the main part of a text. [4.7. Back Matter 4. Default Text Structure]</a:documentation>
         <group>
            <zeroOrMore>
               <choice>
                  <ref name="model.frontPart"/>
                  <ref name="model.pLike.front"/>
                  <ref name="model.pLike"/>
                  <ref name="model.listLike"/>
                  <ref name="model.global"/>
               </choice>
            </zeroOrMore>
            <optional>
               <choice>
                  <group>
                     <ref name="model.div1Like"/>
                     <zeroOrMore>
                        <choice>
                           <ref name="model.frontPart"/>
                           <ref name="model.div1Like"/>
                           <ref name="model.global"/>
                        </choice>
                     </zeroOrMore>
                  </group>
                  <group>
                     <ref name="model.divLike"/>
                     <zeroOrMore>
                        <choice>
                           <ref name="model.frontPart"/>
                           <ref name="model.divLike"/>
                           <ref name="model.global"/>
                        </choice>
                     </zeroOrMore>
                  </group>
               </choice>
            </optional>
            <rng:optional xmlns:rng="http://relaxng.org/ns/structure/1.0">
               <rng:group>
                  <rng:ref name="model.divBottomPart"/>
                  <rng:zeroOrMore>
                     <rng:choice>
                        <rng:ref name="model.divBottomPart"/>
                        <rng:ref name="model.global"/>
                     </rng:choice>
                  </rng:zeroOrMore>
               </rng:group>
            </rng:optional>
         </group>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-back-jtei.sch-back-constraint-rule-58">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:back">
               <sch:assert test="tei:div[@type='bibliography']/tei:listBibl"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#back">
                  <sch:name/> must have a bibliography (div[@type="bibliography"]), which must be
                    organized inside a &lt;listBibl&gt; element. </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="supplied">
      <element name="supplied">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(supplied) signifies text supplied by the transcriber or editor for any reason; for example because the original cannot be read due to physical damage, or because of an obvious omission by the author or scribe. [12.3.3.1. Damage, Illegibility, and Supplied Text]</a:documentation>
         <ref name="macro.paraContent"/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                  xmlns:rng="http://relaxng.org/ns/structure/1.0"
                  id="tei_jtei-supplied-jtei.sch-supplied-constraint-rule-59">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                      xmlns:eg="http://www.tei-c.org/ns/Examples"
                      xmlns:egXML="http://www.tei-c.org/ns/Examples"
                      xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                      xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                      xmlns:xi="http://www.w3.org/2001/XInclude"
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      context="tei:supplied">
               <sch:assert test="not(matches(., '^\[|\]$'))"
                           see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#inline_rhetorical">
                    Please remove square brackets from <sch:name/>: they are completed at processing time via XSLT.
                  </sch:assert>
            </sch:rule>
         </pattern>
         <ref name="att.global.attributes"/>
         <ref name="att.dimensions.attributes"/>
         <ref name="att.editLike.attributes"/>
         <optional>
            <attribute name="reason">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">one or more words indicating why the text has had to be supplied, e.g. overbinding, faded-ink, lost-folio, omitted-in-original.</a:documentation>
               <list>
                  <oneOrMore>
                     <data type="token">
                        <param name="pattern">[^\p{C}\p{Z}]+</param>
                     </data>
                  </oneOrMore>
               </list>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <start>
      <choice>
         <ref name="TEI"/>
      </choice>
   </start>
   <sch:ns xmlns="http://www.tei-c.org/ns/1.0"
           xmlns:eg="http://www.tei-c.org/ns/Examples"
           xmlns:egXML="http://www.tei-c.org/ns/Examples"
           xmlns:sch="http://purl.oclc.org/dsdl/schematron"
           xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
           prefix="sch"
           uri="http://purl.oclc.org/dsdl/schematron"/>
   <sch:ns xmlns="http://www.tei-c.org/ns/1.0"
           xmlns:eg="http://www.tei-c.org/ns/Examples"
           xmlns:egXML="http://www.tei-c.org/ns/Examples"
           xmlns:sch="http://purl.oclc.org/dsdl/schematron"
           xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
           prefix="tei"
           uri="http://www.tei-c.org/ns/1.0"/>
   <sch:ns xmlns="http://www.tei-c.org/ns/1.0"
           xmlns:eg="http://www.tei-c.org/ns/Examples"
           xmlns:egXML="http://www.tei-c.org/ns/Examples"
           xmlns:sch="http://purl.oclc.org/dsdl/schematron"
           xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
           prefix="xs"
           uri="http://www.w3.org/2001/XMLSchema"/>
   <sch:ns xmlns="http://www.tei-c.org/ns/1.0"
           xmlns:eg="http://www.tei-c.org/ns/Examples"
           xmlns:egXML="http://www.tei-c.org/ns/Examples"
           xmlns:sch="http://purl.oclc.org/dsdl/schematron"
           xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
           prefix="xsl"
           uri="http://www.w3.org/1999/XSL/Transform"/>
   <sch:ns xmlns="http://www.tei-c.org/ns/1.0"
           xmlns:eg="http://www.tei-c.org/ns/Examples"
           xmlns:egXML="http://www.tei-c.org/ns/Examples"
           xmlns:sch="http://purl.oclc.org/dsdl/schematron"
           xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
           prefix="eg"
           uri="http://www.tei-c.org/ns/Examples"/>
   <xsl:key xmlns="http://www.tei-c.org/ns/1.0"
            xmlns:eg="http://www.tei-c.org/ns/Examples"
            xmlns:egXML="http://www.tei-c.org/ns/Examples"
            xmlns:sch="http://purl.oclc.org/dsdl/schematron"
            xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            name="idrefs"
            match="@target[starts-with(normalize-space(.), '#')]|@rendition[starts-with(normalize-space(.), '#')]"
            use="for $i in tokenize(., '\s+') return substring-after($i, '#')"/>
   <sch:let xmlns="http://www.tei-c.org/ns/1.0"
            xmlns:eg="http://www.tei-c.org/ns/Examples"
            xmlns:egXML="http://www.tei-c.org/ns/Examples"
            xmlns:sch="http://purl.oclc.org/dsdl/schematron"
            xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            name="double.quotes"
            value="'[&#34;“”]'"/>
   <sch:let xmlns="http://www.tei-c.org/ns/1.0"
            xmlns:eg="http://www.tei-c.org/ns/Examples"
            xmlns:egXML="http://www.tei-c.org/ns/Examples"
            xmlns:sch="http://purl.oclc.org/dsdl/schematron"
            xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            name="apos.typographic"
            value="'[‘’]'"/>
   <sch:let xmlns="http://www.tei-c.org/ns/1.0"
            xmlns:eg="http://www.tei-c.org/ns/Examples"
            xmlns:egXML="http://www.tei-c.org/ns/Examples"
            xmlns:sch="http://purl.oclc.org/dsdl/schematron"
            xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            name="apos.straight"
            value="''''"/>
   <sch:let xmlns="http://www.tei-c.org/ns/1.0"
            xmlns:eg="http://www.tei-c.org/ns/Examples"
            xmlns:egXML="http://www.tei-c.org/ns/Examples"
            xmlns:sch="http://purl.oclc.org/dsdl/schematron"
            xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            name="quotes"
            value="concat('[', $apos.straight, '&#34;]')"/>
   <sch:let xmlns="http://www.tei-c.org/ns/1.0"
            xmlns:eg="http://www.tei-c.org/ns/Examples"
            xmlns:egXML="http://www.tei-c.org/ns/Examples"
            xmlns:sch="http://purl.oclc.org/dsdl/schematron"
            xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            name="div.types.front"
            value="('abstract', 'acknowledgements', 'authorNotes', 'editorNotes', 'corrections', 'dedication')"/>
   <sch:let xmlns="http://www.tei-c.org/ns/1.0"
            xmlns:eg="http://www.tei-c.org/ns/Examples"
            xmlns:egXML="http://www.tei-c.org/ns/Examples"
            xmlns:sch="http://purl.oclc.org/dsdl/schematron"
            xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            name="tei.version.url"
            value="'https://jenkins.tei-c.org/job/TEIP5/lastStableBuild/artifact/P5/release/doc/tei-p5-doc/VERSION'"/>
   <sch:let xmlns="http://www.tei-c.org/ns/1.0"
            xmlns:eg="http://www.tei-c.org/ns/Examples"
            xmlns:egXML="http://www.tei-c.org/ns/Examples"
            xmlns:sch="http://purl.oclc.org/dsdl/schematron"
            xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            name="tei.version"
            value="if (unparsed-text-available($tei.version.url)) then normalize-space(unparsed-text($tei.version.url)) else ()"/>
   <sch:ns xmlns="http://www.tei-c.org/ns/1.0"
           xmlns:eg="http://www.tei-c.org/ns/Examples"
           xmlns:egXML="http://www.tei-c.org/ns/Examples"
           xmlns:rng="http://relaxng.org/ns/structure/1.0"
           xmlns:sch="http://purl.oclc.org/dsdl/schematron"
           xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
           prefix="tei"
           uri="http://www.tei-c.org/ns/1.0"/>
   <sch:ns xmlns="http://www.tei-c.org/ns/1.0"
           xmlns:eg="http://www.tei-c.org/ns/Examples"
           xmlns:egXML="http://www.tei-c.org/ns/Examples"
           xmlns:rng="http://relaxng.org/ns/structure/1.0"
           xmlns:sch="http://purl.oclc.org/dsdl/schematron"
           xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
           prefix="xs"
           uri="http://www.w3.org/2001/XMLSchema"/>
   <sch:ns xmlns="http://www.tei-c.org/ns/1.0"
           xmlns:eg="http://www.tei-c.org/ns/Examples"
           xmlns:egXML="http://www.tei-c.org/ns/Examples"
           xmlns:rng="http://relaxng.org/ns/structure/1.0"
           xmlns:sch="http://purl.oclc.org/dsdl/schematron"
           xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
           prefix="rng"
           uri="http://relaxng.org/ns/structure/1.0"/>
   <sch:ns xmlns="http://www.tei-c.org/ns/1.0"
           xmlns:eg="http://www.tei-c.org/ns/Examples"
           xmlns:egXML="http://www.tei-c.org/ns/Examples"
           xmlns:rng="http://relaxng.org/ns/structure/1.0"
           xmlns:sch="http://purl.oclc.org/dsdl/schematron"
           xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
           prefix="rna"
           uri="http://relaxng.org/ns/compatibility/annotations/1.0"/>
   <sch:ns xmlns="http://www.tei-c.org/ns/1.0"
           xmlns:eg="http://www.tei-c.org/ns/Examples"
           xmlns:egXML="http://www.tei-c.org/ns/Examples"
           xmlns:rng="http://relaxng.org/ns/structure/1.0"
           xmlns:sch="http://purl.oclc.org/dsdl/schematron"
           xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
           prefix="sch"
           uri="http://purl.oclc.org/dsdl/schematron"/>
   <sch:ns xmlns="http://www.tei-c.org/ns/1.0"
           xmlns:eg="http://www.tei-c.org/ns/Examples"
           xmlns:egXML="http://www.tei-c.org/ns/Examples"
           xmlns:rng="http://relaxng.org/ns/structure/1.0"
           xmlns:sch="http://purl.oclc.org/dsdl/schematron"
           xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
           prefix="sch1x"
           uri="http://www.ascc.net/xml/schematron"/>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-straightApos-constraint-rule-60">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="text()[not(ancestor::tei:eg|ancestor::eg:egXML|ancestor::tei:code|ancestor::tei:tag|ancestor::tei:mentioned)]">
         <sch:report test="matches(., $apos.straight)"
                     sqf:fix="apostrophe.replace"
                     see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#faq">
                  "Straight apostrophe" characters are not permitted. Please use the
                  Right Single Quotation Mark (U+2019 or ’) character instead. On the other hand, if the straight 
                  apostrophe characters function as quotation marks, please replace them with appropriate mark-up 
                  that will ensure the appropriate quotation marks will be generated consistently.
                </sch:report>
         <sqf:fix id="apostrophe.replace">
            <sqf:description>
               <sqf:title>Replace straight apostrophe with ’.</sqf:title>
            </sqf:description>
            <sqf:stringReplace regex="{$apos.straight}">’</sqf:stringReplace>
         </sqf:fix>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-LRquotes-constraint-rule-61">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="text()[not(ancestor::tei:eg|ancestor::eg:egXML|ancestor::tei:code|ancestor::tei:tag)][matches(., $apos.typographic)]"
                role="warning">
         <sch:report test="matches(., '\W[’]\D') or matches(., '[‘](\W|$)') or matches(., '\w[‘]\w')"
                     see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#faq">
                  Left and Right Single Quotation Marks should be used in the right place. Please check their placement in this text node.

                </sch:report>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-quotationMarks-constraint-rule-62">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="text()[not(ancestor::tei:eg|ancestor::eg:egXML|ancestor::tei:code|ancestor::tei:tag)]">
         <sch:report test="matches(., $double.quotes) or matches(., '(^|\W)[‘][^‘’]+[’](\W|$)')"
                     see="https://tei-c.org/release/doc/tei-p5-exemplars/html/tei_jtei.doc.html#faq">
                  Quotation marks are not permitted in plain text. Please use appropriate mark-up that will ensure the appropriate quotation marks will be generated consistently.
                </sch:report>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-doubleHyphens-constraint-rule-63">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="text()[not(ancestor::tei:eg|ancestor::eg:egXML|ancestor::tei:code|ancestor::tei:tag|ancestor::tei:ref)]">
         <sch:assert test="not(contains(., '--'))" sqf:fix="dash.replace">
                  Double hyphens should not be used for dashes. Please use 
                  the EM Dash (U+2014 or —) instead.
                </sch:assert>
         <sqf:fix id="dash.replace">
            <sqf:description>
               <sqf:title>Replace double hyphens with —.</sqf:title>
            </sqf:description>
            <sqf:stringReplace regex="--">—</sqf:stringReplace>
         </sqf:fix>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-rangeHyphen-constraint-rule-64">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="text()[not(ancestor::tei:eg|ancestor::eg:egXML|ancestor::tei:code|ancestor::tei:tag|ancestor::tei:idno|ancestor::tei:date)]">
         <sch:assert test="not(matches(., '(^|[\W-[-]])\d+-\d+([\W-[-]]|$)'))"
                     sqf:fix="hyphen.replace">
                  Numeric ranges should not be indicated with a hyphen. Please use 
                  the EN Dash (U+2013 or –) character instead.
                </sch:assert>
         <sqf:fix id="hyphen.replace">
            <sqf:description>
               <sqf:title>Replace hyphen with –.</sqf:title>
            </sqf:description>
            <sqf:stringReplace regex="((^|[\W-[-]])\d+)-(\d+([\W-[-]]|$))">$1–$3</sqf:stringReplace>
         </sqf:fix>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-ieEg-constraint-rule-65">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="text()[not(ancestor::tei:eg|ancestor::eg:egXML|ancestor::tei:code|ancestor::tei:tag)]">
         <sch:report test="matches(., '(i\.e\.|e\.g\.)[^,]', 'i')" sqf:fix="comma.add">
                  You should put a comma after "i.e." and "e.g.". 
                </sch:report>
         <sqf:fix id="comma.add">
            <sqf:description>
               <sqf:title>Add a comma.</sqf:title>
            </sqf:description>
            <sqf:stringReplace regex="([iI]\.[eE]\.|[eE]\.[gG]\.)([^,])">$1,$2</sqf:stringReplace>
         </sqf:fix>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-nonbreakingspace-constraint-rule-66">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                role="warning"
                context="text()[not(ancestor::tei:eg|ancestor::eg:egXML|ancestor::tei:code|ancestor::tei:tag)]">
         <sch:report test="matches(., ' ')" sqf:fix="nonbreakingspace.remove">
                  This text contains a non-breaking space character. Please consider changing this to a normal space character.
                </sch:report>
         <sqf:fix id="nonbreakingspace.remove">
            <sqf:description>
               <sqf:title>Normalize non-breaking space to normal space character.</sqf:title>
            </sqf:description>
            <sqf:replace match="." select="replace(., ' ', ' ')"/>
         </sqf:fix>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-localLinkTarget-constraint-rule-67">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="@*[self::attribute(corresp)|self::attribute(target)|self::attribute(from)|self::attribute(to)|self::attribute(ref)|self::attribute(rendition)|self::attribute(resp)|self::attribute(source)][not(ancestor::eg:egXML)][some $i in tokenize(., '\s+') satisfies starts-with($i, '#')]">
         <sch:let name="orphan.pointers"
                  value="for $p in tokenize(., '\s+')[starts-with(., '#')] return if (not(id(substring-after($p, '#')))) then $p else ()"/>
         <sch:report test="exists($orphan.pointers)">
                  There's no local target for <sch:value-of select="if (count($orphan.pointers) &gt; 1) then 'these pointers' else 'this pointer'"/>: <sch:value-of select="string-join($orphan.pointers, ', ')"/>. Please make sure you're referring to an existing @xml:id value.
                </sch:report>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-renditionTarget-constraint-rule-68">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="@rendition">
         <sch:let name="orphan.pointers"
                  value="for $p in tokenize(., '\s+')[starts-with(., '#')] return for $id in id(substring-after($p, '#'))[not(self::tei:rendition)] return $p"/>
         <sch:report test="exists($orphan.pointers)">
            <sch:value-of select="if (count($orphan.pointers) &gt; 1) then 'These pointers don''t' else 'This pointer doesn''t'"/> point to a &lt;rendition&gt; target: <sch:value-of select="string-join($orphan.pointers, ', ')"/>.
                </sch:report>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-quoteDelim-constraint-rule-69">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="tei:title[@level eq 'a']|tei:mentioned|tei:soCalled|tei:quote|tei:q">
         <sch:assert test="not(matches(., concat('^', $double.quotes, '|', $double.quotes, '$')))"
                     sqf:fix="quotation.remove">
                  Quotation mark delimiters are not allowed for <sch:name/>: they are completed at processing time via XSLT.
                </sch:assert>
         <sqf:fix id="quotation.remove">
            <sqf:description>
               <sqf:title>Remove quotation marks.</sqf:title>
            </sqf:description>
            <sqf:replace match="text()"
                         select="replace(., concat('^', $double.quotes, '|', $double.quotes, '$'), '')"/>
         </sqf:fix>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-crossref-id-constraint-rule-70">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="tei:body//tei:div[not(@type='editorialIntroduction')]|tei:figure|tei:table"
                role="warning">
         <sch:assert test="@xml:id">
                  You're strongly advised to add an @xml:id attribute to <sch:name/> to ease formal cross-referencing 
                  with (ptr|ref)[@type='crossref']
                </sch:assert>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-formalCrossref-constraint-rule-71">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="text()[not(ancestor::tei:eg|ancestor::eg:egXML|ancestor::tei:code|ancestor::tei:tag|ancestor::tei:ref[not(@type='crossref')])]"
                role="warning">
         <sch:assert test="not(matches(., '(table|figure|example|section) \d+([.,]\d+)* ((above)|(below))', 'i'))">
                  Please replace literal references to tables, figures, examples, and sections with a formal crosslink:
                  (ptr|ref)[@type="crossref"]
                </sch:assert>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-crossrefTargetType-constraint-rule-72">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="tei:ptr[@type='crossref']|tei:ref[@type='crossref']">
         <sch:let name="orphan.pointers"
                  value="for $p in tokenize(@target, '\s+')[starts-with(., '#')] return for $id in id(substring-after($p, '#'))[not(self::tei:div or self::tei:figure or self::tei:table or self::tei:note)] return $p"/>
         <sch:report test="exists($orphan.pointers)">
                  Cross-links (<sch:name/>[@type="crossref"]) should be targeted at &lt;div&gt;, &lt;figure&gt;, &lt;table&gt;, or &lt;note&gt;
                  elements. The target of <sch:value-of select="if (count($orphan.pointers) &gt; 1) then 'these pointers' else 'this pointer'"/> doesn't satisfy this condition: <sch:value-of select="string-join($orphan.pointers, ', ')"/>.
                </sch:report>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-crossrefType-constraint-rule-73">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="tei:ptr[not(@type='crossref')]|tei:ref[not(@type='crossref')]">
         <sch:report test="id(substring-after(@target, '#'))/(self::tei:div|self::tei:figure|self::tei:table)"
                     sqf:fix="crossreftype.add">
                  Please type internal cross-references as 'crossref' (<sch:name/>[@type="crossref"]).
                </sch:report>
         <sqf:fix id="crossreftype.add">
            <sqf:description>
               <sqf:title>Add @type='crossref'.</sqf:title>
            </sqf:description>
            <sqf:add match="."
                     node-type="attribute"
                     target="type"
                     select="'crossref'"/>
         </sqf:fix>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-centuries-constraint-rule-74">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="text()[not(ancestor::tei:quote or ancestor::tei:title)]">
         <sch:assert test="not(matches(., '\d\d?((th)|(st)|(rd)|(nd))[- ]centur((y)|(ies))', 'i'))">
                  Centuries such as "the nineteenth century" should be spelled out, not written with digits.
                </sch:assert>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.sch-teiVersion-constraint-rule-75">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="@target[matches(., '^https?://(www\.)?tei-c\.org/release/doc/tei-p5-doc')]">
         <sch:assert test="false()" sqf:fix="teiURL.fix">
                  Please refer to the exact version of the TEI Guidelines<sch:value-of select="if (normalize-space($tei.version)) then concat(' (currently at version ', $tei.version, ')') else ()"/>, and link to the version that can be found in the Vault section. For an overview of all archived versions, see https://www.tei-c.org/Vault/P5/.
                  
                  If you're referring to the English version, the correct URL will likely take the form of https://www.tei-c.org/Vault/P5/{$version-number}/doc/tei-p5-doc/en/html/.
                </sch:assert>
         <sqf:fix id="teiURL.fix" use-when="normalize-space($tei.version)">
            <sqf:description>
               <sqf:title>Change TEI URL to a versioned URL in the Vault (currently at version <sch:value-of select="$tei.version"/>).</sqf:title>
            </sqf:description>
            <sqf:replace node-type="attribute"
                         target="target"
                         select="replace(., '^https?://(www\.)?tei-c\.org/release/', concat('https://www.tei-c.org/Vault/P5/', $tei.version, '/'))"/>
         </sqf:fix>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="tei_jtei-jtei.jtei-url-constraint-rule-76">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                xmlns:eg="http://www.tei-c.org/ns/Examples"
                xmlns:egXML="http://www.tei-c.org/ns/Examples"
                xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                xmlns:sqf="http://www.schematron-quickfix.com/validator/process"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                context="@target[matches(., '^https?://(www\.)?jtei\.revues\.org/?')]"
                role="warning">
         <sch:let name="URL.fixed"
                  value="replace(., '^https?://(www\.)?jtei\.revues\.org/?', 'https://journals.openedition.org/jtei/')"/>
         <sch:assert test="false()" sqf:fix="jteiURL.fix">
                  Please refer to the correct jTEI URL: <sch:value-of select="$URL.fixed"/>.
                </sch:assert>
         <sqf:fix id="jteiURL.fix">
            <sqf:description>
               <sqf:title>Change jTEI URL to <sch:value-of select="$URL.fixed"/>.</sqf:title>
            </sqf:description>
            <sqf:replace node-type="attribute" target="target" select="$URL.fixed"/>
         </sqf:fix>
      </sch:rule>
   </pattern>
</grammar>
