<?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.music-encoding.org/ns/mei"><!--
Schema generated from ODD source 2023-09-05T18:03:43Z. .
TEI Edition: Version 5.0
TEI Edition Location: https://www.tei-c.org/Vault/P5//
  
--><!--[https://opensource.org/license/ECL-2.0/] Licensed under the Educational Community License version 2.0-->
   <sch:ns xmlns:sch="http://purl.oclc.org/dsdl/schematron"
            prefix="tei"
            uri="http://www.tei-c.org/ns/1.0"/>
   <define name="mei_data.ACCIDENTAL.WRITTEN">
      <choice>
         <ref name="mei_data.ACCIDENTAL.WRITTEN.basic"/>
         <ref name="mei_data.ACCIDENTAL.WRITTEN.extended"/>
         <ref name="mei_data.ACCIDENTAL.aeu"/>
         <ref name="mei_data.ACCIDENTAL.persian"/>
      </choice>
   </define>
   <define name="mei_data.ACCIDENTAL.WRITTEN.basic">
      <choice>
         <value>s</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sharp.</a:documentation>
         <value>f</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Flat.</a:documentation>
         <value>ss</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double sharp (written as 2 sharps).</a:documentation>
         <value>x</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double sharp (written using croix).</a:documentation>
         <value>ff</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double flat.</a:documentation>
         <value>xs</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Triple sharp (written as a croix followed by a sharp).</a:documentation>
         <value>sx</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Triple sharp (written as a sharp followed by a croix).</a:documentation>
         <value>ts</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Triple sharp (written as 3 sharps).</a:documentation>
         <value>tf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Triple flat.</a:documentation>
         <value>n</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Natural.</a:documentation>
         <value>nf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Natural + flat; used to cancel preceding double flat.</a:documentation>
         <value>ns</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Natural + sharp; used to cancel preceding double sharp.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.ACCIDENTAL.WRITTEN.extended">
      <choice>
         <value>su</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sharp note raised by quarter tone (sharp modified by arrow).</a:documentation>
         <value>sd</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sharp note lowered by quarter tone (sharp modified by arrow).</a:documentation>
         <value>fu</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Flat note raised by quarter tone (flat modified by arrow).</a:documentation>
         <value>fd</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Flat note lowered by quarter tone (flat modified by arrow).</a:documentation>
         <value>nu</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Natural note raised by quarter tone (natural modified by arrow).</a:documentation>
         <value>nd</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Natural note lowered by quarter tone (natural modified by arrow).</a:documentation>
         <value>xu</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double sharp note raised by quarter tone (double sharp modified by arrow).</a:documentation>
         <value>xd</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double sharp note lowered by quarter tone (double sharp modified by arrow).</a:documentation>
         <value>ffu</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double flat note raised by quarter tone (double flat modified by arrow).</a:documentation>
         <value>ffd</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double flat note lowered by quarter tone (double flat modified by arrow).</a:documentation>
         <value>1qf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">1/4-tone flat accidental.</a:documentation>
         <value>3qf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">3/4-tone flat accidental.</a:documentation>
         <value>1qs</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">1/4-tone sharp accidental.</a:documentation>
         <value>3qs</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">3/4-tone sharp accidental.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.ACCIDENTAL.aeu">
      <choice>
         <value>bms</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Büyük mücenneb (sharp).</a:documentation>
         <value>kms</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Küçük mücenneb (sharp).</a:documentation>
         <value>bs</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Bakiye (sharp).</a:documentation>
         <value>ks</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Koma (sharp).</a:documentation>
         <value>kf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Koma (flat).</a:documentation>
         <value>bf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Bakiye (flat).</a:documentation>
         <value>kmf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Küçük mücenneb (flat).</a:documentation>
         <value>bmf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Büyük mücenneb (flat).</a:documentation>
      </choice>
   </define>
   <define name="mei_data.ACCIDENTAL.persian">
      <choice>
         <value>koron</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Koron (quarter tone flat).</a:documentation>
         <value>sori</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sori (quarter tone sharp).</a:documentation>
      </choice>
   </define>
   <define name="mei_data.ACCIDENTAL.GESTURAL">
      <choice>
         <ref name="mei_data.ACCIDENTAL.GESTURAL.basic"/>
         <ref name="mei_data.ACCIDENTAL.GESTURAL.extended"/>
         <ref name="mei_data.ACCIDENTAL.aeu"/>
         <ref name="mei_data.ACCIDENTAL.persian"/>
      </choice>
   </define>
   <define name="mei_data.ACCIDENTAL.GESTURAL.basic">
      <choice>
         <value>s</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sharp.</a:documentation>
         <value>f</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Flat.</a:documentation>
         <value>ss</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double sharp.</a:documentation>
         <value>ff</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double flat.</a:documentation>
         <value>ts</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Triple sharp.</a:documentation>
         <value>tf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Triple flat.</a:documentation>
         <value>n</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Natural.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.ACCIDENTAL.GESTURAL.extended">
      <choice>
         <value>su</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Three quarter-tones sharp.</a:documentation>
         <value>sd</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Quarter-tone sharp.</a:documentation>
         <value>fu</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Quarter-tone flat.</a:documentation>
         <value>fd</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Three quarter-tones flat.</a:documentation>
         <value>xu</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Five quarter-tones sharp.</a:documentation>
         <value>ffd</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Five quarter-tones flat.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.ARTICULATION">
      <choice>
         <value>acc</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Accent (Unicode 1D17B).</a:documentation>
         <value>acc-inv</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Inverted accent.</a:documentation>
         <value>acc-long</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Long accent, used to indicate an elongated accent mark. It is the responsibility of the encoder to distinguish between accents and hairpins.</a:documentation>
         <value>acc-soft</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Soft accent, see SMuFL Articulation supplement (U+ED40–U+ED4F).</a:documentation>
         <value>stacc</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Staccato (Unicode 1D17C).</a:documentation>
         <value>ten</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tenuto (Unicode 1D17D).</a:documentation>
         <value>stacciss</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Staccatissimo (Unicode 1D17E).</a:documentation>
         <value>marc</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Marcato (Unicode 1D17F).</a:documentation>
         <value>spicc</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Spiccato.</a:documentation>
         <value>stress</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stress (Unicode 00B4).</a:documentation>
         <value>unstress</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unstress (Unicode 02D8).</a:documentation>
         <value>doit</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Main note followed by short slide to higher, indeterminate pitch (Unicode 1D185).</a:documentation>
         <value>scoop</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Main note preceded by short slide from lower, indeterminate pitch (Unicode 1D186).</a:documentation>
         <value>rip</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Main note preceded by long slide from lower, often indeterminate pitch; also known as "squeeze".</a:documentation>
         <value>plop</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Main note preceded by "slide" from higher, indeterminate pitch.</a:documentation>
         <value>fall</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Main note followed by short "slide" to lower, indeterminate pitch.</a:documentation>
         <value>longfall</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Main note followed by long "slide" to lower, indeterminate pitch.</a:documentation>
         <value>bend</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">"lip slur" to lower pitch, then return to written pitch.</a:documentation>
         <value>flip</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Main note followed by quick upward rise, then descent in pitch (Unicode 1D187).</a:documentation>
         <value>smear</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(Unicode 1D188).</a:documentation>
         <value>shake</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Alternation between written pitch and next highest overtone (brass instruments) or note minor third higher (woodwinds).</a:documentation>
         <value>dnbow</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Down bow (Unicode 1D1AA).</a:documentation>
         <value>upbow</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Up bow (Unicode 1D1AB).</a:documentation>
         <value>harm</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Harmonic (Unicode 1D1AC).</a:documentation>
         <value>snap</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Snap pizzicato (Unicode 1D1AD).</a:documentation>
         <value>fingernail</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Fingernail (Unicode 1D1B3).</a:documentation>
         <value>damp</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stop harp string from sounding (Unicode 1D1B4).</a:documentation>
         <value>dampall</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stop all harp strings from sounding (Unicode 1D1B5).</a:documentation>
         <value>open</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Full (as opposed to stopped) tone.</a:documentation>
         <value>stop</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">"muffled" tone.</a:documentation>
         <value>dbltongue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double tongue (Unicode 1D18A).</a:documentation>
         <value>trpltongue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Triple tongue (Unicode 1D18B).</a:documentation>
         <value>heel</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Use heel (organ pedal).</a:documentation>
         <value>toe</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Use toe (organ pedal).</a:documentation>
         <value>tap</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Percussive effect on guitar string(s).</a:documentation>
         <value>lhpizz</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Left-hand pizzicato.</a:documentation>
         <value>dot</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Uninterpreted dot.</a:documentation>
         <value>stroke</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Uninterpreted stroke.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.AUGMENTDOT">
      <data type="nonNegativeInteger">
         <param name="maxInclusive">4</param>
      </data>
   </define>
   <define name="mei_data.BARRENDITION">
      <choice>
         <value>dashed</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Dashed line (SMuFL E036 and Unicode 1D104).</a:documentation>
         <value>dotted</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Dotted line (SMuFL E037).</a:documentation>
         <value>dbl</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double bar line (SMuFL E031 and Unicode 1D101).</a:documentation>
         <value>dbldashed</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double dashed line.</a:documentation>
         <value>dbldotted</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double dotted line.</a:documentation>
         <value>dblheavy</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Heavy double bar line (SMuFL E035).</a:documentation>
         <value>dblsegno</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Segno serpent with vertical lines (SMuFL E04B).</a:documentation>
         <value>end</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">End bar line (SMuFL E032 and Unicode 1D102).</a:documentation>
         <value>heavy</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Heavy bar line (SMuFL E034).</a:documentation>
         <value>invis</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Bar line not rendered.</a:documentation>
         <value>rptstart</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Repeat start (SMuFL E040 and Unicode 1D106).</a:documentation>
         <value>rptboth</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Repeat start and end (SMuFL E042).</a:documentation>
         <value>rptend</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Repeat end (SMuFL E041 and Unicode 1D107).</a:documentation>
         <value>segno</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Segno serpent.</a:documentation>
         <value>single</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Single bar line (SMuFL E030 and Unicode 1D100).</a:documentation>
      </choice>
   </define>
   <define name="mei_data.BEAT">
      <data type="decimal">
         <param name="minInclusive">0</param>
      </data>
   </define>
   <define name="mei_data.BEATRPT.REND">
      <choice>
         <data type="positiveInteger">
            <param name="pattern">1|2|3|4|5</param>
         </data>
         <data type="token">
            <param name="pattern">mixed</param>
         </data>
      </choice>
   </define>
   <define name="mei_data.BOOLEAN">
      <choice>
         <value>true</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">True.</a:documentation>
         <value>false</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">False.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.CLEFLINE">
      <data type="positiveInteger"/>
   </define>
   <define name="mei_data.CLEFSHAPE">
      <choice>
         <value>G</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">G clef (Unicode 1D11E).</a:documentation>
         <value>GG</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double G clef. Sounds one octave lower than G clef. (See remarks on usage below.)</a:documentation>
         <value>F</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">F clef (Unicode 1D122).</a:documentation>
         <value>C</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">C clef (Unicode 1D121).</a:documentation>
         <value>perc</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Drum clef (Unicode 1D125 or Unicode 1D126).</a:documentation>
         <value>TAB</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tablature "clef"; i.e., usually "TAB" rendered vertically.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.CLUSTER">
      <choice>
         <value>white</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">White keys.</a:documentation>
         <value>black</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Black keys.</a:documentation>
         <value>chromatic</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Mixed black and white keys.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.COLORNAMES">
      <choice>
         <value>aliceblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #f0f8ff / RGB: 240,248,255</a:documentation>
         <value>antiquewhite</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #faebd7 / RGB: 250,235,215</a:documentation>
         <value>aqua</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #00ffff / RGB: 0,255,255</a:documentation>
         <value>aquamarine</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #7fffd4 / RGB: 127,255,212</a:documentation>
         <value>azure</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #f0ffff / RGB: 240,255,255</a:documentation>
         <value>beige</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #f5f5dc / RGB: 245,245,220</a:documentation>
         <value>bisque</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffe4c4 / RGB: 255,228,196</a:documentation>
         <value>black</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #000000 / RGB: 0,0,0</a:documentation>
         <value>blanchedalmond</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffebcd / RGB: 255,235,205</a:documentation>
         <value>blue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #0000ff / RGB: 0,0,255</a:documentation>
         <value>blueviolet</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #8a2be2 / RGB: 138,43,226</a:documentation>
         <value>brown</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #a52a2a / RGB: 165,42,42</a:documentation>
         <value>burlywood</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #deb887 / RGB: 222,184,135</a:documentation>
         <value>cadetblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #5f9ea0 / RGB: 95,158,160</a:documentation>
         <value>chartreuse</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #7fff00 / RGB: 127,255,0</a:documentation>
         <value>chocolate</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #d2691e / RGB: 210,105,30</a:documentation>
         <value>coral</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ff7f50 / RGB: 255,127,80</a:documentation>
         <value>cornflowerblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #6495ed / RGB: 100,149,237</a:documentation>
         <value>cornsilk</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #fff8dc / RGB: 255,248,220</a:documentation>
         <value>crimson</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #dc143c / RGB: 220,20,60</a:documentation>
         <value>cyan</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #00ffff / RGB: 0,255,255</a:documentation>
         <value>darkblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #00008b / RGB: 0,0,139</a:documentation>
         <value>darkcyan</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #008b8b / RGB: 0,139,139</a:documentation>
         <value>darkgoldenrod</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #b8860b / RGB: 184,134,11</a:documentation>
         <value>darkgray</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #a9a9a9 / RGB: 169,169,169</a:documentation>
         <value>darkgreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #006400 / RGB: 0,100,0</a:documentation>
         <value>darkgrey</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #a9a9a9 / RGB: 169,169,169</a:documentation>
         <value>darkkhaki</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #bdb76b / RGB: 189,183,107</a:documentation>
         <value>darkmagenta</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #8b008b / RGB: 139,0,139</a:documentation>
         <value>darkolivegreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #556b2f / RGB: 85,107,47</a:documentation>
         <value>darkorange</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ff8c00 / RGB: 255,140,0</a:documentation>
         <value>darkorchid</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #9932cc / RGB: 153,50,204</a:documentation>
         <value>darkred</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #8b0000 / RGB: 139,0,0</a:documentation>
         <value>darksalmon</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #e9967a / RGB: 233,150,122</a:documentation>
         <value>darkseagreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #8fbc8f / RGB: 143,188,143</a:documentation>
         <value>darkslateblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #483d8b / RGB: 72,61,139</a:documentation>
         <value>darkslategray</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #2f4f4f / RGB: 47,79,79</a:documentation>
         <value>darkslategrey</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #2f4f4f / RGB: 47,79,79</a:documentation>
         <value>darkturquoise</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #00ced1 / RGB: 0,206,209</a:documentation>
         <value>darkviolet</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #9400d3 / RGB: 148,0,211</a:documentation>
         <value>deeppink</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ff1493 / RGB: 255,20,147</a:documentation>
         <value>deepskyblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #00bfff / RGB: 0,191,255</a:documentation>
         <value>dimgray</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #696969 / RGB: 105,105,105</a:documentation>
         <value>dimgrey</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #696969 / RGB: 105,105,105</a:documentation>
         <value>dodgerblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #1e90ff / RGB: 30,144,255</a:documentation>
         <value>firebrick</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #b22222 / RGB: 178,34,34</a:documentation>
         <value>floralwhite</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #fffaf0 / RGB: 255,250,240</a:documentation>
         <value>forestgreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #228b22 / RGB: 34,139,34</a:documentation>
         <value>fuchsia</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ff00ff / RGB: 255,0,255</a:documentation>
         <value>gainsboro</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #dcdcdc / RGB: 220,220,220</a:documentation>
         <value>ghostwhite</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #f8f8ff / RGB: 248,248,255</a:documentation>
         <value>gold</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffd700 / RGB: 255,215,0</a:documentation>
         <value>goldenrod</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #daa520 / RGB: 218,165,32</a:documentation>
         <value>gray</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #808080 / RGB: 128,128,128</a:documentation>
         <value>green</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #008000 / RGB: 0,128,0</a:documentation>
         <value>greenyellow</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #adff2f / RGB: 173,255,47</a:documentation>
         <value>grey</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #808080 / RGB: 128,128,128</a:documentation>
         <value>honeydew</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #f0fff0 / RGB: 240,255,240</a:documentation>
         <value>hotpink</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ff69b4 / RGB: 255,105,180</a:documentation>
         <value>indianred</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #cd5c5c / RGB: 205,92,92</a:documentation>
         <value>indigo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #4b0082 / RGB: 75,0,130</a:documentation>
         <value>ivory</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #fffff0 / RGB: 255,255,240</a:documentation>
         <value>khaki</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #f0e68c / RGB: 240,230,140</a:documentation>
         <value>lavender</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #e6e6fa / RGB: 230,230,250</a:documentation>
         <value>lavenderblush</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #fff0f5 / RGB: 255,240,245</a:documentation>
         <value>lawngreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #7cfc00 / RGB: 124,252,0</a:documentation>
         <value>lemonchiffon</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #fffacd / RGB: 255,250,205</a:documentation>
         <value>lightblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #add8e6 / RGB: 173,216,230</a:documentation>
         <value>lightcoral</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #f08080 / RGB: 240,128,128</a:documentation>
         <value>lightcyan</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #e0ffff / RGB: 224,255,255</a:documentation>
         <value>lightgoldenrodyellow</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #fafad2 / RGB: 250,250,210</a:documentation>
         <value>lightgray</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #d3d3d3 / RGB: 211,211,211</a:documentation>
         <value>lightgreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #90ee90 / RGB: 144,238,144</a:documentation>
         <value>lightgrey</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #d3d3d3 / RGB: 211,211,211</a:documentation>
         <value>lightpink</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffb6c1 / RGB: 255,182,193</a:documentation>
         <value>lightsalmon</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffa07a / RGB: 255,160,122</a:documentation>
         <value>lightseagreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #20b2aa / RGB: 32,178,170</a:documentation>
         <value>lightskyblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #87cefa / RGB: 135,206,250</a:documentation>
         <value>lightslategray</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #778899 / RGB: 119,136,153</a:documentation>
         <value>lightslategrey</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #778899 / RGB: 119,136,153</a:documentation>
         <value>lightsteelblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #b0c4de / RGB: 176,196,222</a:documentation>
         <value>lightyellow</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffffe0 / RGB: 255,255,224</a:documentation>
         <value>lime</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #00ff00 / RGB: 0,255,0</a:documentation>
         <value>limegreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #32cd32 / RGB: 50,205,50</a:documentation>
         <value>linen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #faf0e6 / RGB: 250,240,230</a:documentation>
         <value>magenta</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ff00ff / RGB: 255,0,255</a:documentation>
         <value>maroon</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #800000 / RGB: 128,0,0</a:documentation>
         <value>mediumaquamarine</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #66cdaa / RGB: 102,205,170</a:documentation>
         <value>mediumblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #0000cd / RGB: 0,0,205</a:documentation>
         <value>mediumorchid</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ba55d3 / RGB: 186,85,211</a:documentation>
         <value>mediumpurple</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #9370db / RGB: 147,112,219</a:documentation>
         <value>mediumseagreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #3cb371 / RGB: 60,179,113</a:documentation>
         <value>mediumslateblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #7b68ee / RGB: 123,104,238</a:documentation>
         <value>mediumspringgreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #00fa9a / RGB: 0,250,154</a:documentation>
         <value>mediumturquoise</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #48d1cc / RGB: 72,209,204</a:documentation>
         <value>mediumvioletred</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #c71585 / RGB: 199,21,133</a:documentation>
         <value>midnightblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #191970 / RGB: 25,25,112</a:documentation>
         <value>mintcream</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #f5fffa / RGB: 245,255,250</a:documentation>
         <value>mistyrose</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffe4e1 / RGB: 255,228,225</a:documentation>
         <value>moccasin</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffe4b5 / RGB: 255,228,181</a:documentation>
         <value>navajowhite</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffdead / RGB: 255,222,173</a:documentation>
         <value>navy</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #000080 / RGB: 0,0,128</a:documentation>
         <value>oldlace</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #fdf5e6 / RGB: 253,245,230</a:documentation>
         <value>olive</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #808000 / RGB: 128,128,0</a:documentation>
         <value>olivedrab</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #6b8e23 / RGB: 107,142,35</a:documentation>
         <value>orange</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffa500 / RGB: 255,165,0</a:documentation>
         <value>orangered</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ff4500 / RGB: 255,69,0</a:documentation>
         <value>orchid</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #da70d6 / RGB: 218,112,214</a:documentation>
         <value>palegoldenrod</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #eee8aa / RGB: 238,232,170</a:documentation>
         <value>palegreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #98fb98 / RGB: 152,251,152</a:documentation>
         <value>paleturquoise</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #afeeee / RGB: 175,238,238</a:documentation>
         <value>palevioletred</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #db7093 / RGB: 219,112,147</a:documentation>
         <value>papayawhip</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffefd5 / RGB: 255,239,213</a:documentation>
         <value>peachpuff</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffdab9 / RGB: 255,218,185</a:documentation>
         <value>peru</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #cd853f / RGB: 205,133,63</a:documentation>
         <value>pink</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffc0cb / RGB: 255,192,203</a:documentation>
         <value>plum</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #dda0dd / RGB: 221,160,221</a:documentation>
         <value>powderblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #b0e0e6 / RGB: 176,224,230</a:documentation>
         <value>purple</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #800080 / RGB: 128,0,128</a:documentation>
         <value>rebeccapurple</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #663399 / RGB: 102,51,153</a:documentation>
         <value>red</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ff0000 / RGB: 255,0,0</a:documentation>
         <value>rosybrown</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #bc8f8f / RGB: 188,143,143</a:documentation>
         <value>royalblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #4169e1 / RGB: 65,105,225</a:documentation>
         <value>saddlebrown</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #8b4513 / RGB: 139,69,19</a:documentation>
         <value>salmon</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #fa8072 / RGB: 250,128,114</a:documentation>
         <value>sandybrown</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #f4a460 / RGB: 244,164,96</a:documentation>
         <value>seagreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #2e8b57 / RGB: 46,139,87</a:documentation>
         <value>seashell</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #fff5ee / RGB: 255,245,238</a:documentation>
         <value>sienna</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #a0522d / RGB: 160,82,45</a:documentation>
         <value>silver</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #c0c0c0 / RGB: 192,192,192</a:documentation>
         <value>skyblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #87ceeb / RGB: 135,206,235</a:documentation>
         <value>slateblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #6a5acd / RGB: 106,90,205</a:documentation>
         <value>slategray</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #708090 / RGB: 112,128,144</a:documentation>
         <value>slategrey</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #708090 / RGB: 112,128,144</a:documentation>
         <value>snow</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #fffafa / RGB: 255,250,250</a:documentation>
         <value>springgreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #00ff7f / RGB: 0,255,127</a:documentation>
         <value>steelblue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #4682b4 / RGB: 70,130,180</a:documentation>
         <value>tan</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #d2b48c / RGB: 210,180,140</a:documentation>
         <value>teal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #008080 / RGB: 0,128,128</a:documentation>
         <value>thistle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #d8bfd8 / RGB: 216,191,216</a:documentation>
         <value>tomato</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ff6347 / RGB: 255,99,71</a:documentation>
         <value>turquoise</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #40e0d0 / RGB: 64,224,208</a:documentation>
         <value>violet</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ee82ee / RGB: 238,130,238</a:documentation>
         <value>wheat</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #f5deb3 / RGB: 245,222,179</a:documentation>
         <value>white</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffffff / RGB: 255,255,255</a:documentation>
         <value>whitesmoke</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #f5f5f5 / RGB: 245,245,245</a:documentation>
         <value>yellow</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #ffff00 / RGB: 255,255,0</a:documentation>
         <value>yellowgreen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #9acd32 / RGB: 154,205,50</a:documentation>
      </choice>
   </define>
   <define name="mei_data.COLORVALUES">
      <choice>
         <data type="token">
            <param name="pattern">#[0-9A-Fa-f]{6,6}</param>
         </data>
         <data type="token">
            <param name="pattern">#[0-9A-Fa-f]{8,8}</param>
         </data>
         <data type="token">
            <param name="pattern">rgb\((\s*(([01]?[0-9]?[0-9])|2[0-4][0-9]|25[0-5])\s*,\s*){2}([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\s*\)</param>
         </data>
         <data type="token">
            <param name="pattern">rgba\(\s*(([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\s*,\s*){3}(0(\.\d+)?|1(\.0+)?)\s*\)|rgba\(\s*(((\d{1,2})?%|100%)\s*,\s*){2}(\d{1,2}%|100%)\s*,\s*(0(\.\d+)?|1(\.0+)?)\s*\)</param>
         </data>
         <data type="token">
            <param name="pattern">hsl\(\s*((\d{1,2})|[12]\d{2}|3[0-5]\d|360)\s*,\s*(\d{1,2}%|100%)\s*,\s*(\d{1,2}%|100%)\s*\)</param>
         </data>
         <data type="token">
            <param name="pattern">hsla\(\s*(\d{1,2}|[12]\d{2}|3[0-5]\d|360)\s*,\s*(\d{1,2}%|100%)\s*,\s*(\d{1,2}%|100%)\s*,\s*(0(\.\d+)?|1(\.0+)?)\s*\)</param>
         </data>
      </choice>
   </define>
   <define name="mei_data.COLOR">
      <choice>
         <ref name="mei_data.COLORNAMES"/>
         <ref name="mei_data.COLORVALUES"/>
      </choice>
   </define>
   <define name="mei_data.DEGREES">
      <data type="decimal">
         <param name="maxInclusive">360.0</param>
         <param name="minInclusive">-360.0</param>
      </data>
   </define>
   <define name="mei_data.DURATION">
      <choice>
         <ref name="mei_data.DURATION.cmn"/>
      </choice>
   </define>
   <define name="mei_data.FINGER.FRET">
      <choice>
         <data type="positiveInteger">
            <param name="minInclusive">1</param>
            <param name="maxInclusive">4</param>
         </data>
         <data type="token">
            <param name="pattern">x|o|t</param>
         </data>
      </choice>
   </define>
   <define name="mei_data.FONTFAMILY">
      <data type="token"/>
   </define>
   <define name="mei_data.FONTNAME">
      <data type="token"/>
   </define>
   <define name="mei_data.FONTSIZE">
      <choice>
         <ref name="mei_data.FONTSIZENUMERIC"/>
         <ref name="mei_data.FONTSIZETERM"/>
         <ref name="mei_data.PERCENT"/>
      </choice>
   </define>
   <define name="mei_data.FONTSIZENUMERIC">
      <data type="token">
         <param name="pattern">\d*(\.\d+)?(pt|vu)</param>
         <except>
            <choice>
               <data type="token">
                  <param name="pattern">(pt|vu)</param>
               </data>
               <data type="token">
                  <param name="pattern">0+(pt|vu)</param>
               </data>
               <data type="token">
                  <param name="pattern">0+(\.0+)?(pt|vu)</param>
               </data>
               <data type="token">
                  <param name="pattern">\.0+(pt|vu)</param>
               </data>
            </choice>
         </except>
      </data>
   </define>
   <define name="mei_data.FONTSIZESCALE">
      <data type="integer">
         <param name="minInclusive">1</param>
         <param name="maxInclusive">9</param>
      </data>
   </define>
   <define name="mei_data.FONTSIZETERM">
      <choice>
         <value>xx-small</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Smaller than x-small.</a:documentation>
         <value>x-small</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Smaller than small, larger than xx-small.</a:documentation>
         <value>small</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Smaller than normal, larger than x-small.</a:documentation>
         <value>normal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Smaller than large, larger than small.</a:documentation>
         <value>large</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Smaller than x-large, larger than normal.</a:documentation>
         <value>x-large</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Smaller than xx-large, larger than large.</a:documentation>
         <value>xx-large</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Larger than x-large.</a:documentation>
         <value>smaller</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">One size smaller than the current size.</a:documentation>
         <value>larger</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">One size larger than the current size.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.FONTSTYLE">
      <choice>
         <value>italic</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Text slants to right.</a:documentation>
         <value>normal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unadorned.</a:documentation>
         <value>oblique</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Text slants to the left.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.FONTWEIGHT">
      <choice>
         <value>bold</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Bold or heavy.</a:documentation>
         <value>normal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Not bold.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.FRETNUMBER">
      <data type="nonNegativeInteger"/>
   </define>
   <define name="mei_data.GRACE">
      <choice>
         <value>acc</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Time "stolen" from following note.</a:documentation>
         <value>unacc</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Time "stolen" from previous note.</a:documentation>
         <value>unknown</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">No interpretation regarding performed value of grace note.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.HEXNUM">
      <data type="string">
         <param name="pattern">(#x|U\+)[A-F0-9]+</param>
      </data>
   </define>
   <define name="mei_data.HORIZONTALALIGNMENT">
      <choice>
         <value>left</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Left aligned.</a:documentation>
         <value>right</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Right aligned.</a:documentation>
         <value>center</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Centered.</a:documentation>
         <value>justify</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Left and right aligned.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.ISODATE">
      <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"/>
         <data type="token">
            <param name="pattern">[0-9.,DHMPRSTWYZ/:+\-]+</param>
         </data>
      </choice>
   </define>
   <define name="mei_data.KEYFIFTHS">
      <data type="token">
         <param name="pattern">mixed|0|([1-9]|1[0-2])[f|s]</param>
      </data>
   </define>
   <define name="mei_data.LINEFORM">
      <choice>
         <value>dashed</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Dashed line.</a:documentation>
         <value>dotted</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Dotted line.</a:documentation>
         <value>solid</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Straight, uninterrupted line.</a:documentation>
         <value>wavy</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Undulating line.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.LINESTARTENDSYMBOL">
      <choice>
         <value>angledown</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">90 degree turn down (similar to Unicode 231D at end of line, 231C at start).</a:documentation>
         <value>angleup</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">90 degree turn up (similar to Unicode 231F at end of line, 231E at start).</a:documentation>
         <value>angleright</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">90 degree turn right (syntactic sugar for "angledown" for vertical or angled lines).</a:documentation>
         <value>angleleft</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">90 degree turn left (syntactic sugar for "angleup" for vertical or angled lines).</a:documentation>
         <value>arrow</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Filled, triangular arrowhead (similar to Unicode U+25C0 or SMuFL U+EB78).</a:documentation>
         <value>arrowopen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Open triangular arrowhead (similar to Unicode U+02C3 or SMuFL U+EB8A).</a:documentation>
         <value>arrowwhite</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled, triangular arrowhead (similar to Unicode U+25C1 or SMuFL U+EB82).</a:documentation>
         <value>harpoonleft</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Harpoon-shaped arrowhead left of line (similar to arrowhead of Unicode U+21BD).</a:documentation>
         <value>harpoonright</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Harpoon-shaped arrowhead right of line (similar to arrowhead of Unicode U+21BC).</a:documentation>
         <value>H</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hauptstimme (Unicode U+1D1A6 or SMuFL U+E860).</a:documentation>
         <value>N</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Nebenstimme (Unicode U+1D1A7 or SMuFL U+E861).</a:documentation>
         <value>Th</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Theme (SMuFL U+E864).</a:documentation>
         <value>ThRetro</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Theme, retrograde (SMuFL U+E865).</a:documentation>
         <value>ThRetroInv</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Theme, retrograde inversion (SMuFL U+E866).</a:documentation>
         <value>ThInv</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Theme, inverted (SMuFL U+E867).</a:documentation>
         <value>T</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Theme (SMuFL U+E868).</a:documentation>
         <value>TInv</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Theme, inverted (SMuFL U+E869).</a:documentation>
         <value>CH</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Choralemelodie (SMuFL U+E86A).</a:documentation>
         <value>RH</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hauptrhythmus (SMuFL U+E86B).</a:documentation>
         <value>none</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">No start/end symbol.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.LINEWIDTH">
      <choice>
         <ref name="mei_data.LINEWIDTHTERM"/>
         <ref name="mei_data.MEASUREMENTUNSIGNED"/>
      </choice>
   </define>
   <define name="mei_data.LINEWIDTHTERM">
      <choice>
         <value>narrow</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Default line width.</a:documentation>
         <value>medium</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Twice as wide as narrow.</a:documentation>
         <value>wide</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Twice as wide as medium.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.MEASUREBEAT">
      <data type="token">
         <param name="pattern">([0-9]+m\s*\+\s*)?[0-9]+(\.?[0-9]*)?</param>
      </data>
   </define>
   <define name="mei_data.MEASUREMENTUNSIGNED">
      <data type="token">
         <param name="pattern">(\+)?\d+(\.\d+)?(cm|mm|in|pt|pc|px|vu)?</param>
      </data>
   </define>
   <define name="mei_data.MEASUREMENTSIGNED">
      <data type="token">
         <param name="pattern">(\+|-)?\d+(\.\d+)?(cm|mm|in|pt|pc|px|vu)?</param>
      </data>
   </define>
   <define name="mei_data.MEASUREMENTFONTUNSIGNED">
      <data type="token">
         <param name="pattern">\d+(\.\d+)?(ch|em|ex)?</param>
      </data>
   </define>
   <define name="mei_data.MEASUREMENTFONTSIGNED">
      <data type="token">
         <param name="pattern">(\+|-)?\d+(\.\d+)?(ch|em|ex)?</param>
      </data>
   </define>
   <define name="mei_data.MEASUREMENTTYPOGRAPHYUNSIGNED">
      <choice>
         <ref name="mei_data.MEASUREMENTFONTUNSIGNED"/>
         <ref name="mei_data.MEASUREMENTUNSIGNED"/>
      </choice>
   </define>
   <define name="mei_data.MEASUREMENTTYPOGRAPHYSIGNED">
      <choice>
         <ref name="mei_data.MEASUREMENTFONTSIGNED"/>
         <ref name="mei_data.MEASUREMENTSIGNED"/>
      </choice>
   </define>
   <define name="mei_data.METERSIGN">
      <choice>
         <value>common</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Common time; i.e., 4/4.</a:documentation>
         <value>cut</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Cut time; i.e., 2/2.</a:documentation>
         <value>open</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Open time signature, i.e., Senza misura. See Gould pp. 611–615.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.MIDICHANNEL">
      <data type="token">
         <param name="pattern">0|([1-9]|1[0-5])o?|16o</param>
      </data>
   </define>
   <define name="mei_data.MIDIBPM">
      <data type="decimal">
         <param name="minExclusive">0</param>
      </data>
   </define>
   <define name="mei_data.MIDIMSPB">
      <data type="positiveInteger"/>
   </define>
   <define name="mei_data.MIDINAMES">
      <choice>
         <value>Acoustic_Grand_Piano</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Acoustic Grand Piano, Program #0.</a:documentation>
         <value>Bright_Acoustic_Piano</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Bright Acoustic Piano, Program #1.</a:documentation>
         <value>Electric_Grand_Piano</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Electric Grand Piano, Program #2.</a:documentation>
         <value>Honky-tonk_Piano</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Honky-tonk Piano, Program #3.</a:documentation>
         <value>Electric_Piano_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Electric Piano 1, Program #4.</a:documentation>
         <value>Electric_Piano_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Electric Piano 2, Program #5.</a:documentation>
         <value>Harpsichord</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Harpsichord, Program #6.</a:documentation>
         <value>Clavi</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Clavi, Program #7.</a:documentation>
         <value>Celesta</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Celesta, Program #8.</a:documentation>
         <value>Glockenspiel</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Glockenspiel, Program #9.</a:documentation>
         <value>Music_Box</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Music Box, Program #10.</a:documentation>
         <value>Vibraphone</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Vibraphone, Program #11.</a:documentation>
         <value>Marimba</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Marimba, Program #12.</a:documentation>
         <value>Xylophone</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Xylophone, Program #13.</a:documentation>
         <value>Tubular_Bells</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tubular Bells, Program #14.</a:documentation>
         <value>Dulcimer</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Dulcimer, Program #15.</a:documentation>
         <value>Drawbar_Organ</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Drawbar Organ, Program #16.</a:documentation>
         <value>Percussive_Organ</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Percussive Organ, Program #17.</a:documentation>
         <value>Rock_Organ</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Rock Organ, Program #18.</a:documentation>
         <value>Church_Organ</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Church Organ, Program #19.</a:documentation>
         <value>Reed_Organ</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reed Organ, Program #20.</a:documentation>
         <value>Accordion</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Accordion, Program #21.</a:documentation>
         <value>Harmonica</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Harmonica, Program #22.</a:documentation>
         <value>Tango_Accordion</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tango Accordion, Program #23.</a:documentation>
         <value>Acoustic_Guitar_nylon</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Acoustic Guitar (nylon), Program #24.</a:documentation>
         <value>Acoustic_Guitar_steel</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Acoustic Guitar (steel), Program #25.</a:documentation>
         <value>Electric_Guitar_jazz</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Electric Guitar (jazz), Program #26.</a:documentation>
         <value>Electric_Guitar_clean</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Electric Guitar (clean), Program #27.</a:documentation>
         <value>Electric_Guitar_muted</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Electric Guitar (muted), Program #28.</a:documentation>
         <value>Overdriven_Guitar</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Overdriven Guitar, Program #29.</a:documentation>
         <value>Distortion_Guitar</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Distortion Guitar, Program #30.</a:documentation>
         <value>Guitar_harmonics</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Guitar harmonics, Program #31.</a:documentation>
         <value>Acoustic_Bass</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Acoustic Bass, Program #32.</a:documentation>
         <value>Electric_Bass_finger</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Electric Bass (finger), Program #33.</a:documentation>
         <value>Electric_Bass_pick</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Electric Bass (pick), Program #34.</a:documentation>
         <value>Fretless_Bass</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Fretless Bass, Program #35.</a:documentation>
         <value>Slap_Bass_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Slap Bass 1, Program #36.</a:documentation>
         <value>Slap_Bass_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Slap Bass 2, Program #37.</a:documentation>
         <value>Synth_Bass_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Synth Bass 1, Program #38.</a:documentation>
         <value>Synth_Bass_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Synth Bass 2, Program #39.</a:documentation>
         <value>Violin</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Violin, Program #40.</a:documentation>
         <value>Viola</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Viola, Program #41.</a:documentation>
         <value>Cello</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Cello, Program #42.</a:documentation>
         <value>Contrabass</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contrabass, Program #43.</a:documentation>
         <value>Tremolo_Strings</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tremolo Strings, Program #44.</a:documentation>
         <value>Pizzicato_Strings</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pizzicato Strings, Program #45.</a:documentation>
         <value>Orchestral_Harp</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Orchestral Harp, Program #46.</a:documentation>
         <value>Timpani</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Timpani, Program #47.</a:documentation>
         <value>String_Ensemble_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">String Ensemble 1, Program #48.</a:documentation>
         <value>String_Ensemble_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">String Ensemble 2, Program #49.</a:documentation>
         <value>SynthStrings_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">SynthStrings 1, Program #50.</a:documentation>
         <value>SynthStrings_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">SynthStrings 2, Program #51.</a:documentation>
         <value>Choir_Aahs</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Choir Aahs, Program #52.</a:documentation>
         <value>Voice_Oohs</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Voice Oohs, Program #53.</a:documentation>
         <value>Synth_Voice</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Synth Voice, Program #54.</a:documentation>
         <value>Orchestra_Hit</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Orchestra Hit, Program #55.</a:documentation>
         <value>Trumpet</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Trumpet, Program #56.</a:documentation>
         <value>Trombone</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Trombone, Program #57.</a:documentation>
         <value>Tuba</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tuba, Program #58.</a:documentation>
         <value>Muted_Trumpet</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Muted Trumpet, Program #59.</a:documentation>
         <value>French_Horn</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">French Horn, Program #60.</a:documentation>
         <value>Brass_Section</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Brass Section, Program #61.</a:documentation>
         <value>SynthBrass_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">SynthBrass 1, Program #62.</a:documentation>
         <value>SynthBrass_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">SynthBrass 2, Program #63.</a:documentation>
         <value>Soprano_Sax</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Soprano Sax, Program #64.</a:documentation>
         <value>Alto_Sax</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Alto Sax, Program #65.</a:documentation>
         <value>Tenor_Sax</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tenor Sax, Program #66.</a:documentation>
         <value>Baritone_Sax</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Baritone Sax, Program #67.</a:documentation>
         <value>Oboe</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Oboe, Program #68.</a:documentation>
         <value>English_Horn</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">English Horn, Program #69.</a:documentation>
         <value>Bassoon</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Bassoon, Program #70.</a:documentation>
         <value>Clarinet</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Clarinet, Program #71.</a:documentation>
         <value>Piccolo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Piccolo, Program #72.</a:documentation>
         <value>Flute</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Flute, Program #73.</a:documentation>
         <value>Recorder</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Recorder, Program #74.</a:documentation>
         <value>Pan_Flute</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pan Flute, Program #75.</a:documentation>
         <value>Blown_Bottle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Blown Bottle, Program #76.</a:documentation>
         <value>Shakuhachi</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Shakuhachi, Program #77.</a:documentation>
         <value>Whistle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Whistle, Program #78.</a:documentation>
         <value>Ocarina</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Ocarina, Program #79.</a:documentation>
         <value>Lead_1_square</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Lead 1 (square), Program #80.</a:documentation>
         <value>Lead_2_sawtooth</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Lead 2 (sawtooth), Program #81.</a:documentation>
         <value>Lead_3_calliope</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Lead 3 (calliope), Program #82.</a:documentation>
         <value>Lead_4_chiff</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Lead 4 (chiff), Program #83.</a:documentation>
         <value>Lead_5_charang</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Lead 5 (charang), Program #84.</a:documentation>
         <value>Lead_6_voice</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Lead 6 (voice), Program #85.</a:documentation>
         <value>Lead_7_fifths</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Lead 7 (fifths), Program #86.</a:documentation>
         <value>Lead_8_bass_and_lead</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Lead 8 (bass + lead), Program #87.</a:documentation>
         <value>Pad_1_new_age</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pad 1 (new age), Program #88.</a:documentation>
         <value>Pad_2_warm</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pad 2 (warm), Program #89.</a:documentation>
         <value>Pad_3_polysynth</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pad 3 (polysynth), Program #90.</a:documentation>
         <value>Pad_4_choir</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pad 4 (choir), Program #91.</a:documentation>
         <value>Pad_5_bowed</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pad 5 (bowed), Program #92.</a:documentation>
         <value>Pad_6_metallic</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pad 6 (metallic), Program #93.</a:documentation>
         <value>Pad_7_halo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pad 7 (halo), Program #94.</a:documentation>
         <value>Pad_8_sweep</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pad 8 (sweep), Program #95.</a:documentation>
         <value>FX_1_rain</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">FX 1 (rain), Program #96.</a:documentation>
         <value>FX_2_soundtrack</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">FX 2 (soundtrack), Program #97.</a:documentation>
         <value>FX_3_crystal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">FX 3 (crystal), Program #98.</a:documentation>
         <value>FX_4_atmosphere</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">FX 4 (atmosphere), Program #99.</a:documentation>
         <value>FX_5_brightness</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">FX 5 (brightness), Program #100.</a:documentation>
         <value>FX_6_goblins</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">FX 6 (goblins), Program #101.</a:documentation>
         <value>FX_7_echoes</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">FX 7 (echoes), Program #102.</a:documentation>
         <value>FX_8_sci-fi</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">FX 8 (sci-fi), Program #103.</a:documentation>
         <value>Sitar</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sitar, Program #104.</a:documentation>
         <value>Banjo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Banjo, Program #105.</a:documentation>
         <value>Shamisen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Shamisen, Program #106.</a:documentation>
         <value>Koto</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Koto, Program #107.</a:documentation>
         <value>Kalimba</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Kalimba, Program #108.</a:documentation>
         <value>Bag_pipe</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Bag pipe, Program #109.</a:documentation>
         <value>Fiddle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Fiddle, Program #110.</a:documentation>
         <value>Shanai</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Shanai, Program #111.</a:documentation>
         <value>Tinkle_Bell</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tinkle Bell, Program #112.</a:documentation>
         <value>Agogo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Agogo, Program #113.</a:documentation>
         <value>Steel_Drums</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Steel Drums, Program #114.</a:documentation>
         <value>Woodblock</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Woodblock, Program #115.</a:documentation>
         <value>Taiko_Drum</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Taiko Drum, Program #116.</a:documentation>
         <value>Melodic_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Melodic Tom, Program #117.</a:documentation>
         <value>Synth_Drum</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Synth Drum, Program #118.</a:documentation>
         <value>Reverse_Cymbal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reverse Cymbal, Program #119.</a:documentation>
         <value>Guitar_Fret_Noise</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Guitar Fret Noise, Program #120.</a:documentation>
         <value>Breath_Noise</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Breath Noise, Program #121.</a:documentation>
         <value>Seashore</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Seashore, Program #122.</a:documentation>
         <value>Bird_Tweet</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Bird Tweet, Program #123.</a:documentation>
         <value>Telephone_Ring</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Telephone Ring, Program #124.</a:documentation>
         <value>Helicopter</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Helicopter, Program #125.</a:documentation>
         <value>Applause</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Applause, Program #126.</a:documentation>
         <value>Gunshot</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Gunshot, Program #127.</a:documentation>
         <value>Acoustic_Bass_Drum</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Acoustic Bass Drum, Key #35.</a:documentation>
         <value>Bass_Drum_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Bass Drum 1, Key #36.</a:documentation>
         <value>Side_Stick</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Side Stick, Key #37.</a:documentation>
         <value>Acoustic_Snare</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Acoustic Snare, Key #38.</a:documentation>
         <value>Hand_Clap</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hand Clap, Key #39.</a:documentation>
         <value>Electric_Snare</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Electric Snare, Key #40.</a:documentation>
         <value>Low_Floor_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Low Floor Tom, Key #41.</a:documentation>
         <value>Closed_Hi_Hat</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Closed Hi Hat, Key #42.</a:documentation>
         <value>High_Floor_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">High Floor Tom, Key #43.</a:documentation>
         <value>Pedal_Hi-Hat</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pedal Hi-Hat, Key #44.</a:documentation>
         <value>Low_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Low Tom, Key #45.</a:documentation>
         <value>Open_Hi-Hat</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Open Hi-Hat, Key #46.</a:documentation>
         <value>Low-Mid_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Low-Mid Tom, Key #47.</a:documentation>
         <value>Hi-Mid_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hi-Mid Tom, Key #48.</a:documentation>
         <value>Crash_Cymbal_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Crash Cymbal 1, Key #49.</a:documentation>
         <value>High_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">High Tom, Key #50.</a:documentation>
         <value>Ride_Cymbal_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Ride Cymbal 1, Key #51.</a:documentation>
         <value>Chinese_Cymbal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Chinese Cymbal, Key #52.</a:documentation>
         <value>Ride_Bell</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Ride Bell, Key #53.</a:documentation>
         <value>Tambourine</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tambourine, Key #54.</a:documentation>
         <value>Splash_Cymbal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Splash Cymbal, Key #55.</a:documentation>
         <value>Cowbell</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Cowbell, Key #56.</a:documentation>
         <value>Crash_Cymbal_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Crash Cymbal 2, Key #57.</a:documentation>
         <value>Vibraslap</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Vibraslap, Key #58.</a:documentation>
         <value>Ride_Cymbal_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Ride Cymbal 2, Key #59.</a:documentation>
         <value>Hi_Bongo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hi Bongo, Key #60.</a:documentation>
         <value>Low_Bongo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Low Bongo, Key #61.</a:documentation>
         <value>Mute_Hi_Conga</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Mute Hi Conga, Key #62.</a:documentation>
         <value>Open_Hi_Conga</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Open Hi Conga, Key #63.</a:documentation>
         <value>Low_Conga</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Low Conga, Key #64.</a:documentation>
         <value>High_Timbale</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">High Timbale, Key #65.</a:documentation>
         <value>Low_Timbale</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Low Timbale, Key #66.</a:documentation>
         <value>High_Agogo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">High Agogo, Key #67.</a:documentation>
         <value>Low_Agogo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Low Agogo, Key #68.</a:documentation>
         <value>Cabasa</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Cabasa, Key #69.</a:documentation>
         <value>Maracas</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Maracas, Key #70.</a:documentation>
         <value>Short_Whistle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Short Whistle, Key #71.</a:documentation>
         <value>Long_Whistle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Long Whistle, Key #72.</a:documentation>
         <value>Short_Guiro</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Short Guiro, Key #73.</a:documentation>
         <value>Long_Guiro</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Long Guiro, Key #74.</a:documentation>
         <value>Claves</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Claves, Key #75.</a:documentation>
         <value>Hi_Wood_Block</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hi Wood Block, Key #76.</a:documentation>
         <value>Low_Wood_Block</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Low Wood Block, Key #77.</a:documentation>
         <value>Mute_Cuica</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Mute Cuica, Key #78.</a:documentation>
         <value>Open_Cuica</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Open Cuica, Key #79.</a:documentation>
         <value>Mute_Triangle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Mute Triangle, Key #80.</a:documentation>
         <value>Open_Triangle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Open Triangle, Key #81.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.MIDIVALUE">
      <data type="token">
         <param name="pattern">0|([1-9]|[1-9][0-9]|1([0-1][0-9]|2[0-7]))o?|128o</param>
      </data>
   </define>
   <define name="mei_data.MIDIVALUE_NAME">
      <choice>
         <ref name="mei_data.MIDIVALUE"/>
         <ref name="mei_data.NCNAME"/>
      </choice>
   </define>
   <define name="mei_data.MIDIVALUE_PAN">
      <choice>
         <ref name="mei_data.MIDIVALUE"/>
         <ref name="mei_data.PERCENT.LIMITED.SIGNED"/>
      </choice>
   </define>
   <define name="mei_data.MIDIVALUE_PERCENT">
      <choice>
         <ref name="mei_data.MIDIVALUE"/>
         <ref name="mei_data.PERCENT.LIMITED"/>
      </choice>
   </define>
   <define name="mei_data.NCNAME">
      <data type="NCName"/>
   </define>
   <define name="mei_data.OCTAVE">
      <data type="nonNegativeInteger">
         <param name="maxInclusive">9</param>
      </data>
   </define>
   <define name="mei_data.OCTAVE.DIS">
      <data type="positiveInteger">
         <param name="pattern">8|15|22</param>
      </data>
   </define>
   <define name="mei_data.PEDALSTYLE">
      <choice>
         <value>line</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Continuous line with start and end positions rendered by vertical bars and bounces shown by upward-pointing "blips".</a:documentation>
         <value>pedline</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pedal down and half pedal rendered with "Ped." followed by a line with end position rendered by vertical bars and bounces shown by upward-pointing "blips".</a:documentation>
         <value>pedstar</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pedal down and half pedal rendered with "Ped.", pedal up rendered by "*", pedal "bounce" rendered with "* Ped.".</a:documentation>
         <value>altpedstar</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pedal up and down indications same as with "pedstar", but bounce is rendered with "Ped." only.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.PERCENT">
      <data type="token">
         <param name="pattern">[0-9]+(\.[0-9]*)?%</param>
      </data>
   </define>
   <define name="mei_data.PERCENT.LIMITED">
      <data type="token">
         <param name="pattern">(([0-9]|[1-9][0-9])(\.[0-9]*)?|100(\.0*)?)%</param>
      </data>
   </define>
   <define name="mei_data.PERCENT.LIMITED.SIGNED">
      <data type="token">
         <param name="pattern">(\+|-)?(([0-9]|[1-9][0-9])(\.[0-9]*)?|100(\.0*)?)%</param>
      </data>
   </define>
   <define name="mei_data.PGFUNC">
      <choice>
         <value>all</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Header or footer for all pages, including the first and the last page, unless a page header or footer for the first or the last page is provided.</a:documentation>
         <value>first</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Header or footer for the first page only.</a:documentation>
         <value>last</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Header or footer for the last page only.</a:documentation>
         <value>alt1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The first of an alternating pattern of headers or footers.</a:documentation>
         <value>alt2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The second of an alternating pattern of headers or footers.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.PITCHNAME">
      <data type="token">
         <param name="pattern">[a-g]</param>
      </data>
   </define>
   <define name="mei_data.PITCHNAME.GESTURAL">
      <data type="token">
         <param name="pattern">[a-g]|none</param>
      </data>
   </define>
   <define name="mei_data.STAFFREL">
      <choice>
         <ref name="mei_data.STAFFREL.basic"/>
         <ref name="mei_data.STAFFREL.extended"/>
      </choice>
   </define>
   <define name="mei_data.STAFFREL.basic">
      <choice>
         <value>above</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Above the staff.</a:documentation>
         <value>below</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Below the staff.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.STAFFREL.extended">
      <choice>
         <value>between</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Between staves.</a:documentation>
         <value>within</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Within/on the staff.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.STEMDIRECTION">
      <choice>
         <ref name="mei_data.STEMDIRECTION.basic"/>
         <ref name="mei_data.STEMDIRECTION.extended"/>
      </choice>
   </define>
   <define name="mei_data.STEMDIRECTION.basic">
      <choice>
         <value>up</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stem points upwards.</a:documentation>
         <value>down</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stem points downwards.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.STEMDIRECTION.extended">
      <choice>
         <value>left</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stem points left.</a:documentation>
         <value>right</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stem points right.</a:documentation>
         <value>ne</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stem points up and right.</a:documentation>
         <value>se</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stem points down and right.</a:documentation>
         <value>nw</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stem points up and left.</a:documentation>
         <value>sw</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stem points down and left.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.STEMMODIFIER">
      <choice>
         <value>none</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">No modifications to stem.</a:documentation>
         <value>1slash</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">1 slash through stem.</a:documentation>
         <value>2slash</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">2 slashes through stem.</a:documentation>
         <value>3slash</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">3 slashes through stem.</a:documentation>
         <value>4slash</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">4 slashes through stem.</a:documentation>
         <value>5slash</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">5 slashes through stem.</a:documentation>
         <value>6slash</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">6 slashes through stem.</a:documentation>
         <value>sprech</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">X placed on stem.</a:documentation>
         <value>z</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Z placed on stem.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.STRINGNUMBER">
      <data type="positiveInteger"/>
   </define>
   <define name="mei_data.TEMPERAMENT">
      <choice>
         <value>equal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Equal or 12-tone temperament.</a:documentation>
         <value>just</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Just intonation.</a:documentation>
         <value>mean</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Meantone intonation.</a:documentation>
         <value>pythagorean</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pythagorean tuning.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.TEMPOVALUE">
      <data type="decimal"/>
   </define>
   <define name="mei_data.TEXTRENDITIONLIST">
      <choice>
         <value>quote</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Surrounded by single quotes.</a:documentation>
         <value>quotedbl</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Surrounded by double quotes.</a:documentation>
         <value>italic</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Italicized (slanted to right).</a:documentation>
         <value>oblique</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Oblique (slanted to left).</a:documentation>
         <value>smcaps</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Small capitals.</a:documentation>
         <value>bold</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Relative font weight.</a:documentation>
         <value>bolder</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Relative font weight.</a:documentation>
         <value>lighter</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Relative font weight.</a:documentation>
         <value>box</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Enclosed in box.</a:documentation>
         <value>circle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Enclosed in ellipse/circle.</a:documentation>
         <value>dbox</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Enclosed in diamond.</a:documentation>
         <value>tbox</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Enclosed in triangle.</a:documentation>
         <value>bslash</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Struck through by '\' (back slash).</a:documentation>
         <value>fslash</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Struck through by '/' (forward slash).</a:documentation>
         <value>line-through</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Struck through by '-'; may be qualified to indicate multiple parallel lines, e.g., line-through(2).</a:documentation>
         <value>none</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Not rendered, invisible.</a:documentation>
         <value>overline</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Line above the text; may be qualified to indicate multiple parallel lines, e.g., overline(3).</a:documentation>
         <value>overstrike</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Use for deleted text fully or partially obscured by other text (such as 'XXXXX') or musical symbols (such as notes, rests, etc.).</a:documentation>
         <value>strike</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Struck through by '-'; equivalent to line-through; may be qualified to indicate multiple parallel lines, e.g., strike(3).</a:documentation>
         <value>sub</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Subscript.</a:documentation>
         <value>sup</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Superscript.</a:documentation>
         <value>superimpose</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Use for added text or musical symbols that fully or partially obscure text from an earlier writing stage.</a:documentation>
         <value>underline</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Underlined; may be qualified to indicate multiple parallel lines, e.g., underline(2).</a:documentation>
         <value>x-through</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Crossed-out; equivalent to 'bslash' (\) plus 'fslash' (/); that is, a hand-written 'X'; may be qualified to indicate multiple parallel lines, e.g., x-through(2).</a:documentation>
         <value>ltr</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Left-to-right (BIDI embed).</a:documentation>
         <value>rtl</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Right-to-left (BIDI embed).</a:documentation>
         <value>lro</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Left-to-right (BIDI override).</a:documentation>
         <value>rlo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Right-to-left (BIDI override).</a:documentation>
      </choice>
   </define>
   <define name="mei_data.TEXTRENDITIONPAR">
      <data type="string">
         <param name="pattern">(underline|overline|line-through|strike|x-through)\(\d+\)</param>
      </data>
   </define>
   <define name="mei_data.TEXTRENDITION">
      <choice>
         <ref name="mei_data.TEXTRENDITIONLIST"/>
         <ref name="mei_data.TEXTRENDITIONPAR"/>
      </choice>
   </define>
   <define name="mei_data.URI">
      <data type="anyURI"/>
   </define>
   <define name="mei_data.VERTICALALIGNMENT">
      <choice>
         <value>top</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Top aligned.</a:documentation>
         <value>middle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Middle aligned.</a:documentation>
         <value>bottom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Bottom aligned.</a:documentation>
         <value>baseline</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Baseline aligned.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.WORD">
      <data type="token">
         <param name="pattern">(\p{L}|\p{N}|\p{P}|\p{S})*</param>
      </data>
   </define>
   <define name="mei_data.DURATION.cmn">
      <choice>
         <value>long</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Quadruple whole note.</a:documentation>
         <value>breve</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Double whole note.</a:documentation>
         <value>1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Whole note.</a:documentation>
         <value>2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Half note.</a:documentation>
         <value>4</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Quarter note.</a:documentation>
         <value>8</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">8th note.</a:documentation>
         <value>16</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">16th note.</a:documentation>
         <value>32</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">32nd note.</a:documentation>
         <value>64</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">64th note.</a:documentation>
         <value>128</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">128th note.</a:documentation>
         <value>256</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">256th note.</a:documentation>
         <value>512</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">512th note.</a:documentation>
         <value>1024</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">1024th note.</a:documentation>
         <value>2048</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">2048th note.</a:documentation>
      </choice>
   </define>
   <define name="mei_macro.availabilityPart">
      <choice>
         <group>
            <zeroOrMore>
               <ref name="mei_model.headLike"/>
            </zeroOrMore>
            <zeroOrMore>
               <choice>
                  <ref name="mei_model.addressLike"/>
                  <ref name="mei_model.dateLike"/>
                  <ref name="mei_model.identifierLike"/>
               </choice>
            </zeroOrMore>
         </group>
         <text/>
      </choice>
   </define>
   <define name="mei_macro.metaLike.page">
      <optional>
         <ref name="mei_pgHead"/>
      </optional>
      <optional>
         <ref name="mei_pgFoot"/>
      </optional>
   </define>
   <define name="mei_macro.musicPart">
      <optional>
         <choice>
            <ref name="mei_body"/>
         </choice>
      </optional>
   </define>
   <define name="mei_macro.titlePart">
      <zeroOrMore>
         <choice>
            <ref name="mei_model.addressLike"/>
            <ref name="mei_model.addressPart"/>
            <ref name="mei_model.annotLike"/>
            <ref name="mei_model.biblLike"/>
            <ref name="mei_model.dateLike"/>
            <ref name="mei_model.editorialLike"/>
            <ref name="mei_model.identifierLike"/>
            <ref name="mei_model.lbLike"/>
            <ref name="mei_model.measurementLike"/>
            <ref name="mei_model.nameLike"/>
            <ref name="mei_model.nameLike.label"/>
            <ref name="mei_model.pbLike"/>
            <ref name="mei_model.rendLike"/>
            <ref name="mei_symbol"/>
         </choice>
      </zeroOrMore>
   </define>
   <define name="mei_att.repeatMark.anl.attributes">
      <empty/>
   </define>
   <define name="mei_att.arpeg.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.startId.attributes"/>
      <ref name="mei_att.arpeg.log.attribute.order"/>
   </define>
   <define name="mei_att.arpeg.log.attribute.order">
      <optional>
         <attribute name="order">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes the direction in which an arpeggio is to be performed.</a:documentation>
            <choice>
               <value>up</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Lowest to highest pitch.</a:documentation>
               <value>down</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Highest to lowest pitch.</a:documentation>
               <value>nonarp</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Non-arpeggiated style (usually rendered with a preceding bracket instead of a wavy line).</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.beam.log.attributes">
      <ref name="mei_att.event.attributes"/>
   </define>
   <define name="mei_att.beamSecondary.attributes">
      <ref name="mei_att.beamSecondary.attribute.breaksec"/>
   </define>
   <define name="mei_att.beamSecondary.attribute.breaksec">
      <optional>
         <attribute name="breaksec">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Presence of this attribute indicates that the secondary beam should be broken following this note/chord. The value of the attribute records the number of beams which should remain unbroken.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.beatRpt.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.beatRpt.log.attribute.beatdef"/>
   </define>
   <define name="mei_att.beatRpt.log.attribute.beatdef">
      <optional>
         <attribute name="beatdef">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the performed duration represented by the beatRpt symbol; expressed in time signature denominator units.</a:documentation>
            <data type="decimal">
               <param name="pattern">\d+(\.\d+)?</param>
            </data>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.breath.log.attributes">
      <ref name="mei_att.layerIdent.attributes"/>
      <ref name="mei_att.staffIdent.attributes"/>
      <ref name="mei_att.startId.attributes"/>
      <ref name="mei_att.timestamp.log.attributes"/>
   </define>
   <define name="mei_att.bTrem.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.augmentDots.attributes"/>
      <ref name="mei_att.duration.log.attributes"/>
      <ref name="mei_att.numbered.attributes"/>
      <ref name="mei_att.tremForm.attributes"/>
   </define>
   <define name="mei_att.chord.log.cmn.attributes">
      <ref name="mei_att.graced.attributes"/>
   </define>
   <define name="mei_att.chord.vis.cmn.attributes">
      <ref name="mei_att.beamSecondary.attributes"/>
   </define>
   <define name="mei_att.cutout.attributes">
      <ref name="mei_att.cutout.attribute.cutout"/>
   </define>
   <define name="mei_att.cutout.attribute.cutout">
      <optional>
         <attribute name="cutout">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">"Cut-out" style.</a:documentation>
            <choice>
               <value>cutout</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The staff lines should not be drawn.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.expandable.attributes">
      <ref name="mei_att.expandable.attribute.expand"/>
   </define>
   <define name="mei_att.expandable.attribute.expand">
      <optional>
         <attribute name="expand">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates whether to render a repeat symbol or the source material to which it refers. A value of 'true' renders the source material, while 'false' displays the repeat symbol.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.fermata.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
   </define>
   <define name="mei_att.fTrem.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.augmentDots.attributes"/>
      <ref name="mei_att.duration.log.attributes"/>
      <ref name="mei_att.tremForm.attributes"/>
   </define>
   <define name="mei_att.gliss.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
   </define>
   <define name="mei_att.graced.attributes">
      <ref name="mei_att.graced.attribute.grace"/>
      <ref name="mei_att.graced.attribute.grace.time"/>
   </define>
   <define name="mei_att.graced.attribute.grace">
      <optional>
         <attribute name="grace">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Marks a note or chord as a "grace" (without a definite performed duration) and records from which other note/chord it should "steal" time.</a:documentation>
            <ref name="mei_data.GRACE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.graced.attribute.grace.time">
      <optional>
         <attribute name="grace.time">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the amount of time to be "stolen" from a non-grace note/chord.</a:documentation>
            <ref name="mei_data.PERCENT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.graceGrp.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.graced.attributes"/>
      <ref name="mei_att.graceGrp.log.attribute.attach"/>
   </define>
   <define name="mei_att.graceGrp.log.attribute.attach">
      <optional>
         <attribute name="attach">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records whether the grace note group is attached to the following event or to the preceding one. The usual name for the latter is "Nachschlag".</a:documentation>
            <choice>
               <value>pre</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Attached to the preceding event.</a:documentation>
               <value>post</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Attached to the following event.</a:documentation>
               <value>unknown</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Attachment is ambiguous.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.hairpin.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
      <ref name="mei_att.hairpin.log.attribute.form"/>
      <ref name="mei_att.hairpin.log.attribute.niente"/>
   </define>
   <define name="mei_att.hairpin.log.attribute.form">
      <attribute name="form">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures the visual rendition and function of the hairpin; that is, whether it indicates an increase or a decrease in volume.</a:documentation>
         <choice>
            <value>cres</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Crescendo; i.e., louder.</a:documentation>
            <value>dim</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Diminuendo; i.e., softer.</a:documentation>
         </choice>
      </attribute>
   </define>
   <define name="mei_att.hairpin.log.attribute.niente">
      <optional>
         <attribute name="niente">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates that the hairpin starts from or ends in silence. Often rendered as a small circle attached to the closed end of the hairpin. See Gould, p. 108.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.halfmRpt.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.duration.log.attributes"/>
   </define>
   <define name="mei_att.harpPedal.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.harpPedal.log.attribute.c"/>
      <ref name="mei_att.harpPedal.log.attribute.d"/>
      <ref name="mei_att.harpPedal.log.attribute.e"/>
      <ref name="mei_att.harpPedal.log.attribute.f"/>
      <ref name="mei_att.harpPedal.log.attribute.g"/>
      <ref name="mei_att.harpPedal.log.attribute.a"/>
      <ref name="mei_att.harpPedal.log.attribute.b"/>
   </define>
   <define name="mei_att.harpPedal.log.attribute.c">
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     name="c"
                     a:defaultValue="n">
            <a:documentation>Indicates the pedal setting for the harp’s C strings.</a:documentation>
            <choice>
               <value>f</value>
               <a:documentation>Flat.</a:documentation>
               <value>n</value>
               <a:documentation>Natural.</a:documentation>
               <value>s</value>
               <a:documentation>Sharp.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.harpPedal.log.attribute.d">
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     name="d"
                     a:defaultValue="n">
            <a:documentation>Indicates the pedal setting for the harp’s D strings.</a:documentation>
            <choice>
               <value>f</value>
               <a:documentation>Flat.</a:documentation>
               <value>n</value>
               <a:documentation>Natural.</a:documentation>
               <value>s</value>
               <a:documentation>Sharp.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.harpPedal.log.attribute.e">
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     name="e"
                     a:defaultValue="n">
            <a:documentation>Indicates the pedal setting for the harp’s E strings.</a:documentation>
            <choice>
               <value>f</value>
               <a:documentation>Flat.</a:documentation>
               <value>n</value>
               <a:documentation>Natural.</a:documentation>
               <value>s</value>
               <a:documentation>Sharp.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.harpPedal.log.attribute.f">
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     name="f"
                     a:defaultValue="n">
            <a:documentation>Indicates the pedal setting for the harp’s F strings.</a:documentation>
            <choice>
               <value>f</value>
               <a:documentation>Flat.</a:documentation>
               <value>n</value>
               <a:documentation>Natural.</a:documentation>
               <value>s</value>
               <a:documentation>Sharp.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.harpPedal.log.attribute.g">
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     name="g"
                     a:defaultValue="n">
            <a:documentation>Indicates the pedal setting for the harp’s G strings.</a:documentation>
            <choice>
               <value>f</value>
               <a:documentation>Flat.</a:documentation>
               <value>n</value>
               <a:documentation>Natural.</a:documentation>
               <value>s</value>
               <a:documentation>Sharp.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.harpPedal.log.attribute.a">
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     name="a"
                     a:defaultValue="n">
            <a:documentation>Indicates the pedal setting for the harp’s A strings.</a:documentation>
            <choice>
               <value>f</value>
               <a:documentation>Flat.</a:documentation>
               <value>n</value>
               <a:documentation>Natural.</a:documentation>
               <value>s</value>
               <a:documentation>Sharp.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.harpPedal.log.attribute.b">
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     name="b"
                     a:defaultValue="n">
            <a:documentation>Indicates the pedal setting for the harp’s B strings.</a:documentation>
            <choice>
               <value>f</value>
               <a:documentation>Flat.</a:documentation>
               <value>n</value>
               <a:documentation>Natural.</a:documentation>
               <value>s</value>
               <a:documentation>Sharp.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lv.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
   </define>
   <define name="mei_att.measure.log.attributes">
      <ref name="mei_att.meterConformance.bar.attributes"/>
      <ref name="mei_att.measure.log.attribute.left"/>
      <ref name="mei_att.measure.log.attribute.right"/>
   </define>
   <define name="mei_att.measure.log.attribute.left">
      <optional>
         <attribute name="left">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the visual rendition of the left bar line. It is present here only for facilitation of translation from legacy encodings which use it. Usually, it can be safely ignored.</a:documentation>
            <ref name="mei_data.BARRENDITION"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.measure.log.attribute.right">
      <optional>
         <attribute name="right">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the function of the right bar line and is structurally important.</a:documentation>
            <ref name="mei_data.BARRENDITION"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.mRest.log.attributes">
      <ref name="mei_att.cue.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.event.attributes"/>
   </define>
   <define name="mei_att.mRpt.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.numbered.attributes"/>
   </define>
   <define name="mei_att.multiRest.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.numbered.attributes"/>
   </define>
   <define name="mei_att.multiRpt.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.numbered.attributes"/>
   </define>
   <define name="mei_att.note.log.cmn.attributes">
      <ref name="mei_att.graced.attributes"/>
   </define>
   <define name="mei_att.note.vis.cmn.attributes">
      <ref name="mei_att.beamSecondary.attributes"/>
   </define>
   <define name="mei_att.numbered.attributes">
      <ref name="mei_att.numbered.attribute.num"/>
   </define>
   <define name="mei_att.numbered.attribute.num">
      <optional>
         <attribute name="num">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(number) Records a number or count accompanying a notational feature.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.numberPlacement.attributes">
      <ref name="mei_att.numberPlacement.attribute.num.place"/>
      <ref name="mei_att.numberPlacement.attribute.num.visible"/>
   </define>
   <define name="mei_att.numberPlacement.attribute.num.place">
      <optional>
         <attribute name="num.place">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(number placement) States where the tuplet number will be placed in relation to the note heads.</a:documentation>
            <ref name="mei_data.STAFFREL.basic"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.numberPlacement.attribute.num.visible">
      <optional>
         <attribute name="num.visible">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Determines if the tuplet number is visible.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.octave.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.octaveDisplacement.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
      <ref name="mei_att.octave.log.attribute.coll"/>
   </define>
   <define name="mei_att.octave.log.attribute.coll">
      <optional>
         <attribute name="coll">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates whether the octave displacement should be performed simultaneously with the written notes, i.e., "coll' ottava". Unlike other octave signs which are indicated by broken lines, coll' ottava typically uses an unbroken line or a series of longer broken lines, ending with a short vertical stroke. See Read, p. 47-48.</a:documentation>
            <choice>
               <value>coll</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Coll' ottava (with the octave).</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pedal.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
      <ref name="mei_att.pedal.log.attribute.dir"/>
      <ref name="mei_att.pedal.log.attribute.func"/>
   </define>
   <define name="mei_att.pedal.log.attribute.dir">
      <attribute name="dir">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(direction) Records the position of the piano damper pedal.</a:documentation>
         <choice>
            <value>down</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Depress the pedal.</a:documentation>
            <value>up</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Release the pedal.</a:documentation>
            <value>half</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Half pedal.</a:documentation>
            <value>bounce</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Release then immediately depress the pedal.</a:documentation>
         </choice>
      </attribute>
   </define>
   <define name="mei_att.pedal.log.attribute.func">
      <optional>
         <attribute name="func">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(function) Indicates the function of the depressed pedal, but not necessarily the text associated with its use. Use the <code xmlns="http://www.w3.org/1999/xhtml">&lt;dir&gt;</code> element for such text.
Suggested values include: 1] sustain; 2] soft; 3] sostenuto; 4] silent</a:documentation>
            <choice>
               <value>sustain</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The sustain pedal, also referred to as the "damper" pedal, allows the piano strings to vibrate sympathetically with the struck strings. It is the right-most and the most frequently used pedal on modern pianos.</a:documentation>
               <value>soft</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The soft pedal, sometimes called the "una corda", "piano", or "half-blow" pedal, reduces the volume and modifies the timbre of the piano. On the modern piano, it is the left-most pedal.</a:documentation>
               <value>sostenuto</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The sostenuto or tone-sustaining pedal allows notes already undamped to continue to ring while other notes are damped normally; that is, on their release by the fingers. This is usually the center pedal of the modern piano.</a:documentation>
               <value>silent</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The silent or practice pedal mutes the volume of the piano so that one may practice quietly. It is sometimes a replacement for the sostenuto pedal, especially on an upright or vertical instrument.</a:documentation>
               <data type="NMTOKEN"/>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.reh.log.attributes">
      <ref name="mei_att.staffIdent.attributes"/>
      <ref name="mei_att.startId.attributes"/>
      <ref name="mei_att.timestamp.log.attributes"/>
   </define>
   <define name="mei_att.rest.vis.cmn.attributes">
      <ref name="mei_att.beamSecondary.attributes"/>
   </define>
   <define name="mei_att.slur.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
   </define>
   <define name="mei_att.staffDef.log.cmn.attributes">
      <empty/>
   </define>
   <define name="mei_att.tie.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
   </define>
   <define name="mei_att.tremForm.attributes">
      <ref name="mei_att.tremForm.attribute.form"/>
   </define>
   <define name="mei_att.tremForm.attribute.form">
      <optional>
         <attribute name="form">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes the style of the tremolo.</a:documentation>
            <choice>
               <value>meas</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Measured tremolo.</a:documentation>
               <value>unmeas</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unmeasured tremolo.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tremMeasured.attributes">
      <ref name="mei_att.tremMeasured.attribute.unitdur"/>
   </define>
   <define name="mei_att.tremMeasured.attribute.unitdur">
      <optional>
         <attribute name="unitdur">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The performed duration of an individual note in a measured tremolo.</a:documentation>
            <ref name="mei_data.DURATION.cmn"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tuplet.log.attributes">
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.duration.ratio.attributes"/>
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
   </define>
   <define name="mei_model.controlEventLike.cmn">
      <choice>
         <ref name="mei_arpeg"/>
         <ref name="mei_breath"/>
         <ref name="mei_fermata"/>
         <ref name="mei_hairpin"/>
         <ref name="mei_harpPedal"/>
         <ref name="mei_lv"/>
         <ref name="mei_octave"/>
         <ref name="mei_pedal"/>
         <ref name="mei_reh"/>
         <ref name="mei_slur"/>
         <ref name="mei_tie"/>
         <ref name="mei_model.ornamentLike.cmn"/>
      </choice>
   </define>
   <define name="mei_model.eventLike.cmn">
      <choice>
         <ref name="mei_beam"/>
         <ref name="mei_beatRpt"/>
         <ref name="mei_bTrem"/>
         <ref name="mei_fTrem"/>
         <ref name="mei_graceGrp"/>
         <ref name="mei_halfmRpt"/>
         <ref name="mei_tuplet"/>
      </choice>
   </define>
   <define name="mei_model.eventLike.cmn_alternation">
      <choice>
         <ref name="mei_beam"/>
         <ref name="mei_beatRpt"/>
         <ref name="mei_bTrem"/>
         <ref name="mei_fTrem"/>
         <ref name="mei_graceGrp"/>
         <ref name="mei_halfmRpt"/>
         <ref name="mei_tuplet"/>
      </choice>
   </define>
   <define name="mei_model.eventLike.cmn_sequence">
      <ref name="mei_beam"/>
      <ref name="mei_beatRpt"/>
      <ref name="mei_bTrem"/>
      <ref name="mei_fTrem"/>
      <ref name="mei_graceGrp"/>
      <ref name="mei_halfmRpt"/>
      <ref name="mei_tuplet"/>
   </define>
   <define name="mei_model.eventLike.cmn_sequenceOptional">
      <optional>
         <ref name="mei_beam"/>
      </optional>
      <optional>
         <ref name="mei_beatRpt"/>
      </optional>
      <optional>
         <ref name="mei_bTrem"/>
      </optional>
      <optional>
         <ref name="mei_fTrem"/>
      </optional>
      <optional>
         <ref name="mei_graceGrp"/>
      </optional>
      <optional>
         <ref name="mei_halfmRpt"/>
      </optional>
      <optional>
         <ref name="mei_tuplet"/>
      </optional>
   </define>
   <define name="mei_model.eventLike.cmn_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_beam"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_beatRpt"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_bTrem"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_fTrem"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_graceGrp"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_halfmRpt"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_tuplet"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.eventLike.cmn_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_beam"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_beatRpt"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_bTrem"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_fTrem"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_graceGrp"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_halfmRpt"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_tuplet"/>
      </oneOrMore>
   </define>
   <define name="mei_model.eventLike.measureFilling">
      <choice>
         <ref name="mei_mRest"/>
         <ref name="mei_mRpt"/>
         <ref name="mei_multiRest"/>
         <ref name="mei_multiRpt"/>
      </choice>
   </define>
   <define name="mei_model.eventLike.measureFilling_alternation">
      <choice>
         <ref name="mei_mRest"/>
         <ref name="mei_mRpt"/>
         <ref name="mei_multiRest"/>
         <ref name="mei_multiRpt"/>
      </choice>
   </define>
   <define name="mei_model.eventLike.measureFilling_sequence">
      <ref name="mei_mRest"/>
      <ref name="mei_mRpt"/>
      <ref name="mei_multiRest"/>
      <ref name="mei_multiRpt"/>
   </define>
   <define name="mei_model.eventLike.measureFilling_sequenceOptional">
      <optional>
         <ref name="mei_mRest"/>
      </optional>
      <optional>
         <ref name="mei_mRpt"/>
      </optional>
      <optional>
         <ref name="mei_multiRest"/>
      </optional>
      <optional>
         <ref name="mei_multiRpt"/>
      </optional>
   </define>
   <define name="mei_model.eventLike.measureFilling_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_mRest"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_mRpt"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_multiRest"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_multiRpt"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.eventLike.measureFilling_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_mRest"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_mRpt"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_multiRest"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_multiRpt"/>
      </oneOrMore>
   </define>
   <define name="mei_model.layerPart.cmn">
      <choice>
         <ref name="mei_model.eventLike.cmn"/>
         <ref name="mei_model.eventLike.measureFilling"/>
      </choice>
   </define>
   <define name="mei_model.measureLike">
      <choice>
         <ref name="mei_measure"/>
      </choice>
   </define>
   <define name="mei_model.measureLike_alternation">
      <choice>
         <ref name="mei_measure"/>
      </choice>
   </define>
   <define name="mei_model.measureLike_sequence">
      <ref name="mei_measure"/>
   </define>
   <define name="mei_model.measureLike_sequenceOptional">
      <optional>
         <ref name="mei_measure"/>
      </optional>
   </define>
   <define name="mei_model.measureLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_measure"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.measureLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_measure"/>
      </oneOrMore>
   </define>
   <define name="mei_model.measurePart">
      <choice>
         <ref name="mei_model.controlEventLike.cmn"/>
         <ref name="mei_model.ossiaLike"/>
         <ref name="mei_model.midiLike"/>
         <ref name="mei_model.controlEventLike"/>
         <ref name="mei_model.staffLike"/>
      </choice>
   </define>
   <define name="mei_model.ossiaLike">
      <notAllowed/>
   </define>
   <define name="mei_model.sectionPart.cmn">
      <choice>
         <ref name="mei_model.measureLike"/>
      </choice>
   </define>
   <define name="mei_arpeg">
      <element name="arpeg">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(arpeggiation) Indicates that the notes of a chord are to be performed successively rather than simultaneously, usually from lowest to highest. Sometimes called a "roll".</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.arpeg.log.attributes"/>
         <ref name="mei_att.arpeg.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_beam">
      <element name="beam">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A container for a series of explicitly beamed events that begins and ends entirely within a measure.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.cmn"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-beam-When_not_copyof_beam_content-constraint-rule-5">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:beam[not(@copyof or @sameas)]">
               <sch:assert test="count(descendant::*[local-name()='note' or local-name()='rest' or               local-name()='chord' or local-name()='space']) &gt; 1">A beam that contains neither a copyof nor sameas attribute must have at least 2 note, rest, chord, or space
            descendants.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.beam.log.attributes"/>
         <ref name="mei_att.beam.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_beatRpt">
      <element name="beatRpt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(beat repeat) An indication that material on a preceding beat should be repeated.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.beatRpt.log.attributes"/>
         <ref name="mei_att.beatRpt.vis.attributes"/>
         <ref name="mei_att.plist.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_breath">
      <element name="breath">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(breath mark) An indication of a point at which the performer on an instrument requiring breath (including the voice) may breathe.</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-breath-breath_start-type_attributes_required-constraint-rule-6">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:breath">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.breath.log.attributes"/>
         <ref name="mei_att.breath.vis.attributes"/>
         <ref name="mei_att.breath.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_bTrem">
      <element name="bTrem">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(bowed tremolo) A rapid alternation on a single pitch or chord.</a:documentation>
         <choice>
            <ref name="mei_chord"/>
            <ref name="mei_note"/>
         </choice>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bTrem.log.attributes"/>
         <ref name="mei_att.bTrem.vis.attributes"/>
         <ref name="mei_att.bTrem.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_fermata">
      <element name="fermata">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">An indication placed over a note or rest to indicate that it should be held longer than its written value. May also occur over a bar line to indicate the end of a phrase or section. Sometimes called a 'hold' or 'pause'.</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-fermata-fermata_start-type_attributes_required-constraint-rule-7">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       context="mei:fermata">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of
                                    the attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-fermata-fermata_start-type_attributes_required-constraint-rule-8">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:fermata">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.fermata.log.attributes"/>
         <ref name="mei_att.fermata.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_fTrem">
      <element name="fTrem">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(fingered tremolo) A rapid alternation between a pair of notes (or chords or perhaps between a note and a chord) that are (usually) farther apart than a major second.</a:documentation>
         <choice>
            <group>
               <ref name="mei_chord"/>
               <optional>
                  <ref name="mei_clef"/>
               </optional>
               <choice>
                  <ref name="mei_chord"/>
                  <ref name="mei_note"/>
               </choice>
            </group>
            <group>
               <ref name="mei_note"/>
               <optional>
                  <ref name="mei_clef"/>
               </optional>
               <choice>
                  <ref name="mei_chord"/>
                  <ref name="mei_note"/>
               </choice>
            </group>
         </choice>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.fTrem.log.attributes"/>
         <ref name="mei_att.fTrem.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_gliss">
      <element name="gliss">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(glissando) A continuous or sliding movement from one pitch to another, usually indicated by a straight or wavy line.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-gliss-gliss_start-_and_end-type_attributes_required-constraint-rule-9">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:gliss">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
               <sch:assert test="@dur or @dur.ges or @endid or @tstamp2">Must have one of the attributes:
            dur, dur.ges, endid, or tstamp2.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.gliss.log.attributes"/>
         <ref name="mei_att.gliss.vis.attributes"/>
         <ref name="mei_att.gliss.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_graceGrp">
      <element name="graceGrp">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(grace group) A container for a sequence of grace notes.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.cmn"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-graceGrp-When_not_copyof_graceGrp_content-constraint-rule-10">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:graceGrp[not(@copyof)]">
               <sch:assert test="count(descendant::*[local-name()='note' or local-name()='rest' or               local-name()='chord' or local-name()='space']) &gt; 0">A graceGrp without a copyof attribute must have at least 1 note, rest, chord, or space
            descendants.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-graceGrp-When_graced-constraint-rule-11">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:graceGrp[@grace]">
               <sch:assert test="not(descendant::mei:*[@grace])">The grace attribute is not allowed on
            descendants of a graceGrp with a grace attribute.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.graceGrp.log.attributes"/>
         <ref name="mei_att.graceGrp.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_hairpin">
      <element name="hairpin">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates continuous dynamics expressed on the score as wedge-shaped graphics, e.g., &lt; and &gt;.</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-hairpin-hairpin_start-_and_end-type_attributes_required-constraint-rule-12">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:hairpin">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
               <sch:assert test="@dur or @dur.ges or @endid or @tstamp2">Must have one of the attributes:
            dur, dur.ges, endid, or tstamp2.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.hairpin.log.attributes"/>
         <ref name="mei_att.hairpin.vis.attributes"/>
         <ref name="mei_att.hairpin.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_halfmRpt">
      <element name="halfmRpt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(half-measure repeat) A half-measure repeat in any meter.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.halfmRpt.log.attributes"/>
         <ref name="mei_att.halfmRpt.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_harpPedal">
      <element name="harpPedal">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(harp pedal) Harp pedal diagram.</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-harpPedal-harpPedal_start-type_attributes_required-constraint-rule-13">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:harpPedal">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.harpPedal.log.attributes"/>
         <ref name="mei_att.harpPedal.vis.attributes"/>
         <ref name="mei_att.harpPedal.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_lv">
      <element name="lv">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(laissez vibrer) A "tie-like" indication that a note should ring beyond its written duration.</a:documentation>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-lv-lv_start-_and_end-type_attributes_required-constraint-rule-14">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:lv">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-lv-lv_containing_curve-constraint-rule-15">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:lv[mei:curve[@bezier or @bulge or @curvedir or @lform or @lwidth or @ho or @startho or @endho or @to or @startto or @endto or @vo or @startvo or              @endvo or @x or @y or @x2 or @y2]]">
               <sch:assert test="not(@bezier or @bulge or @curvedir or @lform or @lwidth or @ho or @startho or @endho or @to or @startto or @endto or @vo or @startvo or @endvo or @x or @y or @x2 or @y2)"
                            role="warning">The visual attributes of the lv element (@bezier, @bulge, @curvedir,
            @lform, @lwidth, @ho, @startho, @endho, @to, @startto, @endto, @vo, @startvo, @endvo,
            @x, @y, @x2, and @y2) will be overridden by visual attributes of the contained curve
            elements.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lv.log.attributes"/>
         <ref name="mei_att.lv.vis.attributes"/>
         <ref name="mei_att.lv.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_measure">
      <element name="measure">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unit of musical time consisting of a fixed number of note values of a given type, as determined by the prevailing meter, and delimited in musical notation by bar lines.</a:documentation>
         <optional>
            <ref name="mei_mNum"/>
         </optional>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.measurePart"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.relationLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.measure.ges.attributes"/>
         <ref name="mei_att.measure.log.attributes"/>
         <ref name="mei_att.nNumberLike.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_mNum">
      <element name="mNum">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(measure number) Designation, name, or label for a measure, often but not always consisting of digits. Use this element when the <code xmlns="http://www.w3.org/1999/xhtml">@n</code> attribute on <code xmlns="http://www.w3.org/1999/xhtml">&lt;measure&gt;</code> does not adequately capture the appearance or placement of the measure number/label.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.lbLike"/>
               <ref name="mei_model.rendLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.mNum.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_mRest">
      <element name="mRest">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(measure rest) Complete measure rest in any meter. </a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.mRest.log.attributes"/>
         <ref name="mei_att.mRest.vis.attributes"/>
         <ref name="mei_att.mRest.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_mRpt">
      <element name="mRpt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(measure repeat) An indication that the previous measure should be repeated.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.mRpt.log.attributes"/>
         <ref name="mei_att.mRpt.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_multiRest">
      <element name="multiRest">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(multiple rest) Multiple measures of rest compressed into a single symbol, frequently found in performer parts.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.multiRest.log.attributes"/>
         <ref name="mei_att.multiRest.vis.attributes"/>
         <ref name="mei_att.multiRest.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_multiRpt">
      <element name="multiRpt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(multiple repeat) Multiple repeated measures.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.multiRpt.log.attributes"/>
         <ref name="mei_att.multiRpt.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_octave">
      <element name="octave">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">An indication that a passage should be performed one or more octaves above or below its written pitch.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-octave-octave_start-_and_end-type_attributes_required-constraint-rule-16">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:octave">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
               <sch:assert test="@dur or @dur.ges or @endid or @tstamp2">Must have one of the attributes:
            dur, dur.ges, endid, or tstamp2.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.octave.log.attributes"/>
         <ref name="mei_att.octave.vis.attributes"/>
         <ref name="mei_att.octave.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_pedal">
      <element name="pedal">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Piano pedal mark.</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-pedal-pedal_start-type_attributes_required-constraint-rule-17">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:pedal">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.pedal.log.attributes"/>
         <ref name="mei_att.pedal.vis.attributes"/>
         <ref name="mei_att.pedal.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_reh">
      <element name="reh">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(rehearsal mark) In an orchestral score and its corresponding parts, a mark indicating a convenient point from which to resume rehearsal after a break.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.lbLike"/>
               <ref name="mei_model.rendLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.reh.log.attributes"/>
         <ref name="mei_att.reh.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_repeatMark">
      <element name="repeatMark">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(repetition mark) An instruction expressed as a combination of text and symbols – segno and coda – typically above, below, or between staves, but not on the staff.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-repeatMark-repeatMark_start-type_attributes_required-constraint-rule-18">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:repeatMark">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-repeatMark-repeatMark_with_glyph_has_to_be_empty-constraint-rule-19">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:repeatMark[@glyph.num or @glyph.name]">
               <sch:assert test="not(element()) and not(text())">When @glyph.name or @glyph.num is present, repeatMark must not have content.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.repeatMark.log.attributes"/>
         <ref name="mei_att.repeatMark.vis.attributes"/>
         <ref name="mei_att.repeatMark.ges.attributes"/>
         <ref name="mei_att.repeatMark.anl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_slur">
      <element name="slur">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indication of 1) a "unified melodic idea" or 2) performance technique.</a:documentation>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-slur-slur_start-_and_end-type_attributes_required-constraint-rule-20">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:slur">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
               <sch:assert test="@dur or @dur.ges or @endid or @tstamp2">Must have one of the attributes:
            dur, dur.ges, endid, or tstamp2.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-slur-slur_containing_curve-constraint-rule-21">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:slur[mei:curve[@bezier or @bulge or @curvedir or @lform or @lwidth or @ho or @startho or @endho or @to or @startto or @endto or @vo or @startvo or @endvo or @x or @y or @x2 or @y2]]">
               <sch:assert test="not(@bezier or @bulge or @curvedir or @lform or @lwidth or @ho or @startho or @endho or @to or @startto or @endto or @vo or @startvo or @endvo or @x or @y or @x2 or @y2)"
                            role="warning">The visual attributes of the slur (@bezier, @bulge, @curvedir, @lform,
            @lwidth, @ho, @startho, @endho, @to, @startto, @endto, @vo, @startvo, @endvo, @x, @y,
            @x2, and @y2) will be overridden by visual attributes of the contained curve
            elements.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.slur.log.attributes"/>
         <ref name="mei_att.slur.vis.attributes"/>
         <ref name="mei_att.slur.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_tie">
      <element name="tie">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">An indication that two notes of the same pitch form a single note with their combined rhythmic values.</a:documentation>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-tie-tie_start-_and_end-type_attributes_required-constraint-rule-22">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:tie">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
               <sch:assert test="@dur or @dur.ges or @endid or @tstamp2">Must have one of the attributes:
            dur, dur.ges, endid, or tstamp2.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-tie-tie_containing_curve-constraint-rule-23">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:tie[mei:curve[@bezier or @bulge or @curvedir or @lform or @lwidth or @ho or @startho or @endho or @to or @startto or @endto or @vo or @startvo or @endvo or @x or @y or @x2 or @y2]]">
               <sch:assert test="not(@bezier or @bulge or @curvedir or @lform or @lwidth or @ho or @startho or @endho or @to or @startto or @endto or @vo or @startvo or @endvo or @x or @y or @x2 or @y2)"
                            role="warning">The visual attributes of the tie (@bezier, @bulge, @curvedir, @lform,
            @lwidth, @ho, @startho, @endho, @to, @startto, @endto, @vo, @startvo, @endvo, @x, @y,
            @x2, and @y2) will be overridden by visual attributes of the contained curve
            elements.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.tie.log.attributes"/>
         <ref name="mei_att.tie.vis.attributes"/>
         <ref name="mei_att.tie.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_tuplet">
      <element name="tuplet">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A group of notes with "irregular" (sometimes called "irrational") rhythmic values, for example, three notes in the time normally occupied by two or nine in the time of five.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.cmn"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.tuplet.log.attributes"/>
         <ref name="mei_att.tuplet.vis.attributes"/>
         <ref name="mei_att.tuplet.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.mordent.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.ornamentAccid.attributes"/>
      <ref name="mei_att.mordent.log.attribute.form"/>
      <ref name="mei_att.mordent.log.attribute.long"/>
   </define>
   <define name="mei_att.mordent.log.attribute.form">
      <optional>
         <attribute name="form">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records semantic meaning, i.e., intended performance, of the mordent. The <code xmlns="http://www.w3.org/1999/xhtml">@altsym</code>, <code xmlns="http://www.w3.org/1999/xhtml">@glyph.name</code>, or <code xmlns="http://www.w3.org/1999/xhtml">@glyph.num</code> attributes may be used to specify the appropriate symbol.</a:documentation>
            <choice>
               <value>lower</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Starts with the written note, followed by its lower neighbor, with a return to the written note. In modern practice, this is called an "inverted mordent" and indicated by a short wavy line with a vertical line through it.</a:documentation>
               <value>upper</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Starts with the written note, followed by its upper neighbor, with a return to the principal note. In modern practice, the symbol lacks the vertical line used for the inverted form.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.mordent.log.attribute.long">
      <optional>
         <attribute name="long">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">When set to 'true', a double or long mordent, sometimes called a "pincé double", consisting of 5 notes, is indicated.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.ornamentAccid.attributes">
      <ref name="mei_att.ornamentAccid.ges.attributes"/>
      <ref name="mei_att.ornamentAccid.attribute.accidupper"/>
      <ref name="mei_att.ornamentAccid.attribute.accidlower"/>
   </define>
   <define name="mei_att.ornamentAccid.attribute.accidupper">
      <optional>
         <attribute name="accidupper">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the written accidental associated with an upper neighboring note.</a:documentation>
            <ref name="mei_data.ACCIDENTAL.WRITTEN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.ornamentAccid.attribute.accidlower">
      <optional>
         <attribute name="accidlower">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the written accidental associated with a lower neighboring note.</a:documentation>
            <ref name="mei_data.ACCIDENTAL.WRITTEN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.trill.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.ornamentAccid.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
   </define>
   <define name="mei_att.turn.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.ornamentAccid.attributes"/>
      <ref name="mei_att.startId.attributes"/>
      <ref name="mei_att.turn.log.attribute.delayed"/>
      <ref name="mei_att.turn.log.attribute.form"/>
   </define>
   <define name="mei_att.turn.log.attribute.delayed">
      <optional>
         <attribute name="delayed">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">When set to 'true', the turn begins on the second half of the beat.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.turn.log.attribute.form">
      <optional>
         <attribute name="form">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records meaning; i.e., intended performance, of the turn. The <code xmlns="http://www.w3.org/1999/xhtml">@altsym</code>, <code xmlns="http://www.w3.org/1999/xhtml">@glyph.name</code>, or <code xmlns="http://www.w3.org/1999/xhtml">@glyph.num</code> attributes may be used to specify the appropriate symbol.</a:documentation>
            <choice>
               <value>lower</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Begins on the note below the written note.</a:documentation>
               <value>upper</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Begins on the note above the written note.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_model.ornamentLike.cmn">
      <choice>
         <ref name="mei_mordent"/>
         <ref name="mei_trill"/>
         <ref name="mei_turn"/>
      </choice>
   </define>
   <define name="mei_model.ornamentLike.cmn_alternation">
      <choice>
         <ref name="mei_mordent"/>
         <ref name="mei_trill"/>
         <ref name="mei_turn"/>
      </choice>
   </define>
   <define name="mei_model.ornamentLike.cmn_sequence">
      <ref name="mei_mordent"/>
      <ref name="mei_trill"/>
      <ref name="mei_turn"/>
   </define>
   <define name="mei_model.ornamentLike.cmn_sequenceOptional">
      <optional>
         <ref name="mei_mordent"/>
      </optional>
      <optional>
         <ref name="mei_trill"/>
      </optional>
      <optional>
         <ref name="mei_turn"/>
      </optional>
   </define>
   <define name="mei_model.ornamentLike.cmn_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_mordent"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_trill"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_turn"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.ornamentLike.cmn_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_mordent"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_trill"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_turn"/>
      </oneOrMore>
   </define>
   <define name="mei_mordent">
      <element name="mordent">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">An ornament indicating rapid alternation of the main note with a secondary note, usually a step below, but sometimes a step above. </a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-mordent-mordent_start-type_attributes_required-constraint-rule-24">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:mordent">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.mordent.log.attributes"/>
         <ref name="mei_att.mordent.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_trill">
      <element name="trill">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Rapid alternation of a note with another (usually at the interval of a second above).</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-trill-trill_start-type_attributes_required-constraint-rule-25">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:trill">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.trill.log.attributes"/>
         <ref name="mei_att.trill.vis.attributes"/>
         <ref name="mei_att.trill.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_turn">
      <element name="turn">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">An ornament consisting of four notes — the upper neighbor of the written note, the written note, the lower neighbor, and the written note.</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-turn-turn_start-type_attributes_required-constraint-rule-26">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:turn">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.turn.log.attributes"/>
         <ref name="mei_att.turn.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.extSym.auth.attributes">
      <ref name="mei_att.extSym.auth.attribute.glyph.auth"/>
      <ref name="mei_att.extSym.auth.attribute.glyph.uri"/>
   </define>
   <define name="mei_att.extSym.auth.attribute.glyph.auth">
      <optional>
         <attribute name="glyph.auth">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A name or label associated with the controlled vocabulary from which the value of <code xmlns="http://www.w3.org/1999/xhtml">@glyph.name</code> or <code xmlns="http://www.w3.org/1999/xhtml">@glyph.num</code> is taken, or the textual content of the element.
Suggested values include: 1] smufl</a:documentation>
            <choice>
               <value>smufl</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Standard Music Font Layout.</a:documentation>
               <data type="NMTOKEN"/>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.extSym.auth.attribute.glyph.uri">
      <optional>
         <attribute name="glyph.uri">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The web-accessible location of the controlled vocabulary from which the value of <code xmlns="http://www.w3.org/1999/xhtml">@glyph.name</code> or <code xmlns="http://www.w3.org/1999/xhtml">@glyph.num</code> is taken, or the textual content of the element.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.extSym.names.attributes">
      <ref name="mei_att.extSym.names.attribute.glyph.name"/>
      <ref name="mei_att.extSym.names.attribute.glyph.num"/>
   </define>
   <define name="mei_att.extSym.names.attribute.glyph.name">
      <optional>
         <attribute name="glyph.name">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Glyph name.</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.extSym.names-glyph.name-check_glyph.name-constraint-rule-27">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="@glyph.name">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@glyph.name attribute
                should have content.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.extSym.names.attribute.glyph.num">
      <optional>
         <attribute name="glyph.num">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Numeric glyph reference in hexadecimal notation, e.g., "#xE000" or "U+E000". N.B. SMuFL version 1.18 uses the range U+E000 - U+ECBF.</a:documentation>
            <ref name="mei_data.HEXNUM"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.extSym.names-glyph.num-check_glyph.num-constraint-rule-28">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="mei:*[@glyph.num and (lower-case(@glyph.auth) eq 'smufl' or @glyph.uri eq 'http://www.smufl.org/')]">
         <sch:assert role="warning"
                      test="matches(normalize-space(@glyph.num), '^(#x|U\+)E([0-9AB][0-9A-F][0-9A-F]|C[0-9A][0-9A-F]|CB[0-9A-F])$')">SMuFL version 1.18 uses the range U+E000 - U+ECBF.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.extSym.attributes">
      <ref name="mei_att.extSym.auth.attributes"/>
      <ref name="mei_att.extSym.names.attributes"/>
   </define>
   <define name="mei_att.fing.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
   </define>
   <define name="mei_att.fingGrp.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
      <ref name="mei_att.fingGrp.log.attribute.form"/>
   </define>
   <define name="mei_att.fingGrp.log.attribute.form">
      <optional>
         <attribute name="form">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
            <choice>
               <value>alter</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">alternation of fingers.</a:documentation>
               <value>combi</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">combination of fingers.</a:documentation>
               <value>subst</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">substitution of fingers.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_model.fingeringLike">
      <choice>
         <ref name="mei_fing"/>
         <ref name="mei_fingGrp"/>
      </choice>
   </define>
   <define name="mei_model.fingeringLike_alternation">
      <choice>
         <ref name="mei_fing"/>
         <ref name="mei_fingGrp"/>
      </choice>
   </define>
   <define name="mei_model.fingeringLike_sequence">
      <ref name="mei_fing"/>
      <ref name="mei_fingGrp"/>
   </define>
   <define name="mei_model.fingeringLike_sequenceOptional">
      <optional>
         <ref name="mei_fing"/>
      </optional>
      <optional>
         <ref name="mei_fingGrp"/>
      </optional>
   </define>
   <define name="mei_model.fingeringLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_fing"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_fingGrp"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.fingeringLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_fing"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_fingGrp"/>
      </oneOrMore>
   </define>
   <define name="mei_fing">
      <element name="fing">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(finger) An individual finger in a fingering indication.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-fing-fing_start-type_attributes_required-constraint-rule-29">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:fing[not(ancestor::mei:fingGrp)]">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-fing-stack_exclusion-constraint-rule-30">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:fing">
               <sch:assert test="not(descendant::mei:stack)">The stack element is not allowed as a
            descendant of fing.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.fing.ges.attributes"/>
         <ref name="mei_att.fing.log.attributes"/>
         <ref name="mei_att.fing.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_fingGrp">
      <element name="fingGrp">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(finger group) A group of individual fingers in a fingering indication.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.fingeringLike"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-fingGrp-require_fingeringLike_children-constraint-rule-31">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:fingGrp">
               <sch:assert test="count(mei:fing) + count(mei:fingGrp) &gt; 1">At least 2 fing or fingGrp
            elements are required.</sch:assert>
            </sch:rule>
         </pattern>
         <sch:pattern xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude">
            <sch:rule context="mei:fingGrp[not(ancestor::mei:fingGrp)][@tstamp or @startid]">
               <sch:assert test="not(child::mei:*[@tstamp or @startid])">When @tstamp or @startid is
              present on fingGrp, its child elements cannot have a @tstamp or @startid
              attribute.</sch:assert>
            </sch:rule>
            <sch:rule context="mei:fingGrp[not(ancestor::mei:fingGrp)][not(@tstamp or @startid)]">
               <sch:assert test="count(descendant::mei:*[@tstamp or @startid]) = count(child::mei:*[local-name()='fing' or local-name()='fingGrp'])">When @tstamp or @startid is not present on fingGrp, each of its child elements must
              have a @tstamp or @startid attribute.</sch:assert>
            </sch:rule>
         </sch:pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.fingGrp.ges.attributes"/>
         <ref name="mei_att.fingGrp.log.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.accid.ges.attributes">
      <ref name="mei_att.accidental.ges.attributes"/>
   </define>
   <define name="mei_att.accidental.ges.attributes">
      <ref name="mei_att.accidental.ges.attribute.accid.ges"/>
   </define>
   <define name="mei_att.accidental.ges.attribute.accid.ges">
      <optional>
         <attribute name="accid.ges">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the performed pitch inflection.</a:documentation>
            <ref name="mei_data.ACCIDENTAL.GESTURAL"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.accidental.ges-accid.ges-check_accid_duplication-constraint-rule-34">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="@accid.ges">
         <sch:assert role="warning" test="not(. eq ../@accid)">The value of @accid.ges should
                not duplicate the value of @accid.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.artic.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.attacking.attributes">
      <ref name="mei_att.attacking.attribute.attacca"/>
   </define>
   <define name="mei_att.attacking.attribute.attacca">
      <optional>
         <attribute name="attacca">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates that the performance of the next musical division should begin immediately following this one.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.breath.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.bTrem.ges.attributes">
      <ref name="mei_att.tremMeasured.attributes"/>
   </define>
   <define name="mei_att.caesura.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.chord.ges.attributes">
      <ref name="mei_att.instrumentIdent.attributes"/>
   </define>
   <define name="mei_att.chordMember.ges.attributes">
      <ref name="mei_att.accidental.ges.attributes"/>
   </define>
   <define name="mei_att.mdiv.ges.attributes">
      <ref name="mei_att.attacking.attributes"/>
   </define>
   <define name="mei_att.f.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.fing.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.fingGrp.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.fTrem.ges.attributes">
      <ref name="mei_att.tremMeasured.attributes"/>
   </define>
   <define name="mei_att.gliss.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.hairpin.ges.attributes">
      <ref name="mei_att.midiValue.attributes"/>
      <ref name="mei_att.midiValue2.attributes"/>
   </define>
   <define name="mei_att.harpPedal.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.instrDef.ges.attributes">
      <ref name="mei_att.channelized.attributes"/>
      <ref name="mei_att.midiInstrument.attributes"/>
      <ref name="mei_att.soundLocation.attributes"/>
   </define>
   <define name="mei_att.lv.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.measure.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.mRest.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.multiRest.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.note.ges.attributes">
      <ref name="mei_att.instrumentIdent.attributes"/>
      <ref name="mei_att.midiVelocity.attributes"/>
      <ref name="mei_att.stringtab.attributes"/>
      <ref name="mei_att.note.ges.attribute.oct.ges"/>
      <ref name="mei_att.note.ges.attribute.pname.ges"/>
   </define>
   <define name="mei_att.note.ges.attribute.oct.ges">
      <optional>
         <attribute name="oct.ges">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records performed octave information that differs from the written value.</a:documentation>
            <ref name="mei_data.OCTAVE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.note.ges.attribute.pname.ges">
      <optional>
         <attribute name="pname.ges">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a performed pitch name that differs from the written value.</a:documentation>
            <ref name="mei_data.PITCHNAME.GESTURAL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.octave.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.ornam.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.ornamentAccid.ges.attributes">
      <ref name="mei_att.ornamentAccid.ges.attribute.accidupper.ges"/>
      <ref name="mei_att.ornamentAccid.ges.attribute.accidlower.ges"/>
   </define>
   <define name="mei_att.ornamentAccid.ges.attribute.accidupper.ges">
      <optional>
         <attribute name="accidupper.ges">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the sounding accidental associated with an upper neighboring note.</a:documentation>
            <ref name="mei_data.ACCIDENTAL.GESTURAL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.ornamentAccid.ges.attribute.accidlower.ges">
      <optional>
         <attribute name="accidlower.ges">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the sounding accidental associated with a lower neighboring note.</a:documentation>
            <ref name="mei_data.ACCIDENTAL.GESTURAL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pedal.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.repeatMark.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.rest.ges.attributes">
      <ref name="mei_att.instrumentIdent.attributes"/>
   </define>
   <define name="mei_att.score.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.section.ges.attributes">
      <ref name="mei_att.attacking.attributes"/>
   </define>
   <define name="mei_att.slur.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.soundLocation.attributes">
      <ref name="mei_att.soundLocation.attribute.azimuth"/>
      <ref name="mei_att.soundLocation.attribute.elevation"/>
   </define>
   <define name="mei_att.soundLocation.attribute.azimuth">
      <optional>
         <attribute name="azimuth">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The lateral or left-to-right plane.</a:documentation>
            <ref name="mei_data.DEGREES"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.soundLocation.attribute.elevation">
      <optional>
         <attribute name="elevation">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The above-to-below axis.</a:documentation>
            <ref name="mei_data.DEGREES"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.space.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.staffDef.ges.attributes">
      <ref name="mei_att.instrumentIdent.attributes"/>
      <ref name="mei_att.stringtab.tuning.attributes"/>
      <ref name="mei_att.timeBase.attributes"/>
      <ref name="mei_att.tuning.attributes"/>
   </define>
   <define name="mei_att.staffGrp.ges.attributes">
      <ref name="mei_att.instrumentIdent.attributes"/>
   </define>
   <define name="mei_att.tempo.ges.attributes">
      <ref name="mei_att.midiTempo.attributes"/>
   </define>
   <define name="mei_att.tie.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.trill.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.tuplet.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.chordDef.log.attributes">
      <ref name="mei_att.stringtab.position.attributes"/>
      <ref name="mei_att.stringtab.tuning.attributes"/>
   </define>
   <define name="mei_att.chordMember.log.attributes">
      <ref name="mei_att.pitched.attributes"/>
      <ref name="mei_att.stringtab.attributes"/>
   </define>
   <define name="mei_att.f.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
   </define>
   <define name="mei_att.harm.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
      <ref name="mei_att.harm.log.attribute.chordref"/>
   </define>
   <define name="mei_att.harm.log.attribute.chordref">
      <optional>
         <attribute name="chordref">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(chord reference) Contains a reference to a <code xmlns="http://www.w3.org/1999/xhtml">&lt;chordDef&gt;</code> element elsewhere in the document.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.harm.log-chordref-check_chordrefTarget-constraint-rule-35">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="@chordref">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@chordref attribute
                should have content.</sch:assert>
         <sch:assert role="warning"
                      test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:chordDef/@xml:id">The value in @chordref should correspond to the @xml:id attribute of a chordDef
                element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_model.controlEventLike.harmony">
      <choice>
         <ref name="mei_model.harmLike"/>
      </choice>
   </define>
   <define name="mei_model.controlEventLike.harmony_alternation">
      <choice>
         <ref name="mei_model.harmLike_alternation"/>
      </choice>
   </define>
   <define name="mei_model.controlEventLike.harmony_sequence">
      <ref name="mei_model.harmLike_sequence"/>
   </define>
   <define name="mei_model.controlEventLike.harmony_sequenceOptional">
      <optional>
         <ref name="mei_model.harmLike_sequenceOptional"/>
      </optional>
   </define>
   <define name="mei_model.controlEventLike.harmony_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_model.harmLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.controlEventLike.harmony_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_model.harmLike_sequenceRepeatable"/>
      </oneOrMore>
   </define>
   <define name="mei_model.figbassLike">
      <choice>
         <ref name="mei_fb"/>
      </choice>
   </define>
   <define name="mei_model.fLike">
      <choice>
         <ref name="mei_f"/>
      </choice>
   </define>
   <define name="mei_model.harmLike">
      <choice>
         <ref name="mei_harm"/>
      </choice>
   </define>
   <define name="mei_model.harmLike_alternation">
      <choice>
         <ref name="mei_harm"/>
      </choice>
   </define>
   <define name="mei_model.harmLike_sequence">
      <ref name="mei_harm"/>
   </define>
   <define name="mei_model.harmLike_sequenceOptional">
      <optional>
         <ref name="mei_harm"/>
      </optional>
   </define>
   <define name="mei_model.harmLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_harm"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.harmLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_harm"/>
      </oneOrMore>
   </define>
   <define name="mei_chordDef">
      <element name="chordDef">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(chord definition) Chord tablature definition.</a:documentation>
         <zeroOrMore>
            <ref name="mei_chordMember"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_barre"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.chordDef.log.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_chordMember">
      <element name="chordMember">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">An individual pitch in a chord defined by a <code xmlns="http://www.w3.org/1999/xhtml">&lt;chordDef&gt;</code> element.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.chordMember.ges.attributes"/>
         <ref name="mei_att.chordMember.log.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_f">
      <element name="f">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(figure) Single element of a figured bass indication.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.f.ges.attributes"/>
         <ref name="mei_att.f.log.attributes"/>
         <ref name="mei_att.f.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_fb">
      <element name="fb">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(figured bass) Symbols added to a bass line that indicate harmony. Used to improvise a chordal accompaniment. Sometimes called Generalbass, thoroughbass, or basso continuo.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.fLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_harm">
      <element name="harm">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(harmony) An indication of harmony, e.g., chord names, tablature grids, harmonic analysis, figured bass.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
               <ref name="mei_model.figbassLike"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-harm-harm_start-type_attributes_required-constraint-rule-36">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:harm">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.harm.log.attributes"/>
         <ref name="mei_att.harm.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_availability">
      <element name="availability">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Groups elements that describe the availability of and access to a bibliographic item, including an MEI-encoded document.</a:documentation>
         <ref name="mei_macro.availabilityPart"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.dataPointing.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_fileDesc">
      <element name="fileDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(file description) (file description) – Contains a full bibliographic description of the MEI file.</a:documentation>
         <ref name="mei_titleStmt"/>
         <ref name="mei_pubStmt"/>
         <ref name="mei_att.common.attributes"/>
         <optional>
            <attribute name="corresp">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to point to other elements that correspond to this one in a generic fashion.</a:documentation>
               <list>
                  <oneOrMore>
                     <ref name="mei_data.URI"/>
                  </oneOrMore>
               </list>
            </attribute>
         </optional>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-fileDesc-corresp-check_correspTarget-constraint-rule-37">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       context="@corresp">
               <sch:assert role="warning" test="not(normalize-space(.) eq '')">@corresp attribute should have content.</sch:assert>
            </sch:rule>
         </pattern>
         <empty/>
      </element>
   </define>
   <define name="mei_meiHead">
      <element name="meiHead">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(MEI header) (MEI header) – Supplies the descriptive and declarative metadata prefixed to every MEI-conformant text.</a:documentation>
         <ref name="mei_fileDesc"/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-meiHead-check_meiHead_type-constraint-rule-38">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:meiHead[@type eq 'music']">
               <sch:assert test="ancestor::mei:mei">The meiHead type attribute can have the value 'music'
            only when the document element is "mei".</sch:assert>
            </sch:rule>
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:meiHead[@type eq 'corpus']">
               <sch:assert test="ancestor::mei:meiCorpus">The meiHead type attribute can have the value
            'corpus' only when the document element is "meiCorpus".</sch:assert>
            </sch:rule>
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:meiHead[@type eq 'independent']">
               <sch:assert test="not(ancestor::mei:*)">The meiHead type attribute can have the value
            'independent' only when the document element is "meiHead".</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.basic.attributes"/>
         <ref name="mei_att.labelled.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Specifies the kind of document to which the header is attached, for example whether it is a corpus or individual text.</a:documentation>
               <choice>
                  <value>music</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Header is attached to a music document.</a:documentation>
                  <value>corpus</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Header is attached to a corpus.</a:documentation>
                  <value>independent</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Header is independent; i.e., not attached to either a music or a corpus document.</a:documentation>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_pubStmt">
      <element name="pubStmt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(publication statement) (publication statement) – Container for information regarding the publication or distribution of a bibliographic item, including the publisher's name and address, the date of publication, and other relevant details.</a:documentation>
         <optional>
            <ref name="mei_pubPlace"/>
         </optional>
         <optional>
            <ref name="mei_date"/>
         </optional>
         <optional>
            <ref name="mei_availability"/>
         </optional>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_titleStmt">
      <element name="titleStmt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(title statement) Container for title and responsibility meta-data.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <oneOrMore>
            <ref name="mei_model.titleLike"/>
         </oneOrMore>
         <zeroOrMore>
            <ref name="mei_model.respLike"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_model.verseLike">
      <choice>
         <ref name="mei_refrain"/>
         <ref name="mei_verse"/>
      </choice>
   </define>
   <define name="mei_refrain">
      <element name="refrain">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Recurring lyrics, especially at the end of each verse or stanza of a poem or song lyrics; a chorus.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_dir"/>
               <ref name="mei_dynam"/>
               <ref name="mei_tempo"/>
               <ref name="mei_space"/>
            </choice>
         </zeroOrMore>
         <oneOrMore>
            <choice>
               <ref name="mei_volta"/>
               <ref name="mei_model.sylLike"/>
            </choice>
         </oneOrMore>
         <zeroOrMore>
            <ref name="mei_model.lbLike"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.refrain.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_verse">
      <element name="verse">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Division of a poem or song lyrics, sometimes having a fixed length, meter or rhyme scheme; a stanza.</a:documentation>
         <zeroOrMore>
            <ref name="mei_label"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_labelAbbr"/>
         </zeroOrMore>
         <oneOrMore>
            <choice>
               <ref name="mei_volta"/>
               <ref name="mei_model.sylLike"/>
            </choice>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.verse.vis.attributes"/>
         <ref name="mei_att.nNumberLike.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_volta">
      <element name="volta">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sung text for a specific iteration of a repeated section of music.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_dir"/>
               <ref name="mei_dynam"/>
               <ref name="mei_tempo"/>
               <ref name="mei_space"/>
            </choice>
         </zeroOrMore>
         <oneOrMore>
            <choice>
               <ref name="mei_model.sylLike"/>
            </choice>
         </oneOrMore>
         <zeroOrMore>
            <ref name="mei_model.lbLike"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.volta.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.channelized.attributes">
      <ref name="mei_att.channelized.attribute.midi.channel"/>
      <ref name="mei_att.channelized.attribute.midi.duty"/>
      <ref name="mei_att.channelized.attribute.midi.port"/>
      <ref name="mei_att.channelized.attribute.midi.track"/>
   </define>
   <define name="mei_att.channelized.attribute.midi.channel">
      <optional>
         <attribute name="midi.channel">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records a MIDI channel value.</a:documentation>
            <ref name="mei_data.MIDICHANNEL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.channelized.attribute.midi.duty">
      <optional>
         <attribute name="midi.duty">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Specifies the 'on' part of the duty cycle as a percentage of a note’s duration.</a:documentation>
            <ref name="mei_data.PERCENT.LIMITED"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.channelized.attribute.midi.port">
      <optional>
         <attribute name="midi.port">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sets the MIDI port value.</a:documentation>
            <ref name="mei_data.MIDIVALUE_NAME"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.channelized.attribute.midi.track">
      <optional>
         <attribute name="midi.track">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sets the MIDI track.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.instrDef.log.attributes">
      <empty/>
   </define>
   <define name="mei_att.instrumentIdent.attributes">
      <ref name="mei_att.instrumentIdent.attribute.instr"/>
   </define>
   <define name="mei_att.instrumentIdent.attribute.instr">
      <optional>
         <attribute name="instr">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides a way of pointing to a MIDI instrument definition. It must contain the ID of an <code xmlns="http://www.w3.org/1999/xhtml">&lt;instrDef&gt;</code> element elsewhere in the document.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.instrumentIdent-instr-check_instrTarget-constraint-rule-41">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="@instr">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@instr attribute
                should have content.</sch:assert>
         <sch:assert role="warning"
                      test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:instrDef/@xml:id">The value in @instr should correspond to the @xml:id attribute of an instrDef
                element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.midiInstrument.attributes">
      <ref name="mei_att.midiInstrument.attribute.midi.instrnum"/>
      <ref name="mei_att.midiInstrument.attribute.midi.instrname"/>
      <ref name="mei_att.midiInstrument.attribute.midi.pan"/>
      <ref name="mei_att.midiInstrument.attribute.midi.patchname"/>
      <ref name="mei_att.midiInstrument.attribute.midi.patchnum"/>
      <ref name="mei_att.midiInstrument.attribute.midi.volume"/>
   </define>
   <define name="mei_att.midiInstrument.attribute.midi.instrnum">
      <optional>
         <attribute name="midi.instrnum">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures the General MIDI instrument number. Use an integer for a 0-based value. An integer preceded by "in" indicates a 1-based value.</a:documentation>
            <ref name="mei_data.MIDIVALUE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.midiInstrument.attribute.midi.instrname">
      <optional>
         <attribute name="midi.instrname">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides a General MIDI label for the MIDI instrument.</a:documentation>
            <ref name="mei_data.MIDINAMES"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.midiInstrument.attribute.midi.pan">
      <optional>
         <attribute name="midi.pan">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sets the instrument’s position in a stereo field. MIDI values of 0 and 1 both pan left, 127 or 128 pans right, and 63 or 64 pans to the center. Positve percentage values pan to the right, negative ones to the left. 0% is centered.</a:documentation>
            <ref name="mei_data.MIDIVALUE_PAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.midiInstrument.attribute.midi.patchname">
      <optional>
         <attribute name="midi.patchname">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records a non-General MIDI patch/instrument name.</a:documentation>
            <data type="NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.midiInstrument.attribute.midi.patchnum">
      <optional>
         <attribute name="midi.patchnum">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records a non-General MIDI patch/instrument number.</a:documentation>
            <ref name="mei_data.MIDIVALUE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.midiInstrument.attribute.midi.volume">
      <optional>
         <attribute name="midi.volume">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sets the instrument’s volume.</a:documentation>
            <ref name="mei_data.MIDIVALUE_PERCENT"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.midiInstrument-One_of_instrname_or_instrnum-constraint-rule-42">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="mei:*[@midi.instrname]">
         <sch:assert test="not(@midi.instrnum)">Only one of @midi.instrname and @midi.instrnum
            allowed.</sch:assert>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.midiInstrument-One_of_patchname_or_patchnum-constraint-rule-43">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="mei:*[@midi.patchname]">
         <sch:assert test="not(@midi.patchnum)">Only one of @midi.patchname and @midi.patchnum
            allowed.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.midiTempo.attributes">
      <ref name="mei_att.midiTempo.attribute.midi.bpm"/>
      <ref name="mei_att.midiTempo.attribute.midi.mspb"/>
   </define>
   <define name="mei_att.midiTempo.attribute.midi.bpm">
      <optional>
         <attribute name="midi.bpm">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures the number of *quarter notes* per minute. In MIDI, a beat is always defined as a quarter note, *not the numerator of the time signature or the metronomic indication*.</a:documentation>
            <ref name="mei_data.MIDIBPM"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.midiTempo.attribute.midi.mspb">
      <optional>
         <attribute name="midi.mspb">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the number of microseconds per *quarter note*. In MIDI, a beat is always defined as a quarter note, *not the numerator of the time signature or the metronomic indication*. At 120 quarter notes per minute, each quarter note will last 500,000 microseconds.</a:documentation>
            <ref name="mei_data.MIDIMSPB"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.midiValue.attributes">
      <ref name="mei_att.midiValue.attribute.val"/>
   </define>
   <define name="mei_att.midiValue.attribute.val">
      <optional>
         <attribute name="val">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI number.</a:documentation>
            <ref name="mei_data.MIDIVALUE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.midiValue2.attributes">
      <ref name="mei_att.midiValue2.attribute.val2"/>
   </define>
   <define name="mei_att.midiValue2.attribute.val2">
      <optional>
         <attribute name="val2">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI number.</a:documentation>
            <ref name="mei_data.MIDIVALUE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.midiVelocity.attributes">
      <ref name="mei_att.midiVelocity.attribute.vel"/>
   </define>
   <define name="mei_att.midiVelocity.attribute.vel">
      <optional>
         <attribute name="vel">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI Note-on/off velocity.</a:documentation>
            <ref name="mei_data.MIDIVALUE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.timeBase.attributes">
      <ref name="mei_att.timeBase.attribute.ppq"/>
   </define>
   <define name="mei_att.timeBase.attribute.ppq">
      <optional>
         <attribute name="ppq">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the number of pulses (sometimes referred to as ticks or divisions) per quarter note. Unlike MIDI, MEI permits different values for a score and individual staves.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_model.midiLike">
      <notAllowed/>
   </define>
   <define name="mei_instrDef">
      <element name="instrDef">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(instrument definition) MIDI instrument declaration.</a:documentation>
         <empty/>
         <ref name="mei_att.basic.attributes"/>
         <ref name="mei_att.labelled.attributes"/>
         <ref name="mei_att.nInteger.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.instrDef.ges.attributes"/>
         <ref name="mei_att.instrDef.log.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_model.addressPart">
      <choice>
         <ref name="mei_model.geogNamePart"/>
      </choice>
   </define>
   <define name="mei_model.addressPart_alternation">
      <choice>
         <ref name="mei_model.geogNamePart_alternation"/>
      </choice>
   </define>
   <define name="mei_model.addressPart_sequence">
      <ref name="mei_model.geogNamePart_sequence"/>
   </define>
   <define name="mei_model.addressPart_sequenceOptional">
      <optional>
         <ref name="mei_model.geogNamePart_sequenceOptional"/>
      </optional>
   </define>
   <define name="mei_model.addressPart_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_model.geogNamePart_sequenceOptionalRepeatable"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.addressPart_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_model.geogNamePart_sequenceRepeatable"/>
      </oneOrMore>
   </define>
   <define name="mei_model.geogNamePart">
      <notAllowed/>
   </define>
   <define name="mei_model.geogNamePart_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.geogNamePart_sequence">
      <empty/>
   </define>
   <define name="mei_model.geogNamePart_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.geogNamePart_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.geogNamePart_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.nameLike.agent">
      <choice>
         <ref name="mei_persName"/>
      </choice>
   </define>
   <define name="mei_model.nameLike.agent_alternation">
      <choice>
         <ref name="mei_persName"/>
      </choice>
   </define>
   <define name="mei_model.nameLike.agent_sequence">
      <ref name="mei_persName"/>
   </define>
   <define name="mei_model.nameLike.agent_sequenceOptional">
      <optional>
         <ref name="mei_persName"/>
      </optional>
   </define>
   <define name="mei_model.nameLike.agent_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_persName"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.nameLike.agent_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_persName"/>
      </oneOrMore>
   </define>
   <define name="mei_model.nameLike.geogName">
      <notAllowed/>
   </define>
   <define name="mei_model.nameLike.geogName_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.nameLike.geogName_sequence">
      <empty/>
   </define>
   <define name="mei_model.nameLike.geogName_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.nameLike.geogName_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.nameLike.geogName_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.nameLike.label">
      <notAllowed/>
   </define>
   <define name="mei_model.nameLike.label_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.nameLike.label_sequence">
      <empty/>
   </define>
   <define name="mei_model.nameLike.label_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.nameLike.label_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.nameLike.label_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.nameLike.place">
      <choice>
         <ref name="mei_model.nameLike.geogName"/>
         <ref name="mei_model.repositoryLike"/>
      </choice>
   </define>
   <define name="mei_model.nameLike.place_alternation">
      <choice>
         <ref name="mei_model.nameLike.geogName_alternation"/>
         <ref name="mei_model.repositoryLike_alternation"/>
      </choice>
   </define>
   <define name="mei_model.nameLike.place_sequence">
      <ref name="mei_model.nameLike.geogName_sequence"/>
      <ref name="mei_model.repositoryLike_sequence"/>
   </define>
   <define name="mei_model.nameLike.place_sequenceOptional">
      <optional>
         <ref name="mei_model.nameLike.geogName_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.repositoryLike_sequenceOptional"/>
      </optional>
   </define>
   <define name="mei_model.nameLike.place_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_model.nameLike.geogName_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.repositoryLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.nameLike.place_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_model.nameLike.geogName_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.repositoryLike_sequenceRepeatable"/>
      </oneOrMore>
   </define>
   <define name="mei_model.persNamePart">
      <notAllowed/>
   </define>
   <define name="mei_persName">
      <element name="persName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(personal name) Designation for an individual, including any or all of that individual's forenames, surnames, honorific titles, and added names.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike"/>
               <ref name="mei_model.persNamePart"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.accid.log.attributes">
      <ref name="mei_att.accidental.attributes"/>
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.accid.log.attribute.func"/>
   </define>
   <define name="mei_att.accid.log.attribute.func">
      <optional>
         <attribute name="func">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the function of an accidental.</a:documentation>
            <choice>
               <value>caution</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Cautionary accidental.</a:documentation>
               <value>edit</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Editorial accidental.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.accidental.attributes">
      <ref name="mei_att.accidental.attribute.accid"/>
   </define>
   <define name="mei_att.accidental.attribute.accid">
      <optional>
         <attribute name="accid">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures a written accidental.</a:documentation>
            <ref name="mei_data.ACCIDENTAL.WRITTEN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.artic.log.attributes">
      <ref name="mei_att.articulation.attributes"/>
      <ref name="mei_att.controlEvent.attributes"/>
   </define>
   <define name="mei_att.articulation.attributes">
      <ref name="mei_att.articulation.attribute.artic"/>
   </define>
   <define name="mei_att.articulation.attribute.artic">
      <optional>
         <attribute name="artic">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes the written articulation(s). Articulations are normally encoded in order from the note head outward; that is, away from the stem. See additional notes at att.vis.note. Only articulations should be encoded in the artic attribute; for example, fingerings should be encoded using the <code xmlns="http://www.w3.org/1999/xhtml">&lt;fing&gt;</code> element.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.ARTICULATION"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.augmentDots.attributes">
      <ref name="mei_att.augmentDots.attribute.dots"/>
   </define>
   <define name="mei_att.augmentDots.attribute.dots">
      <optional>
         <attribute name="dots">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the number of augmentation dots required by a written dotted duration.</a:documentation>
            <ref name="mei_data.AUGMENTDOT"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.augmentDots-dots-dots_attribute_requires_dur-constraint-rule-44">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="mei:*[@dots]">
         <sch:assert test="@dur">An element with a dots attribute must also have a dur
                attribute.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.basic.attributes">
      <ref name="mei_att.id.attributes"/>
   </define>
   <define name="mei_att.caesura.log.attributes">
      <ref name="mei_att.layerIdent.attributes"/>
      <ref name="mei_att.staffIdent.attributes"/>
      <ref name="mei_att.startId.attributes"/>
      <ref name="mei_att.timestamp.log.attributes"/>
   </define>
   <define name="mei_att.calendared.attributes">
      <ref name="mei_att.calendared.attribute.calendar"/>
   </define>
   <define name="mei_att.calendared.attribute.calendar">
      <optional>
         <attribute name="calendar">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the calendar system to which a date belongs, for example, Gregorian, Julian, Roman, Mosaic, Revolutionary, Islamic, etc.</a:documentation>
            <data type="NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.chord.log.attributes">
      <ref name="mei_att.augmentDots.attributes"/>
      <ref name="mei_att.chord.log.cmn.attributes"/>
      <ref name="mei_att.cue.attributes"/>
      <ref name="mei_att.duration.log.attributes"/>
      <ref name="mei_att.event.attributes"/>
   </define>
   <define name="mei_att.clef.log.attributes">
      <ref name="mei_att.clefShape.attributes"/>
      <ref name="mei_att.lineLoc.attributes"/>
      <ref name="mei_att.octave.attributes"/>
      <ref name="mei_att.octaveDisplacement.attributes"/>
      <ref name="mei_att.clef.log.attribute.cautionary"/>
   </define>
   <define name="mei_att.clef.log.attribute.cautionary">
      <optional>
         <attribute name="cautionary">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the function of the clef. A "cautionary" clef does not change the following pitches.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.cleffing.log.attributes">
      <ref name="mei_att.cleffing.log.attribute.clef.shape"/>
      <ref name="mei_att.cleffing.log.attribute.clef.line"/>
      <ref name="mei_att.cleffing.log.attribute.clef.dis"/>
      <ref name="mei_att.cleffing.log.attribute.clef.dis.place"/>
   </define>
   <define name="mei_att.cleffing.log.attribute.clef.shape">
      <optional>
         <attribute name="clef.shape">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes a value for the clef symbol.</a:documentation>
            <ref name="mei_data.CLEFSHAPE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.cleffing.log.attribute.clef.line">
      <optional>
         <attribute name="clef.line">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a default value for the position of the clef. The value must be in the range between 1 and the number of lines on the staff. The numbering of lines starts with the lowest line of the staff.</a:documentation>
            <ref name="mei_data.CLEFLINE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.cleffing.log.attribute.clef.dis">
      <optional>
         <attribute name="clef.dis">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the amount of octave displacement to be applied to the clef.</a:documentation>
            <ref name="mei_data.OCTAVE.DIS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.cleffing.log.attribute.clef.dis.place">
      <optional>
         <attribute name="clef.dis.place">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the direction of octave displacement to be applied to the clef.</a:documentation>
            <ref name="mei_data.STAFFREL.basic"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.cleffing.log-clef_shape_requires_clef_line-constraint-rule-45">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="mei:*[matches(@clef.shape, '[FCG]')]">
         <sch:assert test="@clef.line">An 'F', 'C', or 'G' clef requires that its position be
            specified.</sch:assert>
      </sch:rule>
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="mei:*[matches(@clef.shape, '(TAB|perc)')]">
         <sch:assert test="@lines">A TAB or percussion clef requires that the number of lines be
            specified.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.clefShape.attributes">
      <ref name="mei_att.clefShape.attribute.shape"/>
   </define>
   <define name="mei_att.clefShape.attribute.shape">
      <optional>
         <attribute name="shape">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes a clef’s shape.</a:documentation>
            <ref name="mei_data.CLEFSHAPE"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.clefShape-shape_requires_line-constraint-rule-47">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="mei:clef[matches(@shape, '[FCG]')]">
         <sch:assert test="@line">When @shape is present, @line must also be
            specified.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.color.attributes">
      <ref name="mei_att.color.attribute.color"/>
   </define>
   <define name="mei_att.color.attribute.color">
      <optional>
         <attribute name="color">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to indicate visual appearance. Do not confuse this with the musical term 'color' as used in pre-CMN notation.</a:documentation>
            <ref name="mei_data.COLOR"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.common.attributes">
      <ref name="mei_att.id.attributes"/>
      <ref name="mei_att.labelled.attributes"/>
      <ref name="mei_att.typed.attributes"/>
   </define>
   <define name="mei_att.controlEvent.attributes">
      <ref name="mei_att.layerIdent.attributes"/>
      <ref name="mei_att.plist.attributes"/>
      <ref name="mei_att.staffIdent.attributes"/>
      <ref name="mei_att.timestamp.log.attributes"/>
   </define>
   <define name="mei_att.cue.attributes">
      <ref name="mei_att.cue.attribute.cue"/>
   </define>
   <define name="mei_att.cue.attribute.cue">
      <optional>
         <attribute name="cue">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.curvature.attributes">
      <ref name="mei_att.curvature.attribute.curvedir"/>
   </define>
   <define name="mei_att.curvature.attribute.curvedir">
      <optional>
         <attribute name="curvedir">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes a curve with a generic term indicating the direction of curvature.</a:documentation>
            <choice>
               <value>above</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Upward curve.</a:documentation>
               <value>below</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Downward curve.</a:documentation>
               <value>mixed</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A "meandering" curve, both above and below the items it pertains to.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.datable.attributes">
      <ref name="mei_att.datable.attribute.enddate"/>
      <ref name="mei_att.datable.attribute.isodate"/>
      <ref name="mei_att.datable.attribute.notafter"/>
      <ref name="mei_att.datable.attribute.notbefore"/>
      <ref name="mei_att.datable.attribute.startdate"/>
   </define>
   <define name="mei_att.datable.attribute.enddate">
      <optional>
         <attribute name="enddate">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains the end point of a date range in standard ISO form.</a:documentation>
            <ref name="mei_data.ISODATE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.datable.attribute.isodate">
      <optional>
         <attribute name="isodate">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides the value of a textual date in standard ISO form.</a:documentation>
            <ref name="mei_data.ISODATE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.datable.attribute.notafter">
      <optional>
         <attribute name="notafter">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains an upper boundary for an uncertain date in standard ISO form.</a:documentation>
            <ref name="mei_data.ISODATE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.datable.attribute.notbefore">
      <optional>
         <attribute name="notbefore">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a lower boundary, in standard ISO form, for an uncertain date.</a:documentation>
            <ref name="mei_data.ISODATE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.datable.attribute.startdate">
      <optional>
         <attribute name="startdate">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains the starting point of a date range in standard ISO form.</a:documentation>
            <ref name="mei_data.ISODATE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.dataPointing.attributes">
      <ref name="mei_att.dataPointing.attribute.data"/>
   </define>
   <define name="mei_att.dataPointing.attribute.data">
      <optional>
         <attribute name="data">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to link metadata elements to one or more data-containing elements.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.URI"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.dataPointing-data-check_dataTarget-constraint-rule-48">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="@data">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@data attribute should
                have content.</sch:assert>
         <sch:assert role="warning"
                      test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*[ancestor::mei:music]/@xml:id">The value in @data should correspond to the @xml:id attribute of a descendant of
                the music element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.dir.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
   </define>
   <define name="mei_att.duration.additive.attributes">
      <ref name="mei_att.duration.additive.attribute.dur"/>
   </define>
   <define name="mei_att.duration.additive.attribute.dur">
      <optional>
         <attribute name="dur">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(duration) When a duration cannot be represented as a single power-of-two value, multiple space-separated values that add up to the total duration may be used.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.DURATION"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.duration.log.attributes">
      <ref name="mei_att.duration.log.attribute.dur"/>
   </define>
   <define name="mei_att.duration.log.attribute.dur">
      <optional>
         <attribute name="dur">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(duration) Records the duration of a feature using the relative durational values provided by the data.DURATION datatype.</a:documentation>
            <ref name="mei_data.DURATION"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.duration.ratio.attributes">
      <ref name="mei_att.duration.ratio.attribute.num"/>
      <ref name="mei_att.duration.ratio.attribute.numbase"/>
   </define>
   <define name="mei_att.duration.ratio.attribute.num">
      <optional>
         <attribute name="num">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(number) Along with numbase, describes duration as a ratio. num is the first value in the ratio, while numbase is the second.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.duration.ratio.attribute.numbase">
      <optional>
         <attribute name="numbase">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Along with num, describes duration as a ratio. num is the first value in the ratio, while numbase is the second.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.dynam.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
   </define>
   <define name="mei_att.ending.log.attributes">
      <empty/>
   </define>
   <define name="mei_att.event.attributes">
      <ref name="mei_att.layerIdent.attributes"/>
      <ref name="mei_att.staffIdent.attributes"/>
   </define>
   <define name="mei_att.extender.attributes">
      <ref name="mei_att.lineRend.attributes"/>
      <ref name="mei_att.extender.attribute.extender"/>
   </define>
   <define name="mei_att.extender.attribute.extender">
      <optional>
         <attribute name="extender">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the presence of an extension symbol, typically a line.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.formework.attributes">
      <ref name="mei_att.formework.attribute.func"/>
   </define>
   <define name="mei_att.formework.attribute.func">
      <optional>
         <attribute name="func">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the function (i.e., placement) of a page header or footer.</a:documentation>
            <ref name="mei_data.PGFUNC"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.horizontalAlign.attributes">
      <ref name="mei_att.horizontalAlign.attribute.halign"/>
   </define>
   <define name="mei_att.horizontalAlign.attribute.halign">
      <optional>
         <attribute name="halign">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records horizontal alignment.</a:documentation>
            <ref name="mei_data.HORIZONTALALIGNMENT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.id.attributes">
      <ref name="mei_att.id.attribute.xmlid"/>
   </define>
   <define name="mei_att.id.attribute.xmlid">
      <optional>
         <attribute name="xml:id">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Regularizes the naming of an element and thus facilitates building links between it and other resources. Each id attribute within a document must have a unique value.</a:documentation>
            <data type="ID"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.keySigDefault.log.attributes">
      <ref name="mei_att.keySigDefault.log.attribute.keysig"/>
   </define>
   <define name="mei_att.keySigDefault.log.attribute.keysig">
      <optional>
         <attribute name="keysig">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Written key signature.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.KEYFIFTHS"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.labelled.attributes">
      <ref name="mei_att.labelled.attribute.label"/>
   </define>
   <define name="mei_att.labelled.attribute.label">
      <optional>
         <attribute name="label">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures text to be used to generate a label for the element to which it’s attached, a "tool tip" or prefatory text, for example. Should not be used to record document content.</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lang.attributes">
      <ref name="mei_att.lang.attribute.xmllang"/>
   </define>
   <define name="mei_att.lang.attribute.xmllang">
      <optional>
         <attribute name="xml:lang">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Identifies the language of the element's content. The values for this attribute are language 'tags' as defined in BCP 47. All language tags that make use of private use sub-tags must be documented in a corresponding language element in the MEI header whose id attribute is the same as the language tag's value.</a:documentation>
            <data type="language"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.layerIdent.attributes">
      <ref name="mei_att.layerIdent.attribute.layer"/>
   </define>
   <define name="mei_att.layerIdent.attribute.layer">
      <optional>
         <attribute name="layer">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Identifies the layer to which a feature applies.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="positiveInteger"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lineLoc.attributes">
      <ref name="mei_att.lineLoc.attribute.line"/>
   </define>
   <define name="mei_att.lineLoc.attribute.line">
      <optional>
         <attribute name="line">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the line upon which a feature stands. The value must be in the range between 1 and the number of lines on the staff. The numbering of lines starts with the lowest line of the staff.</a:documentation>
            <ref name="mei_data.CLEFLINE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lineRend.attributes">
      <ref name="mei_att.lineRend.base.attributes"/>
      <ref name="mei_att.lineRend.attribute.lendsym"/>
      <ref name="mei_att.lineRend.attribute.lendsym.size"/>
      <ref name="mei_att.lineRend.attribute.lstartsym"/>
      <ref name="mei_att.lineRend.attribute.lstartsym.size"/>
   </define>
   <define name="mei_att.lineRend.attribute.lendsym">
      <optional>
         <attribute name="lendsym">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(line end symbol) Symbol rendered at end of line.</a:documentation>
            <ref name="mei_data.LINESTARTENDSYMBOL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lineRend.attribute.lendsym.size">
      <optional>
         <attribute name="lendsym.size">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds the relative size of the line-end symbol.</a:documentation>
            <ref name="mei_data.FONTSIZESCALE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lineRend.attribute.lstartsym">
      <optional>
         <attribute name="lstartsym">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(line start symbol) Symbol rendered at start of line.</a:documentation>
            <ref name="mei_data.LINESTARTENDSYMBOL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lineRend.attribute.lstartsym.size">
      <optional>
         <attribute name="lstartsym.size">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds the relative size of the line-start symbol.</a:documentation>
            <ref name="mei_data.FONTSIZESCALE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lineRend.base.attributes">
      <ref name="mei_att.lineRend.base.attribute.lform"/>
      <ref name="mei_att.lineRend.base.attribute.lwidth"/>
      <ref name="mei_att.lineRend.base.attribute.lsegs"/>
   </define>
   <define name="mei_att.lineRend.base.attribute.lform">
      <optional>
         <attribute name="lform">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes the style of a line.</a:documentation>
            <ref name="mei_data.LINEFORM"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lineRend.base.attribute.lwidth">
      <optional>
         <attribute name="lwidth">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Width of a line.</a:documentation>
            <ref name="mei_data.LINEWIDTH"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lineRend.base.attribute.lsegs">
      <optional>
         <attribute name="lsegs">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes the number of segments into which a dashed or dotted line may be divided, or the number of "peaks" of a wavy line; a pair of space-separated values (minimum and maximum, respectively) provides a range between which a rendering system-supplied value may fall, while a single value indicates a fixed amount of space; that is, the minimum and maximum values are equal.</a:documentation>
            <list>
               <data type="positiveInteger">
                  <param name="minInclusive">2</param>
               </data>
               <optional>
                  <data type="positiveInteger">
                     <param name="minInclusive">2</param>
                  </data>
               </optional>
            </list>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.lineRend.base-lsegs-check_lsegs-constraint-rule-49">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="@lsegs">
         <sch:assert test="matches(../@lform, '(dashed|dotted|wavy)')">@lform attribute
                matching "dashed", "dotted", or "wavy" required.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.meiVersion.attributes">
      <ref name="mei_att.meiVersion.attribute.meiversion"/>
   </define>
   <define name="mei_att.meiVersion.attribute.meiversion">
      <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  name="meiversion"
                  a:defaultValue="5.0">
         <a:documentation>Specifies a generic MEI version label.</a:documentation>
         <choice>
            <value>5.0</value>
            <a:documentation>MEI 5.0</a:documentation>
            <value>5.0+basic</value>
            <a:documentation>MEI 5.0+basic</a:documentation>
         </choice>
      </attribute>
   </define>
   <define name="mei_att.meterConformance.bar.attributes">
      <ref name="mei_att.meterConformance.bar.attribute.metcon"/>
   </define>
   <define name="mei_att.meterConformance.bar.attribute.metcon">
      <optional>
         <attribute name="metcon">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the relationship between the content of a measure and the prevailing meter.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.meterSigDefault.log.attributes">
      <ref name="mei_att.meterSigDefault.log.attribute.meter.count"/>
      <ref name="mei_att.meterSigDefault.log.attribute.meter.unit"/>
      <ref name="mei_att.meterSigDefault.log.attribute.meter.sym"/>
   </define>
   <define name="mei_att.meterSigDefault.log.attribute.meter.count">
      <optional>
         <attribute name="meter.count">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures the number of beats in a measure, that is, the top number of the meter signature. It must contain a decimal number or an expression that evaluates to a decimal number, such as 2+3 or 3*2.</a:documentation>
            <data type="string">
               <param name="pattern">\d+(\.\d+)?(\s*[\+\-\*/]\s*\d+(\.\d+)?)*</param>
            </data>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.meterSigDefault.log.attribute.meter.unit">
      <optional>
         <attribute name="meter.unit">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains the number indicating the beat unit, that is, the bottom number of the meter signature.</a:documentation>
            <data type="decimal">
               <param name="minExclusive">0</param>
            </data>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.meterSigDefault.log.attribute.meter.sym">
      <optional>
         <attribute name="meter.sym">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the use of a meter symbol instead of a numeric meter signature, that is, 'C' for common time or 'C' with a slash for cut time.</a:documentation>
            <ref name="mei_data.METERSIGN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.mmTempo.attributes">
      <ref name="mei_att.mmTempo.attribute.mm"/>
      <ref name="mei_att.mmTempo.attribute.mm.unit"/>
      <ref name="mei_att.mmTempo.attribute.mm.dots"/>
   </define>
   <define name="mei_att.mmTempo.attribute.mm">
      <optional>
         <attribute name="mm">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to describe tempo in terms of beats (often the meter signature denominator) per minute, ala M.M. (Maelzel’s Metronome). Do not confuse this attribute with midi.bpm or midi.mspb. In MIDI, a beat is always defined as a quarter note, *not the numerator of the time signature or the metronomic indication*.</a:documentation>
            <ref name="mei_data.TEMPOVALUE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.mmTempo.attribute.mm.unit">
      <optional>
         <attribute name="mm.unit">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures the metronomic unit.</a:documentation>
            <ref name="mei_data.DURATION"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.mmTempo.attribute.mm.dots">
      <optional>
         <attribute name="mm.dots">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the number of augmentation dots required by a dotted metronome unit.</a:documentation>
            <ref name="mei_data.AUGMENTDOT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.name.attributes">
      <ref name="mei_att.datable.attributes"/>
      <ref name="mei_att.name.attribute.nymref"/>
      <ref name="mei_att.name.attribute.role"/>
   </define>
   <define name="mei_att.name.attribute.nymref">
      <optional>
         <attribute name="nymref">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to record a pointer to the regularized form of the name elsewhere in the document.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.name-nymref-check_nymrefTarget-constraint-rule-50">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="@nymref">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@nymref attribute
                should have content.</sch:assert>
         <sch:assert role="warning"
                      test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*/@xml:id">The
                value in @nymref should correspond to the @xml:id attribute of an
                element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.name.attribute.role">
      <optional>
         <attribute name="role">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to specify further information about the entity referenced by this name, for example, the occupation of a person or the status of a place.</a:documentation>
            <text/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.nInteger.attributes">
      <ref name="mei_att.nInteger.attribute.n"/>
   </define>
   <define name="mei_att.nInteger.attribute.n">
      <optional>
         <attribute name="n">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides a numeric designation that indicates an element’s position in a sequence of similar elements. Its value must be a non-negative integer.</a:documentation>
            <data type="nonNegativeInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.nNumberLike.attributes">
      <ref name="mei_att.nNumberLike.attribute.n"/>
   </define>
   <define name="mei_att.nNumberLike.attribute.n">
      <optional>
         <attribute name="n">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides a number-like designation that indicates an element’s position in a sequence of similar elements. May not contain space characters.</a:documentation>
            <ref name="mei_data.WORD"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.note.log.attributes">
      <ref name="mei_att.augmentDots.attributes"/>
      <ref name="mei_att.cue.attributes"/>
      <ref name="mei_att.duration.log.attributes"/>
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.note.log.cmn.attributes"/>
      <ref name="mei_att.pitched.attributes"/>
   </define>
   <define name="mei_att.octave.attributes">
      <ref name="mei_att.octave.attribute.oct"/>
   </define>
   <define name="mei_att.octave.attribute.oct">
      <optional>
         <attribute name="oct">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(octave) Captures written octave information.</a:documentation>
            <ref name="mei_data.OCTAVE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.octaveDisplacement.attributes">
      <ref name="mei_att.octaveDisplacement.attribute.dis"/>
      <ref name="mei_att.octaveDisplacement.attribute.dis.place"/>
   </define>
   <define name="mei_att.octaveDisplacement.attribute.dis">
      <optional>
         <attribute name="dis">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the amount of octave displacement.</a:documentation>
            <ref name="mei_data.OCTAVE.DIS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.octaveDisplacement.attribute.dis.place">
      <optional>
         <attribute name="dis.place">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the direction of octave displacement.</a:documentation>
            <ref name="mei_data.STAFFREL.basic"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.ornam.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.ornamentAccid.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
   </define>
   <define name="mei_att.pb.log.attributes">
      <empty/>
   </define>
   <define name="mei_att.pitch.attributes">
      <ref name="mei_att.pitch.attribute.pname"/>
   </define>
   <define name="mei_att.pitch.attribute.pname">
      <optional>
         <attribute name="pname">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(pitch name) Contains a written pitch name.</a:documentation>
            <ref name="mei_data.PITCHNAME"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pitched.attributes">
      <ref name="mei_att.pitch.attributes"/>
      <ref name="mei_att.octave.attributes"/>
   </define>
   <define name="mei_att.placementRelEvent.attributes">
      <ref name="mei_att.placementRelEvent.attribute.place"/>
   </define>
   <define name="mei_att.placementRelEvent.attribute.place">
      <optional>
         <attribute name="place">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures the placement of the item with respect to the event with which it is associated.</a:documentation>
            <ref name="mei_data.STAFFREL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.placementRelStaff.attributes">
      <ref name="mei_att.placementRelStaff.attribute.place"/>
   </define>
   <define name="mei_att.placementRelStaff.attribute.place">
      <optional>
         <attribute name="place">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures the placement of the item with respect to the staff with which it is associated.</a:documentation>
            <ref name="mei_data.STAFFREL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.plist.attributes">
      <ref name="mei_att.plist.attribute.plist"/>
   </define>
   <define name="mei_att.plist.attribute.plist">
      <optional>
         <attribute name="plist">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">When the target attribute is present, plist identifies the active participants; that is, those entities pointed "from", in a relationship with the specified target(s). When the target attribute is not present, it identifies participants in a mutual relationship.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.URI"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.plist-plist-check_plistTarget-constraint-rule-51">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="@plist">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@plist attribute
                should have content.</sch:assert>
         <sch:assert role="warning"
                      test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*/@xml:id">Each
                value in @plist should correspond to the @xml:id attribute of an
                element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.repeatMark.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.duration.additive.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
      <ref name="mei_att.repeatMark.log.attribute.func"/>
   </define>
   <define name="mei_att.repeatMark.log.attribute.func">
      <attribute name="func">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the function of the mark, usually implying a corresponding form.</a:documentation>
         <choice>
            <value>coda</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Coda (SMuFL E048 or Unicode 1D10C).</a:documentation>
            <value>segno</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Segno (SMuFL E047 or Unicode 1D10B).</a:documentation>
            <value>dalSegno</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Dal segno (SMuFL E045 or Unicode 1D109).</a:documentation>
            <value>daCapo</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Da capo (SMuFL E046 or Unicode 1D10A).</a:documentation>
            <value>fine</value>
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Fine. (text)</a:documentation>
         </choice>
      </attribute>
   </define>
   <define name="mei_att.rest.log.attributes">
      <ref name="mei_att.augmentDots.attributes"/>
      <ref name="mei_att.cue.attributes"/>
      <ref name="mei_att.duration.log.attributes"/>
      <ref name="mei_att.event.attributes"/>
   </define>
   <define name="mei_att.sb.log.attributes">
      <empty/>
   </define>
   <define name="mei_att.scalable.attributes">
      <ref name="mei_att.scalable.attribute.scale"/>
   </define>
   <define name="mei_att.scalable.attribute.scale">
      <optional>
         <attribute name="scale">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Scale factor to be applied to the feature to make it the desired display size.</a:documentation>
            <ref name="mei_data.PERCENT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.section.log.attributes">
      <empty/>
   </define>
   <define name="mei_att.space.log.attributes">
      <ref name="mei_att.augmentDots.attributes"/>
      <ref name="mei_att.duration.log.attributes"/>
      <ref name="mei_att.event.attributes"/>
   </define>
   <define name="mei_att.staffDef.log.attributes">
      <ref name="mei_att.cleffing.log.attributes"/>
      <ref name="mei_att.keySigDefault.log.attributes"/>
      <ref name="mei_att.meterSigDefault.log.attributes"/>
      <ref name="mei_att.transposition.attributes"/>
      <ref name="mei_att.staffDef.log.cmn.attributes"/>
      <ref name="mei_att.staffDef.log.attribute.lines"/>
   </define>
   <define name="mei_att.staffDef.log.attribute.lines">
      <optional>
         <attribute name="lines">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the number of staff lines.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.staffGroupingSym.attributes">
      <ref name="mei_att.staffGroupingSym.attribute.symbol"/>
   </define>
   <define name="mei_att.staffGroupingSym.attribute.symbol">
      <optional>
         <attribute name="symbol">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Specifies the symbol used to group a set of staves.</a:documentation>
            <choice>
               <value>brace</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Curved symbol, i.e., {.</a:documentation>
               <value>bracket</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Square symbol, i.e., [, but with curved/angled top and bottom segments.</a:documentation>
               <value>bracketsq</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Square symbol, i.e., [, with horizontal top and bottom segments.</a:documentation>
               <value>line</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Line symbol, i.e., |, (wide) line without top and bottom curved/horizontal segments.</a:documentation>
               <value>none</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Grouping symbol missing.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.staffIdent.attributes">
      <ref name="mei_att.staffIdent.attribute.staff"/>
   </define>
   <define name="mei_att.staffIdent.attribute.staff">
      <optional>
         <attribute name="staff">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Signifies the staff on which a notated event occurs or to which a control event applies. Mandatory when applicable.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="positiveInteger"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.startEndId.attributes">
      <ref name="mei_att.startId.attributes"/>
      <ref name="mei_att.startEndId.attribute.endid"/>
   </define>
   <define name="mei_att.startEndId.attribute.endid">
      <optional>
         <attribute name="endid">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the final element in a sequence of events to which the feature applies.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.startEndId-endid-check_endidTarget-constraint-rule-52">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="@endid">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@endid attribute
                should have content.</sch:assert>
         <sch:assert role="warning"
                      test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*/@xml:id">The
                value in @endid should correspond to the @xml:id attribute of an
                element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.startId.attributes">
      <ref name="mei_att.startId.attribute.startid"/>
   </define>
   <define name="mei_att.startId.attribute.startid">
      <optional>
         <attribute name="startid">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds a reference to the first element in a sequence of events to which the feature applies.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
             id="mei-att.startId-startid-check_startidTarget-constraint-rule-53">
      <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                 xmlns:rng="http://relaxng.org/ns/structure/1.0"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                 xmlns:xi="http://www.w3.org/2001/XInclude"
                 context="@startid">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@startid attribute
                should have content.</sch:assert>
         <sch:assert role="warning"
                      test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*/@xml:id">The
                value in @startid should correspond to the @xml:id attribute of an
                element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.stems.attributes">
      <ref name="mei_att.stems.attribute.stem.dir"/>
      <ref name="mei_att.stems.attribute.stem.len"/>
      <ref name="mei_att.stems.attribute.stem.mod"/>
   </define>
   <define name="mei_att.stems.attribute.stem.dir">
      <optional>
         <attribute name="stem.dir">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes the direction of a stem.</a:documentation>
            <ref name="mei_data.STEMDIRECTION"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.stems.attribute.stem.len">
      <optional>
         <attribute name="stem.len">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes the stem length.</a:documentation>
            <ref name="mei_data.MEASUREMENTUNSIGNED"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.stems.attribute.stem.mod">
      <optional>
         <attribute name="stem.mod">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes any stem "modifiers"; that is, symbols rendered on the stem, such as tremolo or Sprechstimme indicators.</a:documentation>
            <ref name="mei_data.STEMMODIFIER"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.syl.log.attributes">
      <ref name="mei_att.syl.log.attribute.con"/>
      <ref name="mei_att.syl.log.attribute.wordpos"/>
   </define>
   <define name="mei_att.syl.log.attribute.con">
      <optional>
         <attribute name="con">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes the symbols typically used to indicate breaks between syllables and their functions.</a:documentation>
            <choice>
               <value>s</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Space (word separator).</a:documentation>
               <value>d</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Dash (syllable separator).</a:documentation>
               <value>u</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Underscore (syllable extension).</a:documentation>
               <value>t</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tilde (syllable elision).</a:documentation>
               <value>c</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Circumflex [angled line above] (syllable elision).</a:documentation>
               <value>v</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Caron [angled line below] (syllable elision).</a:documentation>
               <value>i</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Inverted breve [curved line above] (syllable elision).</a:documentation>
               <value>b</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Breve [curved line below] (syllable elision).</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.syl.log.attribute.wordpos">
      <optional>
         <attribute name="wordpos">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the position of a syllable within a word.</a:documentation>
            <choice>
               <value>i</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(initial) first syllable.</a:documentation>
               <value>m</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(medial) neither first nor last syllable.</a:documentation>
               <value>s</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(single) single syllable.</a:documentation>
               <value>t</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(terminal) last syllable.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tempo.log.attributes">
      <ref name="mei_att.controlEvent.attributes"/>
      <ref name="mei_att.mmTempo.attributes"/>
      <ref name="mei_att.startEndId.attributes"/>
      <ref name="mei_att.timestamp2.log.attributes"/>
      <ref name="mei_att.tempo.log.attribute.func"/>
   </define>
   <define name="mei_att.tempo.log.attribute.func">
      <optional>
         <attribute name="func">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the function of a tempo indication.</a:documentation>
            <choice>
               <value>continuous</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Marks a gradual change of tempo, such as "accel." or "rit."</a:documentation>
               <value>instantaneous</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Represents a static tempo instruction, such as a textual term like "Adagio", a metronome marking like "♩=70", or a combination of text and metronome indication.</a:documentation>
               <value>metricmod</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures a change in pulse rate (tempo) and/or pulse grouping (subdivision) in an "equation" of the form [tempo before change] = [tempo after change].</a:documentation>
               <value>precedente</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates a change in pulse rate (tempo) and/or pulse grouping (subdivision) in an "equation" of the form [tempo after change] = [tempo before change]. The term "precedente" often appears following the "equation" to distinguish this kind of historical usage from the modern metric modulation form.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.textRendition.attributes">
      <ref name="mei_att.textRendition.attribute.altrend"/>
      <ref name="mei_att.textRendition.attribute.rend"/>
   </define>
   <define name="mei_att.textRendition.attribute.altrend">
      <optional>
         <attribute name="altrend">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to extend the values of the rend attribute.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="NMTOKEN"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.textRendition.attribute.rend">
      <optional>
         <attribute name="rend">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(rendition) Captures the appearance of the element’s contents using MEI-defined descriptors.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.TEXTRENDITION"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.timestamp.log.attributes">
      <ref name="mei_att.timestamp.log.attribute.tstamp"/>
   </define>
   <define name="mei_att.timestamp.log.attribute.tstamp">
      <optional>
         <attribute name="tstamp">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(time stamp) Encodes the onset time in terms of musical time, i.e., beats[.fractional beat part], as expressed in the written time signature.</a:documentation>
            <ref name="mei_data.BEAT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.timestamp2.log.attributes">
      <ref name="mei_att.timestamp2.log.attribute.tstamp2"/>
   </define>
   <define name="mei_att.timestamp2.log.attribute.tstamp2">
      <optional>
         <attribute name="tstamp2">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes the ending point of an event, i.e., a count of measures plus a beat location in the ending measure.</a:documentation>
            <ref name="mei_data.MEASUREBEAT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.transposition.attributes">
      <ref name="mei_att.transposition.attribute.trans.diat"/>
      <ref name="mei_att.transposition.attribute.trans.semi"/>
   </define>
   <define name="mei_att.transposition.attribute.trans.diat">
      <optional>
         <attribute name="trans.diat">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(transposition (diatonic)) Records the amount of diatonic pitch shift, e.g., C to C♯ = 0, C to D♭ = 1, necessary to calculate the sounded pitch from the written one.</a:documentation>
            <data type="integer"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.transposition.attribute.trans.semi">
      <optional>
         <attribute name="trans.semi">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(transposition (semitones)) Records the amount of pitch shift in semitones, e.g., C to C♯ = 1, C to D♭ = 1, necessary to calculate the sounded pitch from the written one.</a:documentation>
            <data type="integer"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tuning.attributes">
      <ref name="mei_att.tuning.attribute.tune.Hz"/>
      <ref name="mei_att.tuning.attribute.tune.pname"/>
      <ref name="mei_att.tuning.attribute.tune.temper"/>
   </define>
   <define name="mei_att.tuning.attribute.tune.Hz">
      <optional>
         <attribute name="tune.Hz">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds a value for cycles per second, i.e., Hertz, for a tuning reference pitch.</a:documentation>
            <data type="decimal"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tuning.attribute.tune.pname">
      <optional>
         <attribute name="tune.pname">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds the pitch name of a tuning reference pitch, i.e., the central tone of a tuning system.</a:documentation>
            <ref name="mei_data.PITCHNAME"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tuning.attribute.tune.temper">
      <optional>
         <attribute name="tune.temper">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides an indication of the tuning system, just, for example.</a:documentation>
            <ref name="mei_data.TEMPERAMENT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.typed.attributes">
      <ref name="mei_att.typed.attribute.type"/>
   </define>
   <define name="mei_att.typed.attribute.type">
      <optional>
         <attribute name="type">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Designation which characterizes the element in some sense, using any convenient classification scheme or typology that employs single-token labels.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="NMTOKEN"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.typography.attributes">
      <ref name="mei_att.typography.attribute.fontfam"/>
      <ref name="mei_att.typography.attribute.fontname"/>
      <ref name="mei_att.typography.attribute.fontsize"/>
      <ref name="mei_att.typography.attribute.fontstyle"/>
      <ref name="mei_att.typography.attribute.fontweight"/>
      <ref name="mei_att.typography.attribute.letterspacing"/>
      <ref name="mei_att.typography.attribute.lineheight"/>
   </define>
   <define name="mei_att.typography.attribute.fontfam">
      <optional>
         <attribute name="fontfam">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains the name of a font-family.</a:documentation>
            <ref name="mei_data.FONTFAMILY"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.typography.attribute.fontname">
      <optional>
         <attribute name="fontname">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds the name of a font.</a:documentation>
            <ref name="mei_data.FONTNAME"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.typography.attribute.fontsize">
      <optional>
         <attribute name="fontsize">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the size of a font expressed in printers' points, i.e., 1/72nd of an inch, relative terms, e.g., small, larger, etc., or percentage values relative to normal size, e.g., 125%.</a:documentation>
            <ref name="mei_data.FONTSIZE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.typography.attribute.fontstyle">
      <optional>
         <attribute name="fontstyle">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the style of a font, i.e., italic, oblique, or normal.</a:documentation>
            <ref name="mei_data.FONTSTYLE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.typography.attribute.fontweight">
      <optional>
         <attribute name="fontweight">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to indicate bold type.</a:documentation>
            <ref name="mei_data.FONTWEIGHT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.typography.attribute.letterspacing">
      <optional>
         <attribute name="letterspacing">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates letter spacing (aka tracking) in analogy to the CSS letter-spacing property.</a:documentation>
            <ref name="mei_data.MEASUREMENTTYPOGRAPHYSIGNED"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.typography.attribute.lineheight">
      <optional>
         <attribute name="lineheight">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates line height in analogy to the CSS line-height property.</a:documentation>
            <choice>
               <ref name="mei_data.MEASUREMENTTYPOGRAPHYUNSIGNED"/>
               <ref name="mei_data.PERCENT"/>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.verticalAlign.attributes">
      <ref name="mei_att.verticalAlign.attribute.valign"/>
   </define>
   <define name="mei_att.verticalAlign.attribute.valign">
      <optional>
         <attribute name="valign">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records vertical alignment.</a:documentation>
            <ref name="mei_data.VERTICALALIGNMENT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.visualOffset.attributes">
      <ref name="mei_att.visualOffset.ho.attributes"/>
      <ref name="mei_att.visualOffset.vo.attributes"/>
   </define>
   <define name="mei_att.visualOffset.ho.attributes">
      <ref name="mei_att.visualOffset.ho.attribute.ho"/>
   </define>
   <define name="mei_att.visualOffset.ho.attribute.ho">
      <optional>
         <attribute name="ho">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records a horizontal adjustment to a feature’s programmatically-determined location in terms of staff interline distance; that is, in units of 1/2 the distance between adjacent staff lines.</a:documentation>
            <ref name="mei_data.MEASUREMENTSIGNED"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.visualOffset.vo.attributes">
      <ref name="mei_att.visualOffset.vo.attribute.vo"/>
   </define>
   <define name="mei_att.visualOffset.vo.attribute.vo">
      <optional>
         <attribute name="vo">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the vertical adjustment of a feature’s programmatically-determined location in terms of staff interline distance; that is, in units of 1/2 the distance between adjacent staff lines.</a:documentation>
            <ref name="mei_data.MEASUREMENTSIGNED"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.visualOffset2.attributes">
      <ref name="mei_att.visualOffset2.ho.attributes"/>
      <ref name="mei_att.visualOffset2.vo.attributes"/>
   </define>
   <define name="mei_att.visualOffset2.ho.attributes">
      <ref name="mei_att.visualOffset2.ho.attribute.startho"/>
      <ref name="mei_att.visualOffset2.ho.attribute.endho"/>
   </define>
   <define name="mei_att.visualOffset2.ho.attribute.startho">
      <optional>
         <attribute name="startho">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the horizontal adjustment of a feature’s programmatically-determined start point.</a:documentation>
            <ref name="mei_data.MEASUREMENTSIGNED"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.visualOffset2.ho.attribute.endho">
      <optional>
         <attribute name="endho">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the horizontal adjustment of a feature’s programmatically-determined end point.</a:documentation>
            <ref name="mei_data.MEASUREMENTSIGNED"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.visualOffset2.vo.attributes">
      <ref name="mei_att.visualOffset2.vo.attribute.startvo"/>
      <ref name="mei_att.visualOffset2.vo.attribute.endvo"/>
   </define>
   <define name="mei_att.visualOffset2.vo.attribute.startvo">
      <optional>
         <attribute name="startvo">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records a vertical adjustment of a feature’s programmatically-determined start point.</a:documentation>
            <ref name="mei_data.MEASUREMENTSIGNED"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.visualOffset2.vo.attribute.endvo">
      <optional>
         <attribute name="endvo">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records a vertical adjustment of a feature’s programmatically-determined end point.</a:documentation>
            <ref name="mei_data.MEASUREMENTSIGNED"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.voltaGroupingSym.attributes">
      <ref name="mei_att.voltaGroupingSym.attribute.voltasym"/>
   </define>
   <define name="mei_att.voltaGroupingSym.attribute.voltasym">
      <optional>
         <attribute name="voltasym">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Specifies the symbol used to group lyrics.</a:documentation>
            <choice>
               <value>brace</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Curved symbol, i.e., {.</a:documentation>
               <value>bracket</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Square symbol, i.e., [, but with curved/angled top and bottom segments.</a:documentation>
               <value>bracketsq</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Square symbol, i.e., [, with horizontal top and bottom segments.</a:documentation>
               <value>line</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Line symbol, i.e., |, (wide) line without top and bottom curved/horizontal segments.</a:documentation>
               <value>none</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Grouping symbol missing.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.whitespace.attributes">
      <ref name="mei_att.whitespace.attribute.xmlspace"/>
   </define>
   <define name="mei_att.whitespace.attribute.xmlspace">
      <optional>
         <attribute name="xml:space">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Allows one to signal to an application whether an element’s white space is "significant". The behavior of xml:space cascades to all descendant elements, but it can be turned off locally by setting the xml:space attribute to the value default.</a:documentation>
            <choice>
               <value>default</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Allows the application to handle white space as necessary. Not including an xml:space attribute produces the same result as using the default value.</a:documentation>
               <value>preserve</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Instructs the application to maintain white space "as-is", suggesting that it might have meaning.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.width.attributes">
      <ref name="mei_att.width.attribute.width"/>
   </define>
   <define name="mei_att.width.attribute.width">
      <optional>
         <attribute name="width">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Measurement of the horizontal dimension of an entity.</a:documentation>
            <ref name="mei_data.MEASUREMENTUNSIGNED"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_model.addressLike">
      <notAllowed/>
   </define>
   <define name="mei_model.addressLike_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.addressLike_sequence">
      <empty/>
   </define>
   <define name="mei_model.addressLike_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.addressLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.addressLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.annotLike">
      <notAllowed/>
   </define>
   <define name="mei_model.annotLike_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.annotLike_sequence">
      <empty/>
   </define>
   <define name="mei_model.annotLike_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.annotLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.annotLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.biblLike">
      <notAllowed/>
   </define>
   <define name="mei_model.biblLike_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.biblLike_sequence">
      <empty/>
   </define>
   <define name="mei_model.biblLike_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.biblLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.biblLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.chordPart">
      <choice>
         <ref name="mei_artic"/>
         <ref name="mei_note"/>
      </choice>
   </define>
   <define name="mei_model.controlEventLike">
      <choice>
         <ref name="mei_gliss"/>
         <ref name="mei_repeatMark"/>
         <ref name="mei_model.fingeringLike"/>
         <ref name="mei_model.controlEventLike.harmony"/>
         <ref name="mei_caesura"/>
         <ref name="mei_dir"/>
         <ref name="mei_dynam"/>
         <ref name="mei_ornam"/>
         <ref name="mei_tempo"/>
      </choice>
   </define>
   <define name="mei_model.dateLike">
      <notAllowed/>
   </define>
   <define name="mei_model.dateLike_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.dateLike_sequence">
      <empty/>
   </define>
   <define name="mei_model.dateLike_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.dateLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.dateLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.dimLike">
      <notAllowed/>
   </define>
   <define name="mei_model.dimLike_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.dimLike_sequence">
      <empty/>
   </define>
   <define name="mei_model.dimLike_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.dimLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.dimLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.editorialLike">
      <notAllowed/>
   </define>
   <define name="mei_model.editorialLike_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.editorialLike_sequence">
      <empty/>
   </define>
   <define name="mei_model.editorialLike_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.editorialLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.editorialLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.endingLike">
      <choice>
         <ref name="mei_ending"/>
      </choice>
   </define>
   <define name="mei_model.eventLike">
      <choice>
         <ref name="mei_model.keySigLike"/>
         <ref name="mei_model.meterSigLike"/>
         <ref name="mei_chord"/>
         <ref name="mei_clef"/>
         <ref name="mei_clefGrp"/>
         <ref name="mei_note"/>
         <ref name="mei_rest"/>
         <ref name="mei_space"/>
      </choice>
   </define>
   <define name="mei_model.headLike">
      <notAllowed/>
   </define>
   <define name="mei_model.identifierLike">
      <notAllowed/>
   </define>
   <define name="mei_model.identifierLike_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.identifierLike_sequence">
      <empty/>
   </define>
   <define name="mei_model.identifierLike_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.identifierLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.identifierLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.instrDefLike">
      <choice>
         <ref name="mei_instrDef"/>
      </choice>
   </define>
   <define name="mei_model.keySigLike">
      <notAllowed/>
   </define>
   <define name="mei_model.keySigLike_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.keySigLike_sequence">
      <empty/>
   </define>
   <define name="mei_model.keySigLike_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.keySigLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.keySigLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.labelLike">
      <choice>
         <ref name="mei_label"/>
         <ref name="mei_labelAbbr"/>
      </choice>
   </define>
   <define name="mei_model.layerDefLike">
      <notAllowed/>
   </define>
   <define name="mei_model.layerLike">
      <choice>
         <ref name="mei_layer"/>
      </choice>
   </define>
   <define name="mei_model.layerPart">
      <choice>
         <ref name="mei_model.layerPart.cmn"/>
         <ref name="mei_model.eventLike"/>
      </choice>
   </define>
   <define name="mei_model.lbLike">
      <choice>
         <ref name="mei_lb"/>
      </choice>
   </define>
   <define name="mei_model.lbLike_alternation">
      <choice>
         <ref name="mei_lb"/>
      </choice>
   </define>
   <define name="mei_model.lbLike_sequence">
      <ref name="mei_lb"/>
   </define>
   <define name="mei_model.lbLike_sequenceOptional">
      <optional>
         <ref name="mei_lb"/>
      </optional>
   </define>
   <define name="mei_model.lbLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_lb"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.lbLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_lb"/>
      </oneOrMore>
   </define>
   <define name="mei_model.mdivLike">
      <choice>
         <ref name="mei_mdiv"/>
      </choice>
   </define>
   <define name="mei_model.measurementLike">
      <choice>
         <ref name="mei_model.numLike"/>
      </choice>
   </define>
   <define name="mei_model.measurementLike_alternation">
      <choice>
         <ref name="mei_model.numLike_alternation"/>
      </choice>
   </define>
   <define name="mei_model.measurementLike_sequence">
      <ref name="mei_model.numLike_sequence"/>
   </define>
   <define name="mei_model.measurementLike_sequenceOptional">
      <optional>
         <ref name="mei_model.numLike_sequenceOptional"/>
      </optional>
   </define>
   <define name="mei_model.measurementLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_model.numLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.measurementLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_model.numLike_sequenceRepeatable"/>
      </oneOrMore>
   </define>
   <define name="mei_model.meterSigLike">
      <notAllowed/>
   </define>
   <define name="mei_model.meterSigLike_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.meterSigLike_sequence">
      <empty/>
   </define>
   <define name="mei_model.meterSigLike_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.meterSigLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.meterSigLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.milestoneLike.music">
      <choice>
         <ref name="mei_model.pbLike"/>
         <ref name="mei_sb"/>
      </choice>
   </define>
   <define name="mei_model.nameLike">
      <choice>
         <ref name="mei_model.nameLike.agent"/>
         <ref name="mei_model.nameLike.place"/>
      </choice>
   </define>
   <define name="mei_model.nameLike_alternation">
      <choice>
         <ref name="mei_model.nameLike.agent_alternation"/>
         <ref name="mei_model.nameLike.place_alternation"/>
      </choice>
   </define>
   <define name="mei_model.nameLike_sequence">
      <ref name="mei_model.nameLike.agent_sequence"/>
      <ref name="mei_model.nameLike.place_sequence"/>
   </define>
   <define name="mei_model.nameLike_sequenceOptional">
      <optional>
         <ref name="mei_model.nameLike.agent_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.nameLike.place_sequenceOptional"/>
      </optional>
   </define>
   <define name="mei_model.nameLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_model.nameLike.agent_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.nameLike.place_sequenceOptionalRepeatable"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.nameLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_model.nameLike.agent_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.nameLike.place_sequenceRepeatable"/>
      </oneOrMore>
   </define>
   <define name="mei_model.noteModifierLike">
      <choice>
         <ref name="mei_accid"/>
         <ref name="mei_artic"/>
      </choice>
   </define>
   <define name="mei_model.numLike">
      <notAllowed/>
   </define>
   <define name="mei_model.numLike_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.numLike_sequence">
      <empty/>
   </define>
   <define name="mei_model.numLike_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.numLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.numLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.pbLike">
      <choice>
         <ref name="mei_pb"/>
      </choice>
   </define>
   <define name="mei_model.pLike">
      <notAllowed/>
   </define>
   <define name="mei_model.relationLike">
      <notAllowed/>
   </define>
   <define name="mei_model.relationLike_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.relationLike_sequence">
      <empty/>
   </define>
   <define name="mei_model.relationLike_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.relationLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.relationLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.rendLike">
      <choice>
         <ref name="mei_rend"/>
      </choice>
   </define>
   <define name="mei_model.rendLike_alternation">
      <choice>
         <ref name="mei_rend"/>
      </choice>
   </define>
   <define name="mei_model.rendLike_sequence">
      <ref name="mei_rend"/>
   </define>
   <define name="mei_model.rendLike_sequenceOptional">
      <optional>
         <ref name="mei_rend"/>
      </optional>
   </define>
   <define name="mei_model.rendLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_rend"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.rendLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_rend"/>
      </oneOrMore>
   </define>
   <define name="mei_model.repositoryLike">
      <notAllowed/>
   </define>
   <define name="mei_model.repositoryLike_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.repositoryLike_sequence">
      <empty/>
   </define>
   <define name="mei_model.repositoryLike_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.repositoryLike_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.repositoryLike_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.resourceLike">
      <notAllowed/>
   </define>
   <define name="mei_model.respLike">
      <choice>
         <ref name="mei_model.respLikePart"/>
         <ref name="mei_respStmt"/>
      </choice>
   </define>
   <define name="mei_model.respLikePart">
      <choice>
         <ref name="mei_arranger"/>
         <ref name="mei_composer"/>
         <ref name="mei_lyricist"/>
      </choice>
   </define>
   <define name="mei_model.scoreDefLike">
      <choice>
         <ref name="mei_scoreDef"/>
      </choice>
   </define>
   <define name="mei_model.scoreLike">
      <choice>
         <ref name="mei_score"/>
      </choice>
   </define>
   <define name="mei_model.scorePart">
      <choice>
         <ref name="mei_model.endingLike"/>
         <ref name="mei_model.sectionLike"/>
      </choice>
   </define>
   <define name="mei_model.sectionLike">
      <choice>
         <ref name="mei_section"/>
      </choice>
   </define>
   <define name="mei_model.sectionPart">
      <choice>
         <ref name="mei_model.sectionPart.cmn"/>
         <ref name="mei_model.endingLike"/>
         <ref name="mei_model.scoreDefLike"/>
         <ref name="mei_model.sectionLike"/>
         <ref name="mei_model.staffDefLike"/>
      </choice>
   </define>
   <define name="mei_model.staffDefLike">
      <choice>
         <ref name="mei_staffDef"/>
      </choice>
   </define>
   <define name="mei_model.staffDefPart">
      <choice>
         <ref name="mei_model.keySigLike"/>
         <ref name="mei_model.meterSigLike"/>
         <ref name="mei_clef"/>
         <ref name="mei_clefGrp"/>
      </choice>
   </define>
   <define name="mei_model.staffGrpLike">
      <choice>
         <ref name="mei_staffGrp"/>
      </choice>
   </define>
   <define name="mei_model.staffLike">
      <choice>
         <ref name="mei_staff"/>
      </choice>
   </define>
   <define name="mei_model.staffPart">
      <choice>
         <ref name="mei_model.ossiaLike"/>
         <ref name="mei_model.layerLike"/>
      </choice>
   </define>
   <define name="mei_model.sylLike">
      <choice>
         <ref name="mei_syl"/>
      </choice>
   </define>
   <define name="mei_model.textComponentLike">
      <choice>
         <ref name="mei_model.pLike"/>
      </choice>
   </define>
   <define name="mei_model.textPhraseLike">
      <choice>
         <ref name="mei_model.pbLike"/>
         <ref name="mei_model.textPhraseLike.limited"/>
      </choice>
   </define>
   <define name="mei_model.textPhraseLike.limited">
      <choice>
         <ref name="mei_model.addressPart"/>
         <ref name="mei_model.nameLike.label"/>
         <ref name="mei_model.addressLike"/>
         <ref name="mei_model.annotLike"/>
         <ref name="mei_model.biblLike"/>
         <ref name="mei_model.dateLike"/>
         <ref name="mei_model.dimLike"/>
         <ref name="mei_model.editorialLike"/>
         <ref name="mei_model.identifierLike"/>
         <ref name="mei_model.lbLike"/>
         <ref name="mei_model.measurementLike"/>
         <ref name="mei_model.nameLike"/>
         <ref name="mei_model.relationLike"/>
         <ref name="mei_model.rendLike"/>
         <ref name="mei_model.titleLike"/>
         <ref name="mei_symbol"/>
      </choice>
   </define>
   <define name="mei_model.titleLike">
      <choice>
         <ref name="mei_title"/>
      </choice>
   </define>
   <define name="mei_model.titleLike_alternation">
      <choice>
         <ref name="mei_title"/>
      </choice>
   </define>
   <define name="mei_model.titleLike_sequence">
      <ref name="mei_title"/>
   </define>
   <define name="mei_model.titleLike_sequenceOptional">
      <optional>
         <ref name="mei_title"/>
      </optional>
   </define>
   <define name="mei_model.titleLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_title"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.titleLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_title"/>
      </oneOrMore>
   </define>
   <define name="mei_accid">
      <element name="accid">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(accidental) Records a temporary alteration to the pitch of a note.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.accid.log.attributes"/>
         <ref name="mei_att.accid.vis.attributes"/>
         <ref name="mei_att.accid.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_arranger">
      <element name="arranger">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A person or organization who transcribes a musical composition, usually for a different medium from that of the original; in an arrangement the musical substance remains essentially unchanged.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_artic">
      <element name="artic">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(articulation) An indication of how to play a note or chord.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.artic.log.attributes"/>
         <ref name="mei_att.artic.vis.attributes"/>
         <ref name="mei_att.artic.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_body">
      <element name="body">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains the whole of a single musical text, excluding any front or back matter.</a:documentation>
         <oneOrMore>
            <choice>
               <ref name="mei_model.mdivLike"/>
            </choice>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_caesura">
      <element name="caesura">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Break, pause, or interruption in the normal tempo of a composition. Typically indicated by "railroad tracks", i.e., two diagonal slashes.</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-caesura-caesura_start-type_attributes_required-constraint-rule-54">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:caesura">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.caesura.ges.attributes"/>
         <ref name="mei_att.caesura.log.attributes"/>
         <ref name="mei_att.caesura.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_chord">
      <element name="chord">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A simultaneous sounding of two or more notes in the same layer *with the same duration*.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.chordPart"/>
               <ref name="mei_model.sylLike"/>
               <ref name="mei_model.verseLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.chord.log.attributes"/>
         <ref name="mei_att.chord.vis.attributes"/>
         <ref name="mei_att.chord.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_clef">
      <element name="clef">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indication of the exact location of a particular note on the staff and, therefore, the other notes as well.</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-clef-Clef_position_lines-constraint-rule-55">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:clef[matches(@shape, '[FCG]')][ancestor::mei:staffDef[@lines]]">
               <sch:let name="thisstaff" value="ancestor::mei:staffDef/@n"/>
               <sch:assert test="number(@line) &lt;= number(ancestor::mei:staffDef[@n=$thisstaff and @lines][1]/@lines)">The clef position must be less than or equal to the number of lines of an ancestor
            staff.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-clef-Clef_position_nolines-constraint-rule-56">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:clef[ancestor::mei:staffDef[not(@lines)]]">
               <sch:let name="thisstaff" value="ancestor::mei:staffDef/@n"/>
               <sch:assert test="number(@line) &lt;= number(preceding::mei:staffDef[@n=$thisstaff and @lines][1]/@lines)">The clef position must be less than or equal to the number of lines of a preceding
            staff.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.event.attributes"/>
         <ref name="mei_att.clef.log.attributes"/>
         <ref name="mei_att.clef.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_clefGrp">
      <element name="clefGrp">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(clef group) A set of simultaneously-occurring clefs.</a:documentation>
         <oneOrMore>
            <ref name="mei_clef"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.event.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_composer">
      <element name="composer">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The name of the creator of the intellectual content of a musical work.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_date">
      <element name="date">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A string identifying a point in time or the time period between two such points.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.calendared.attributes"/>
         <ref name="mei_att.datable.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_dir">
      <element name="dir">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(directive) An instruction expressed as a combination of text and symbols, typically above, below, or between staves, but not on the staff — that is not encoded elsewhere in more specific elements, like <code xmlns="http://www.w3.org/1999/xhtml">&lt;tempo&gt;</code>, <code xmlns="http://www.w3.org/1999/xhtml">&lt;dynam&gt;</code> or <code xmlns="http://www.w3.org/1999/xhtml">&lt;repeatMark&gt;</code>.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-dir-dir_start-type_attributes_required-constraint-rule-57">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:dir[not(ancestor::mei:syllable)]">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.dir.log.attributes"/>
         <ref name="mei_att.dir.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_dynam">
      <element name="dynam">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(dynamic) Indication of the volume of a note, phrase, or section of music.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-dynam-dynam_start-type_attributes_required-constraint-rule-58">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:dynam">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real"> Must have one of
            the attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-dynam-dynam_end-type_attributes-constraint-rule-59">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:dynam[@val2]">
               <sch:assert test="@dur or @dur.ges or @endid or @tstamp2">When @val2 is present, either
            @dur, @dur.ges, @endid, or @tstamp2 must also be present.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.dynam.log.attributes"/>
         <ref name="mei_att.dynam.vis.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_ending">
      <element name="ending">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Alternative ending for a repeated passage of music; i.e., prima volta, seconda volta, etc.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.relationLike"/>
               <ref name="mei_model.scoreDefLike"/>
               <ref name="mei_model.sectionLike"/>
               <ref name="mei_model.sectionPart.cmn"/>
               <ref name="mei_model.staffDefLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.ending.log.attributes"/>
         <ref name="mei_att.ending.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_label">
      <element name="label">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A container for document text that identifies the feature to which it is attached. For a "tool tip" or other generated label, use the <code xmlns="http://www.w3.org/1999/xhtml">@label</code> attribute.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_labelAbbr">
      <element name="labelAbbr">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A label on the pages following the first.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_layer">
      <element name="layer">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">An independent stream of events on a staff.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.layerPart"/>
               <ref name="mei_model.milestoneLike.music"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.basic.attributes"/>
         <ref name="mei_att.labelled.attributes"/>
         <ref name="mei_att.nInteger.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.layer.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_lb">
      <element name="lb">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(line beginning) An empty formatting element that forces text to begin on a new line.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_lyricist">
      <element name="lyricist">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Person or organization who is a writer of the text of a song.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_mdiv">
      <element name="mdiv">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(musical division) (musical division) – Contains a subdivision of the body of a musical text.</a:documentation>
         <choice>
            <ref name="mei_model.scoreLike"/>
            <zeroOrMore>
               <ref name="mei_model.mdivLike"/>
            </zeroOrMore>
         </choice>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.mdiv.ges.attributes"/>
         <optional>
            <attribute name="n">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides a number-like designation that indicates an element's position in a sequence of similar elements. May not contain space characters.</a:documentation>
               <ref name="mei_data.WORD"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_mei">
      <element name="mei">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a single MEI-conformant document, consisting of an MEI header and a musical text, either in isolation or as part of an meiCorpus element.</a:documentation>
         <ref name="mei_meiHead"/>
         <ref name="mei_music"/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-mei-Check_staff-constraint-rule-60">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:*[@staff]">
               <sch:assert test="every $i in tokenize(normalize-space(@staff), '\s+') satisfies $i=//mei:staffDef/@n">The values in @staff must correspond to @n attribute of a staffDef
            element.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.id.attributes"/>
         <ref name="mei_att.meiVersion.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_music">
      <element name="music">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a single musical text of any kind, whether unitary or composite, for example, an etude, opera, song cycle, symphony, or anthology of piano solos.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.resourceLike"/>
         </zeroOrMore>
         <ref name="mei_macro.musicPart"/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-music-check_controlEventLinking-constraint-rule-61">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       context="mei:*[@tstamp]">
               <sch:assert test="not(@startid)">An element with @tstamp may not have @startid as well (and vice versa).</sch:assert>
            </sch:rule>
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       context="mei:*[@tstamp2]">
               <sch:assert test="not(@endid)">An element with @tstamp2 may not have @endid as well (and vice versa).</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_note">
      <element name="note">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A single pitched event. </a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.noteModifierLike"/>
               <ref name="mei_model.verseLike"/>
               <ref name="mei_model.sylLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.note.log.attributes"/>
         <ref name="mei_att.note.vis.attributes"/>
         <ref name="mei_att.note.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_ornam">
      <element name="ornam">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">An element indicating an ornament that is not a mordent, turn, or trill. </a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-ornam-ornam_start-type_attributes_required-constraint-rule-63">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:ornam">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.ornam.log.attributes"/>
         <ref name="mei_att.ornam.vis.attributes"/>
         <ref name="mei_att.ornam.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_pb">
      <element name="pb">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(page beginning) An empty formatting element that forces text to begin on a new page.</a:documentation>
         <ref name="mei_macro.metaLike.page"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.pb.log.attributes"/>
         <ref name="mei_att.pb.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_pgFoot">
      <element name="pgFoot">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(page footer) A running footer.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textComponentLike"/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.formework.attributes"/>
         <ref name="mei_att.horizontalAlign.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_pgHead">
      <element name="pgHead">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(page header) A running header.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textComponentLike"/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.formework.attributes"/>
         <ref name="mei_att.horizontalAlign.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_pubPlace">
      <element name="pubPlace">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(publication place) Name of the place where a bibliographic item was published.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_rend">
      <element name="rend">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(render) A formatting element indicating special visual rendering, e.g., bold or italicized, of a text word or phrase.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.color.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.extSym.auth.attributes"/>
         <ref name="mei_att.horizontalAlign.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.textRendition.attributes"/>
         <ref name="mei_att.typography.attributes"/>
         <ref name="mei_att.verticalAlign.attributes"/>
         <ref name="mei_att.whitespace.attributes"/>
         <optional>
            <attribute name="rotation">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A positive value for rotation rotates the text in a counter-clockwise fashion, while negative values produce clockwise rotation.</a:documentation>
               <ref name="mei_data.DEGREES"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_respStmt">
      <element name="respStmt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(responsibility statement) Transcription of text that names one or more individuals, groups, or in rare cases, mechanical processes, responsible for creation, realization, production, funding, or distribution of the intellectual or artistic content.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.nameLike.agent"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-respStmt-check_respStmt-constraint-rule-64">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:respStmt[not(ancestor::mei:change)]">
               <sch:assert test="(mei:resp and (mei:name or mei:corpName or mei:persName)) or             count(mei:*[@role]) = count(mei:*) and count(mei:*) &gt; 0"
                            role="warning">At least one element pair (a resp element and a name-like element) is
            recommended. Alternatively, each name-like element may have a @role
            attribute.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_rest">
      <element name="rest">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A non-sounding event found in the source being transcribed.</a:documentation>
         <zeroOrMore>
            <empty/>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-rest-Check_restline-constraint-rule-65">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:rest[@line]">
               <sch:let name="thisstaff" value="ancestor::mei:staff/@n"/>
               <sch:assert test="number(@line) &lt;= number(preceding::mei:staffDef[@n=$thisstaff and @lines][1]/@lines)">The value of @line must be less than or equal to the number of lines on the
            staff.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.rest.log.attributes"/>
         <ref name="mei_att.rest.vis.attributes"/>
         <ref name="mei_att.rest.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_sb">
      <element name="sb">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(system beginning) An empty formatting element that forces musical notation to begin on a new line.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.sb.log.attributes"/>
         <ref name="mei_att.sb.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_score">
      <element name="score">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Full score view of the musical content.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.relationLike"/>
               <ref name="mei_model.scoreDefLike"/>
               <ref name="mei_model.scorePart"/>
               <ref name="mei_model.staffDefLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.score.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_scoreDef">
      <element name="scoreDef">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(score definition) (score definition) – Container for score meta-information.</a:documentation>
         <optional>
            <ref name="mei_model.keySigLike"/>
         </optional>
         <optional>
            <ref name="mei_model.meterSigLike"/>
         </optional>
         <optional>
            <ref name="mei_pgHead"/>
         </optional>
         <optional>
            <ref name="mei_pgFoot"/>
         </optional>
         <optional>
            <ref name="mei_model.staffGrpLike"/>
         </optional>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.keySigDefault.log.attributes"/>
         <ref name="mei_att.meterSigDefault.log.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_section">
      <element name="section">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Segment of music data.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.relationLike"/>
               <ref name="mei_model.sectionPart"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-section-Check_sectionexpansion-constraint-rule-66">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:section[mei:expansion]">
               <sch:assert test="descendant::mei:section|descendant::mei:ending|descendant::mei:rdg">A
            section containing an expansion element must have descendant section, ending, or rdg
            elements.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.section.ges.attributes"/>
         <ref name="mei_att.section.log.attributes"/>
         <ref name="mei_att.section.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_space">
      <element name="space">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A placeholder used to fill an incomplete measure, layer, etc. most often so that the combined duration of the events equals the number of beats in the measure.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.space.log.attributes"/>
         <ref name="mei_att.space.vis.attributes"/>
         <ref name="mei_att.space.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_staff">
      <element name="staff">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A group of equidistant horizontal lines on which notes are placed in order to represent pitch or a grouping element for individual 'strands' of notes, rests, etc. that may or may not actually be rendered on staff lines; that is, both diastematic and non-diastematic signs.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.relationLike"/>
               <ref name="mei_model.staffDefLike"/>
               <ref name="mei_model.staffPart"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-staff-checkStaff_n-constraint-rule-67">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:staff[@n]">
               <sch:let name="thisstaff" value="@n"/>
               <sch:assert test="preceding::mei:staffDef[@n=$thisstaff] or preceding::mei:staff[@n=$thisstaff]/mei:staffDef or mei:staffDef">There must be a preceding staffDef with a matching value of @n, a preceding staff with
            a matching @n value containing a staffDef, or a staffDef child element.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.basic.attributes"/>
         <ref name="mei_att.labelled.attributes"/>
         <ref name="mei_att.nInteger.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.staff.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_staffDef">
      <element name="staffDef">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(staff definition) Container for staff meta-information.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.labelLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.instrDefLike"/>
               <ref name="mei_model.layerDefLike"/>
               <ref name="mei_model.staffDefPart"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-staffDef-Check_staffDefn-constraint-rule-68">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:staffDef[not(ancestor::mei:staff)]">
               <sch:let name="thisstaff" value="@n"/>
               <sch:assert test="@n">StaffDef must have an n attribute.</sch:assert>
               <sch:assert test="@lines or preceding::mei:staffDef[@n=$thisstaff and @lines]"> Either
            @lines must be present or a preceding staffDef with the same value for @n and @lines
            must exist.</sch:assert>
               <sch:assert test="count(mei:clef) + count(mei:clefGrp) &lt; 2">Only one clef or clefGrp is
            permitted.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-staffDef-Check_ancestor_staff-constraint-rule-69">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:staffDef[ancestor::mei:staff and @n]">
               <sch:let name="thisstaff" value="@n"/>
               <sch:assert test="ancestor::mei:staff/@n eq $thisstaff">@n must have the same value as the
            current staff.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-staffDef-Check_ancestor_staff_lines-constraint-rule-70">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:staffDef[ancestor::mei:staff and not(@n)]">
               <sch:let name="thisstaff" value="ancestor::mei:staff/@n"/>
               <sch:assert test="@lines or preceding::mei:staffDef[@n=$thisstaff and @lines]"> Either
            @lines must be present or a preceding staffDef with matching @n value and @lines must
            exist.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-staffDef-Check_clef_position_staffDef-constraint-rule-71">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:staffDef[@clef.line and @lines]">
               <sch:assert test="number(@clef.line) &lt;= number(@lines)">The clef position must be less
            than or equal to the number of lines on the staff.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-staffDef-Check_clef_position_staffDef_nolines-constraint-rule-72">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:staffDef[@clef.line and not(@lines)]">
               <sch:let name="thisstaff" value="@n"/>
               <sch:let name="stafflines"
                         value="preceding::mei:staffDef[@n=$thisstaff and @lines][1]/@lines"/>
               <sch:assert test="number(@clef.line) &lt;= number($stafflines)">The clef position must be
            less than or equal to the number of lines on the staff.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-staffDef-Check_tab_strings_lines-constraint-rule-73">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:staffDef[@tab.strings and @lines]">
               <sch:let name="countTokens"
                         value="count(tokenize(normalize-space(@tab.strings), '\s'))"/>
               <sch:assert test="$countTokens = @lines">The tab.strings attribute must have the same
            number of values as there are staff lines.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-staffDef-Check_tab_strings_nolines-constraint-rule-74">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:staffDef[@tab.strings and not(@lines)]">
               <sch:let name="countTokens"
                         value="count(tokenize(normalize-space(@tab.strings), '\s'))"/>
               <sch:let name="thisstaff" value="@n"/>
               <sch:assert test="$countTokens = preceding::mei:staffDef[@n=$thisstaff and @lines][1]/@lines">The
            tab.strings attribute must have the same number of values as there are staff
            lines.</sch:assert>
            </sch:rule>
         </pattern>
         <sch:pattern xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude">
            <sch:rule context="mei:staffDef[@lines.color and @lines]">
               <sch:let name="countTokens"
                         value="count(tokenize(normalize-space(@lines.color), '\s'))"/>
               <sch:assert test="$countTokens = 1 or $countTokens = @lines">The lines.color attribute
              must have either 1) a single value or 2) the same number of values as there are staff
              lines.</sch:assert>
            </sch:rule>
            <sch:rule context="mei:staffDef[@lines.color and not(@lines)]">
               <sch:let name="countTokens"
                         value="count(tokenize(normalize-space(@lines.color), '\s'))"/>
               <sch:let name="thisstaff" value="@n"/>
               <sch:assert test="$countTokens = 1 or $countTokens = preceding::mei:staffDef[@n=$thisstaff and @lines][1]/@lines">The lines.color attribute must have either 1) a single value or 2) the same number of
              values as there are staff lines.</sch:assert>
            </sch:rule>
         </sch:pattern>
         <sch:pattern xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude">
            <sch:rule context="mei:staffDef[@ppq][ancestor::mei:scoreDef[@ppq]]">
               <sch:let name="staffPPQ" value="@ppq"/>
               <sch:let name="scorePPQ" value="ancestor::mei:scoreDef[@ppq][1]/@ppq"/>
               <sch:assert test="($scorePPQ mod $staffPPQ) = 0">The value of ppq must be a factor of
              the value of ppq on an ancestor scoreDef.</sch:assert>
            </sch:rule>
         </sch:pattern>
         <sch:pattern xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude">
            <sch:rule context="mei:staffDef[@ppq][preceding::mei:scoreDef[@ppq]]">
               <sch:let name="staffPPQ" value="@ppq"/>
               <sch:let name="scorePPQ" value="preceding::mei:scoreDef[@ppq][1]/@ppq"/>
               <sch:assert test="($scorePPQ mod $staffPPQ) = 0">The value of ppq must be a factor of
              the value of ppq on a preceding scoreDef.</sch:assert>
            </sch:rule>
         </sch:pattern>
         <ref name="mei_att.basic.attributes"/>
         <ref name="mei_att.labelled.attributes"/>
         <ref name="mei_att.nInteger.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.staffDef.log.attributes"/>
         <ref name="mei_att.staffDef.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_staffGrp">
      <element name="staffGrp">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(staff group) (staff group) – A group of bracketed or braced staves.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.labelLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_model.instrDefLike"/>
         </zeroOrMore>
         <oneOrMore>
            <choice>
               <ref name="mei_model.staffGrpLike"/>
               <ref name="mei_model.staffDefLike"/>
            </choice>
         </oneOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-staffGrp-Check_staffGrp_unique_staff_n_values-constraint-rule-79">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       context="mei:staffGrp">
               <sch:let name="countstaves" value="count(descendant::mei:staffDef)"/>
               <sch:let name="countuniqstaves"
                         value="count(distinct-values(descendant::mei:staffDef/@n))"/>
               <sch:assert test="$countstaves eq $countuniqstaves">Each staffDef must have a unique value
                                    for the n attribute.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-staffGrp-Check_staffGrp_unique_staff_n_values-constraint-rule-80">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:staffGrp">
               <sch:let name="countstaves" value="count(descendant::mei:staffDef)"/>
               <sch:let name="countuniqstaves"
                         value="count(distinct-values(descendant::mei:staffDef/@n))"/>
               <sch:assert test="$countstaves eq $countuniqstaves">Each staffDef must have a unique value
            for the n attribute.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.staffGrp.vis.attributes"/>
         <ref name="mei_att.staffGrp.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_syl">
      <element name="syl">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(syllable) Individual lyric syllable.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.syl.log.attributes"/>
         <ref name="mei_att.syl.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_symbol">
      <element name="symbol">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A reference to a previously defined symbol.</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-symbol-symbolDef_symbol_attributes_required-constraint-rule-81">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:symbol[ancestor::mei:symbolDef]">
               <sch:assert test="@startid or (@x and @y)">In the symbolDef context, symbol must have
            either a startid attribute or x and y attributes.</sch:assert>
               <sch:assert test="@altsym or @glyph.name or @glyph.num">In the symbolDef context, symbol
            must have one of the following attributes: altsym, glyph.name, or
            glyph.num.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.symbol.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_tempo">
      <element name="tempo">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Text and symbols descriptive of tempo, mood, or style, e.g., "allarg.", "a tempo", "cantabile", "Moderato", "♩=60", "Moderato ♩ =60").</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textPhraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-tempo-tempo_in_header_disallow_most_attrs-constraint-rule-82">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:tempo[not(ancestor::mei:score or ancestor::mei:part)]">
               <sch:assert test="not(@*[name() != 'analog' and name() != 'class' and name() != 'label' and name() != 'mm' and name() != 'mm.dots' and name() != 'translit' and name() != 'type' and name() != 'mm.unit' and name() != 'n' and name() != 'xml:base' and name() != 'xml:id' and name() != 'xml:lang'])">Only analog, class, label, mm, mm.dots, mm.unit, n, translit, type, xml:base, xml:id,
            and xml:lang attributes are allowed when tempo is not a descendant of a score or
            part.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
                   id="mei-tempo-tempo_start-type_attributes_required-constraint-rule-83">
            <sch:rule xmlns="http://www.tei-c.org/ns/1.0"
                       xmlns:rng="http://relaxng.org/ns/structure/1.0"
                       xmlns:sch="http://purl.oclc.org/dsdl/schematron"
                       xmlns:xi="http://www.w3.org/2001/XInclude"
                       context="mei:tempo[not(ancestor::mei:syllable) and not(ancestor::mei:work) and not(ancestor::mei:expression) and not(count(ancestor::mei:*) = 0)]">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
            attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.tempo.log.attributes"/>
         <ref name="mei_att.tempo.vis.attributes"/>
         <ref name="mei_att.tempo.ges.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_title">
      <element name="title">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Title of a bibliographic entity.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_macro.titlePart"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.basic.attributes"/>
         <ref name="mei_att.labelled.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.nNumberLike.attributes"/>
         <optional>
            <attribute name="level">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the bibliographic level of the title.</a:documentation>
               <choice>
                  <value>a</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Analyzed component, such as an article or chapter, within a larger bibliographic entity.</a:documentation>
                  <value>c</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Collection. A group of items that were not originally published, distributed, or produced together.</a:documentation>
                  <value>d</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Subunit of a collection, e.g., item, folder, box, archival series, subgroup, or subcollection.</a:documentation>
                  <value>i</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Integrating resource, such as a continuously updated loose-leaf service or Web site.</a:documentation>
                  <value>m</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Monograph.</a:documentation>
                  <value>j</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Journal.</a:documentation>
                  <value>s</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Series.</a:documentation>
                  <value>u</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unpublished (including theses and dissertations unless published by a commercial press).</a:documentation>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Characterizes the title in some sense, using any convenient classification scheme or typology that employs single-token labels.
Suggested values include: 1] main; 2] subordinate; 3] abbreviated; 4] alternative; 5] translated; 6] uniform; 7] desc</a:documentation>
               <choice>
                  <value>main</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Main title.</a:documentation>
                  <value>subordinate</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Subtitle or title of part.</a:documentation>
                  <value>abbreviated</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Abbreviated form of title.</a:documentation>
                  <value>alternative</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Alternate title by which the item is also known.</a:documentation>
                  <value>translated</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Translated form of title.</a:documentation>
                  <value>uniform</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Collective title.</a:documentation>
                  <value>desc</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Descriptive paraphrase of the work.</a:documentation>
                  <data type="NMTOKENS"/>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_att.stringtab.attributes">
      <ref name="mei_att.stringtab.attribute.tab.fing"/>
      <ref name="mei_att.stringtab.attribute.tab.fret"/>
      <ref name="mei_att.stringtab.attribute.tab.string"/>
   </define>
   <define name="mei_att.stringtab.attribute.tab.fing">
      <optional>
         <attribute name="tab.fing">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates which finger, if any, should be used to play an individual string. The index, middle, ring, and little fingers are represented by the values 1-4, while t is for the thumb. The values x and o indicate muffled and open strings, respectively.</a:documentation>
            <ref name="mei_data.FINGER.FRET"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.stringtab.attribute.tab.fret">
      <optional>
         <attribute name="tab.fret">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the location at which a string should be stopped against a fret.</a:documentation>
            <ref name="mei_data.FRETNUMBER"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.stringtab.attribute.tab.string">
      <optional>
         <attribute name="tab.string">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records which string is to be played.</a:documentation>
            <ref name="mei_data.STRINGNUMBER"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.stringtab.position.attributes">
      <ref name="mei_att.stringtab.position.attribute.tab.pos"/>
   </define>
   <define name="mei_att.stringtab.position.attribute.tab.pos">
      <optional>
         <attribute name="tab.pos">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records fret position.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.stringtab.tuning.attributes">
      <ref name="mei_att.stringtab.tuning.attribute.tab.strings"/>
   </define>
   <define name="mei_att.stringtab.tuning.attribute.tab.strings">
      <optional>
         <attribute name="tab.strings">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides a *written* pitch and octave for each open string or course of strings.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="token">
                     <param name="pattern">[a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?([a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?)*</param>
                  </data>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_barre">
      <element name="barre">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A barre in a chord tablature grid.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.startEndId.attributes"/>
         <optional>
            <attribute name="fret">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records the location at which the strings should be stopped against a fret in a fretboard diagram. This may or may not be the same as the actual location on the fretboard of the instrument in performance.</a:documentation>
               <data type="positiveInteger">
                  <param name="minInclusive">1</param>
                  <param name="maxInclusive">5</param>
               </data>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_att.accid.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.visualOffset.ho.attributes"/>
      <ref name="mei_att.visualOffset.vo.attributes"/>
   </define>
   <define name="mei_att.arpeg.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.lineRend.base.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.arpeg.vis.attribute.arrow"/>
      <ref name="mei_att.arpeg.vis.attribute.arrow.shape"/>
      <ref name="mei_att.arpeg.vis.attribute.arrow.size"/>
      <ref name="mei_att.arpeg.vis.attribute.arrow.color"/>
      <ref name="mei_att.arpeg.vis.attribute.arrow.fillcolor"/>
   </define>
   <define name="mei_att.arpeg.vis.attribute.arrow">
      <optional>
         <attribute name="arrow">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates if an arrowhead is to be drawn as part of the arpeggiation symbol.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.arpeg.vis.attribute.arrow.shape">
      <optional>
         <attribute name="arrow.shape">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Symbol rendered at end of the line.</a:documentation>
            <ref name="mei_data.LINESTARTENDSYMBOL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.arpeg.vis.attribute.arrow.size">
      <optional>
         <attribute name="arrow.size">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds the relative size of the arrow symbol.</a:documentation>
            <ref name="mei_data.FONTSIZESCALE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.arpeg.vis.attribute.arrow.color">
      <optional>
         <attribute name="arrow.color">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures the overall color of the arrow.</a:documentation>
            <ref name="mei_data.COLOR"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.arpeg.vis.attribute.arrow.fillcolor">
      <optional>
         <attribute name="arrow.fillcolor">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures the fill color of the arrow if different from the line color.</a:documentation>
            <ref name="mei_data.COLOR"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.artic.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.placementRelEvent.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.beam.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.cue.attributes"/>
   </define>
   <define name="mei_att.beatRpt.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.expandable.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.beatRpt.vis.attribute.slash"/>
   </define>
   <define name="mei_att.beatRpt.vis.attribute.slash">
      <attribute name="slash">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates the number of slashes required to render the appropriate beat repeat symbol. When a single beat consisting of a single note or chord is repeated, the repetition symbol is a single thick, slanting slash; therefore, the value 1 should be used. When the beat is divided into even notes, the following values should be used: 4ths or 8ths=1, 16ths=2, 32nds=3, 64ths=4, 128ths=5. When the beat is comprised of mixed duration values, the default rendition is 2 slashes and 2 dots.</a:documentation>
         <ref name="mei_data.BEATRPT.REND"/>
      </attribute>
   </define>
   <define name="mei_att.breath.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.bTrem.vis.attributes">
      <ref name="mei_att.numberPlacement.attributes"/>
   </define>
   <define name="mei_att.caesura.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.chord.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.stems.attributes"/>
      <ref name="mei_att.visualOffset.ho.attributes"/>
      <ref name="mei_att.chord.vis.cmn.attributes"/>
      <ref name="mei_att.chord.vis.attribute.cluster"/>
   </define>
   <define name="mei_att.chord.vis.attribute.cluster">
      <optional>
         <attribute name="cluster">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates a single, alternative note head should be displayed instead of individual note heads. The highest and lowest notes of the chord usually indicate the upper and lower boundaries of the cluster note head.</a:documentation>
            <ref name="mei_data.CLUSTER"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.clef.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.dir.vis.attributes">
      <ref name="mei_att.extender.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.visualOffset2.ho.attributes"/>
   </define>
   <define name="mei_att.dynam.vis.attributes">
      <ref name="mei_att.extender.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.visualOffset2.ho.attributes"/>
   </define>
   <define name="mei_att.ending.vis.attributes">
      <ref name="mei_att.lineRend.attributes"/>
   </define>
   <define name="mei_att.f.vis.attributes">
      <ref name="mei_att.extender.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.fermata.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.fermata.vis.attribute.form"/>
      <ref name="mei_att.fermata.vis.attribute.shape"/>
   </define>
   <define name="mei_att.fermata.vis.attribute.form">
      <optional>
         <attribute name="form">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes the visual appearance of the fermata; that is, whether it occurs as upright or inverted.</a:documentation>
            <choice>
               <value>inv</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Inverted, i.e., curve or bracket below the dot.</a:documentation>
               <value>norm</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Upright; i.e., curve or bracket above the dot.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.fermata.vis.attribute.shape">
      <optional>
         <attribute name="shape">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes the visual appearance of the fermata; that is, whether it has a curved, square, or angular shape.</a:documentation>
            <choice>
               <value>curved</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A curve above or below the dot.</a:documentation>
               <value>square</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A bracket above or below the dot.</a:documentation>
               <value>angular</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A triangle above or below the dot.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.fing.vis.attributes">
      <ref name="mei_att.extender.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.gliss.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.visualOffset2.attributes"/>
      <ref name="mei_att.lineRend.attributes"/>
   </define>
   <define name="mei_att.graceGrp.vis.attributes">
      <ref name="mei_att.color.attributes"/>
   </define>
   <define name="mei_att.hairpin.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.lineRend.base.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.visualOffset2.attributes"/>
      <ref name="mei_att.hairpin.vis.attribute.opening"/>
      <ref name="mei_att.hairpin.vis.attribute.closed"/>
      <ref name="mei_att.hairpin.vis.attribute.opening.vertical"/>
      <ref name="mei_att.hairpin.vis.attribute.angle.optimize"/>
   </define>
   <define name="mei_att.hairpin.vis.attribute.opening">
      <optional>
         <attribute name="opening">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Specifies the distance between the lines at the open end of a hairpin dynamic mark.</a:documentation>
            <ref name="mei_data.MEASUREMENTUNSIGNED"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.hairpin.vis.attribute.closed">
      <optional>
         <attribute name="closed">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Applies to a "Rossini" hairpin, i.e., one where the normally open side is closed by a connecting line.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.hairpin.vis.attribute.opening.vertical">
      <optional>
         <attribute name="opening.vertical">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates that the opening points are aligned with an imaginary line that is always 90° perpendicular to the horizontal plane, regardless of any angle or start/end adjustments, including when the hairpin is angled with @angle.optimize or through @endvo/@startvo adjustments.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.hairpin.vis.attribute.angle.optimize">
      <optional>
         <attribute name="angle.optimize">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates that the slope of the hairpin can be adjusted to follow the content in order to optimize spacing.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.halfmRpt.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.expandable.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.harm.vis.attributes">
      <ref name="mei_att.extender.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.visualOffset2.ho.attributes"/>
      <ref name="mei_att.harm.vis.attribute.rendgrid"/>
   </define>
   <define name="mei_att.harm.vis.attribute.rendgrid">
      <optional>
         <attribute name="rendgrid">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes how the harmonic indication should be rendered.</a:documentation>
            <choice>
               <value>grid</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Chord tablature grid.</a:documentation>
               <value>gridtext</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Chord tablature grid and the element’s textual content.</a:documentation>
               <value>text</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Textual content of the element.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.harpPedal.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.layer.vis.attributes">
      <empty/>
   </define>
   <define name="mei_att.lv.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.curvature.attributes"/>
      <ref name="mei_att.lineRend.base.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.visualOffset2.attributes"/>
   </define>
   <define name="mei_att.mNum.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.mordent.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.mRest.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.cutout.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.mRpt.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.expandable.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.numberPlacement.attributes"/>
      <ref name="mei_att.typography.attributes"/>
   </define>
   <define name="mei_att.multiRest.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.numberPlacement.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.width.attributes"/>
      <ref name="mei_att.multiRest.vis.attribute.block"/>
   </define>
   <define name="mei_att.multiRest.vis.attribute.block">
      <optional>
         <attribute name="block">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The block attribute controls whether the multimeasure rest should be rendered as a block rest or as church rests ("Kirchenpausen"), that are combinations of longa, breve and semibreve rests.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.multiRpt.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.expandable.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.typography.attributes"/>
   </define>
   <define name="mei_att.note.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.stems.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.ho.attributes"/>
      <ref name="mei_att.note.vis.cmn.attributes"/>
   </define>
   <define name="mei_att.octave.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extender.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.visualOffset2.ho.attributes"/>
   </define>
   <define name="mei_att.ornam.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.visualOffset2.ho.attributes"/>
   </define>
   <define name="mei_att.pb.vis.attributes">
      <ref name="mei_att.pb.vis.attribute.folium"/>
   </define>
   <define name="mei_att.pb.vis.attribute.folium">
      <optional>
         <attribute name="folium">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">States the side of a leaf (as in a manuscript) on which the content following the <code xmlns="http://www.w3.org/1999/xhtml">&lt;pb&gt;</code> element occurs.</a:documentation>
            <choice>
               <value>verso</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The back of a manuscript page.</a:documentation>
               <value>recto</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The front of a manuscript page.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pedal.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.lineRend.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.pedal.vis.attribute.form"/>
   </define>
   <define name="mei_att.pedal.vis.attribute.form">
      <optional>
         <attribute name="form">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Determines whether piano pedal marks should be rendered as lines or as terms.</a:documentation>
            <ref name="mei_data.PEDALSTYLE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.refrain.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.vo.attributes"/>
      <ref name="mei_att.voltaGroupingSym.attributes"/>
   </define>
   <define name="mei_att.reh.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.repeatMark.vis.attributes">
      <ref name="mei_att.extender.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.visualOffset2.ho.attributes"/>
   </define>
   <define name="mei_att.rest.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.rest.vis.cmn.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.sb.vis.attributes">
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.sb.vis.attribute.form"/>
   </define>
   <define name="mei_att.sb.vis.attribute.form">
      <optional>
         <attribute name="form">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates whether hash marks should be rendered between systems. See Read, p. 436, ex. 26-3.</a:documentation>
            <choice>
               <value>hash</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Display hash marks between systems.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.section.vis.attributes">
      <ref name="mei_att.section.vis.attribute.restart"/>
   </define>
   <define name="mei_att.section.vis.attribute.restart">
      <optional>
         <attribute name="restart">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates that staves begin again with this section.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.slur.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.curvature.attributes"/>
      <ref name="mei_att.lineRend.base.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.visualOffset2.attributes"/>
   </define>
   <define name="mei_att.space.vis.attributes">
      <ref name="mei_att.cutout.attributes"/>
      <ref name="mei_att.space.vis.attribute.compressable"/>
   </define>
   <define name="mei_att.space.vis.attribute.compressable">
      <optional>
         <attribute name="compressable">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates whether a space is 'compressible', i.e., if it may be removed at the discretion of processing software.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.staff.vis.attributes">
      <empty/>
   </define>
   <define name="mei_att.staffGrp.vis.attributes">
      <ref name="mei_att.staffGroupingSym.attributes"/>
      <ref name="mei_att.staffGrp.vis.attribute.bar.thru"/>
   </define>
   <define name="mei_att.staffGrp.vis.attribute.bar.thru">
      <optional>
         <attribute name="bar.thru">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(bar lines through) Indicates whether bar lines go across the space between staves (true) or are only drawn across the lines of each staff (false).</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.syl.vis.attributes">
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.horizontalAlign.attributes"/>
   </define>
   <define name="mei_att.symbol.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.scalable.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.tempo.vis.attributes">
      <ref name="mei_att.extender.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.visualOffset2.ho.attributes"/>
   </define>
   <define name="mei_att.tie.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.curvature.attributes"/>
      <ref name="mei_att.lineRend.base.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.visualOffset2.attributes"/>
   </define>
   <define name="mei_att.trill.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extender.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
      <ref name="mei_att.visualOffset2.ho.attributes"/>
   </define>
   <define name="mei_att.tuplet.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.numberPlacement.attributes"/>
      <ref name="mei_att.tuplet.vis.attribute.bracket.place"/>
      <ref name="mei_att.tuplet.vis.attribute.bracket.visible"/>
      <ref name="mei_att.tuplet.vis.attribute.dur.visible"/>
      <ref name="mei_att.tuplet.vis.attribute.num.format"/>
   </define>
   <define name="mei_att.tuplet.vis.attribute.bracket.place">
      <optional>
         <attribute name="bracket.place">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to state where a tuplet bracket will be placed in relation to the note heads.</a:documentation>
            <ref name="mei_data.STAFFREL.basic"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tuplet.vis.attribute.bracket.visible">
      <optional>
         <attribute name="bracket.visible">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">States whether a bracket should be rendered with a tuplet.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tuplet.vis.attribute.dur.visible">
      <optional>
         <attribute name="dur.visible">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Determines if the tuplet duration is visible.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tuplet.vis.attribute.num.format">
      <optional>
         <attribute name="num.format">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Controls how the num:numbase ratio is to be displayed.</a:documentation>
            <choice>
               <value>count</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Only the num attribute is displayed, e.g., '7'.</a:documentation>
               <value>ratio</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Both the num and numbase attributes are displayed, e.g., '7:4'.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.turn.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extSym.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.attributes"/>
   </define>
   <define name="mei_att.verse.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.placementRelStaff.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.vo.attributes"/>
      <ref name="mei_att.voltaGroupingSym.attributes"/>
   </define>
   <define name="mei_att.volta.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualOffset.vo.attributes"/>
   </define>
   <start>
      <choice>
         <ref name="mei_mei"/>
      </choice>
   </start>
   <sch:ns xmlns="http://www.tei-c.org/ns/1.0"
            xmlns:rng="http://relaxng.org/ns/structure/1.0"
            xmlns:sch="http://purl.oclc.org/dsdl/schematron"
            prefix="mei"
            uri="http://www.music-encoding.org/ns/mei"/>
   <sch:ns xmlns="http://www.tei-c.org/ns/1.0"
            xmlns:rng="http://relaxng.org/ns/structure/1.0"
            xmlns:sch="http://purl.oclc.org/dsdl/schematron"
            prefix="xlink"
            uri="http://www.w3.org/1999/xlink"/>
</grammar>
