<?xml version="1.0" encoding="utf-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0" 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 2016-05-03T20:07:03Z. .
TEI Edition: Version 3.0.0
TEI Edition Location: http://www.tei-c.org/Vault/P5//
  
-->
   <!---->
   <sch:ns xmlns:sch="http://purl.oclc.org/dsdl/schematron" prefix="tei"
      uri="http://www.tei-c.org/ns/1.0"/>
   <div ns="http://www.w3.org/2000/svg" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
      <define name="svg_Boolean.datatype">
         <choice>
            <value>false</value>
            <value>true</value>
         </choice>
      </define>
      <define name="svg_ClipFillRule.datatype">
         <choice>
            <value>nonzero</value>
            <value>evenodd</value>
            <value>inherit</value>
         </choice>
      </define>
      <define name="svg_ContentType.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_Coordinate.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_Coordinates.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_Color.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_Integer.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_LanguageCode.datatype">
         <data type="NMTOKEN"/>
      </define>
      <define name="svg_LanguageCodes.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_Length.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_Lengths.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_Number.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_Numbers.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_OpacityValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_PathData.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_PreserveAspectRatioSpec.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_Script.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVGColor.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_Text.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_TransformList.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_URI.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_ViewBoxSpec.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_XLINK.xmlns.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.xmlns.attrib">
         <ref name="svg_XLINK.xmlns.attrib"/>
      </define>
      <define name="svg_SVG.Description.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Description.class">
         <choice>
            <ref name="svg_desc"/>
            <ref name="svg_title"/>
            <ref name="svg_metadata"/>
            <ref name="svg_SVG.Description.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Use.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Use.class">
         <choice>
            <ref name="svg_use"/>
            <ref name="svg_SVG.Use.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Structure.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Structure.class">
         <choice>
            <ref name="svg_svg"/>
            <ref name="svg_g"/>
            <ref name="svg_defs"/>
            <ref name="svg_symbol"/>
            <ref name="svg_SVG.Use.class"/>
            <ref name="svg_SVG.Structure.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Conditional.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Conditional.class">
         <choice>
            <ref name="svg_switch"/>
            <ref name="svg_SVG.Conditional.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Image.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Image.class">
         <choice>
            <ref name="svg_image"/>
            <ref name="svg_SVG.Image.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Style.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Style.class">
         <choice>
            <ref name="svg_style"/>
            <ref name="svg_SVG.Style.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Shape.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Shape.class">
         <choice>
            <ref name="svg_path"/>
            <ref name="svg_rect"/>
            <ref name="svg_circle"/>
            <ref name="svg_line"/>
            <ref name="svg_ellipse"/>
            <ref name="svg_polyline"/>
            <ref name="svg_polygon"/>
            <ref name="svg_SVG.Shape.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Text.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Text.class">
         <choice>
            <ref name="svg_text"/>
            <ref name="svg_altGlyphDef"/>
            <ref name="svg_SVG.Text.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.TextContent.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.TextContent.class">
         <choice>
            <ref name="svg_tspan"/>
            <ref name="svg_tref"/>
            <ref name="svg_textPath"/>
            <ref name="svg_altGlyph"/>
            <ref name="svg_SVG.TextContent.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Marker.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Marker.class">
         <choice>
            <ref name="svg_marker"/>
            <ref name="svg_SVG.Marker.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.ColorProfile.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.ColorProfile.class">
         <choice>
            <ref name="svg_color-profile"/>
            <ref name="svg_SVG.ColorProfile.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Gradient.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Gradient.class">
         <choice>
            <ref name="svg_linearGradient"/>
            <ref name="svg_radialGradient"/>
            <ref name="svg_SVG.Gradient.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Pattern.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Pattern.class">
         <choice>
            <ref name="svg_svgpattern"/>
            <ref name="svg_SVG.Pattern.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Clip.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Clip.class">
         <choice>
            <ref name="svg_clipPath"/>
            <ref name="svg_SVG.Clip.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Mask.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Mask.class">
         <choice>
            <ref name="svg_mask"/>
            <ref name="svg_SVG.Mask.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Filter.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Filter.class">
         <choice>
            <ref name="svg_filter"/>
            <ref name="svg_SVG.Filter.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.FilterPrimitive.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.FilterPrimitive.class">
         <choice>
            <ref name="svg_feBlend"/>
            <ref name="svg_feColorMatrix"/>
            <ref name="svg_feComponentTransfer"/>
            <ref name="svg_feComposite"/>
            <ref name="svg_feConvolveMatrix"/>
            <ref name="svg_feDiffuseLighting"/>
            <ref name="svg_feDisplacementMap"/>
            <ref name="svg_feFlood"/>
            <ref name="svg_feGaussianBlur"/>
            <ref name="svg_feImage"/>
            <ref name="svg_feMerge"/>
            <ref name="svg_feMorphology"/>
            <ref name="svg_feOffset"/>
            <ref name="svg_feSpecularLighting"/>
            <ref name="svg_feTile"/>
            <ref name="svg_feTurbulence"/>
            <ref name="svg_SVG.FilterPrimitive.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Cursor.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Cursor.class">
         <choice>
            <ref name="svg_cursor"/>
            <ref name="svg_SVG.Cursor.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Hyperlink.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Hyperlink.class">
         <choice>
            <ref name="svg_a"/>
            <ref name="svg_SVG.Hyperlink.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.View.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.View.class">
         <choice>
            <ref name="svg_view"/>
            <ref name="svg_SVG.View.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Script.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Script.class">
         <choice>
            <ref name="svg_script"/>
            <ref name="svg_SVG.Script.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Animation.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Animation.class">
         <choice>
            <ref name="svg_animate"/>
            <ref name="svg_set"/>
            <ref name="svg_animateMotion"/>
            <ref name="svg_animateColor"/>
            <ref name="svg_animateTransform"/>
            <ref name="svg_SVG.Animation.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Font.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Font.class">
         <choice>
            <ref name="svg_font"/>
            <ref name="svg_font-face"/>
            <ref name="svg_SVG.Font.extra.class"/>
         </choice>
      </define>
      <define name="svg_SVG.Extensibility.extra.class">
         <notAllowed/>
      </define>
      <define name="svg_SVG.Extensibility.class">
         <choice>
            <ref name="svg_foreignObject"/>
            <ref name="svg_SVG.Extensibility.extra.class"/>
         </choice>
      </define>
      <define name="svg_ExtensionList.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_FeatureList.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.Conditional.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Conditional.attrib">
         <optional>
            <attribute name="requiredFeatures">
               <ref name="svg_FeatureList.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="requiredExtensions">
               <ref name="svg_ExtensionList.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="systemLanguage">
               <ref name="svg_LanguageCodes.datatype"/>
            </attribute>
         </optional>
         <ref name="svg_SVG.Conditional.extra.attrib"/>
      </define>
      <define name="svg_ClassList.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_StyleSheet.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.Style.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Style.attrib">
         <optional>
            <attribute name="style">
               <ref name="svg_StyleSheet.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="class">
               <ref name="svg_ClassList.datatype"/>
            </attribute>
         </optional>
         <ref name="svg_SVG.Style.extra.attrib"/>
      </define>
      <define name="svg_BaselineShiftValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_FontFamilyValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_FontSizeValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_FontSizeAdjustValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_GlyphOrientationHorizontalValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_GlyphOrientationVerticalValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_KerningValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SpacingValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_TextDecorationValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.Text.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Text.attrib">
         <optional>
            <attribute name="writing-mode">
               <choice>
                  <value>lr-tb</value>
                  <value>rl-tb</value>
                  <value>tb-rl</value>
                  <value>lr</value>
                  <value>rl</value>
                  <value>tb</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
         <ref name="svg_SVG.Text.extra.attrib"/>
      </define>
      <define name="svg_SVG.TextContent.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.TextContent.attrib">
         <optional>
            <attribute name="alignment-baseline">
               <choice>
                  <value>auto</value>
                  <value>baseline</value>
                  <value>before-edge</value>
                  <value>text-before-edge</value>
                  <value>middle</value>
                  <value>central</value>
                  <value>after-edge</value>
                  <value>text-after-edge</value>
                  <value>ideographic</value>
                  <value>alphabetic</value>
                  <value>hanging</value>
                  <value>mathematical</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="baseline-shift">
               <ref name="svg_BaselineShiftValue.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="direction">
               <choice>
                  <value>ltr</value>
                  <value>rtl</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="dominant-baseline">
               <choice>
                  <value>auto</value>
                  <value>use-script</value>
                  <value>no-change</value>
                  <value>reset-size</value>
                  <value>ideographic</value>
                  <value>alphabetic</value>
                  <value>hanging</value>
                  <value>mathematical</value>
                  <value>central</value>
                  <value>middle</value>
                  <value>text-after-edge</value>
                  <value>text-before-edge</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="glyph-orientation-horizontal">
               <ref name="svg_GlyphOrientationHorizontalValue.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="glyph-orientation-vertical">
               <ref name="svg_GlyphOrientationVerticalValue.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="kerning">
               <ref name="svg_KerningValue.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="letter-spacing">
               <ref name="svg_SpacingValue.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="text-anchor">
               <choice>
                  <value>start</value>
                  <value>middle</value>
                  <value>end</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="text-decoration">
               <ref name="svg_TextDecorationValue.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="unicode-bidi">
               <choice>
                  <value>normal</value>
                  <value>embed</value>
                  <value>bidi-override</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="word-spacing">
               <ref name="svg_SpacingValue.datatype"/>
            </attribute>
         </optional>
         <ref name="svg_SVG.TextContent.extra.attrib"/>
      </define>
      <define name="svg_SVG.Font.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Font.attrib">
         <optional>
            <attribute name="font-family">
               <ref name="svg_FontFamilyValue.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="font-size">
               <ref name="svg_FontSizeValue.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="font-size-adjust">
               <ref name="svg_FontSizeAdjustValue.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="font-stretch">
               <choice>
                  <value>normal</value>
                  <value>wider</value>
                  <value>narrower</value>
                  <value>ultra-condensed</value>
                  <value>extra-condensed</value>
                  <value>condensed</value>
                  <value>semi-condensed</value>
                  <value>semi-expanded</value>
                  <value>expanded</value>
                  <value>extra-expanded</value>
                  <value>ultra-expanded</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="font-style">
               <choice>
                  <value>normal</value>
                  <value>italic</value>
                  <value>oblique</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="font-variant">
               <choice>
                  <value>normal</value>
                  <value>small-caps</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="font-weight">
               <choice>
                  <value>normal</value>
                  <value>bold</value>
                  <value>bolder</value>
                  <value>lighter</value>
                  <value>100</value>
                  <value>200</value>
                  <value>300</value>
                  <value>400</value>
                  <value>500</value>
                  <value>600</value>
                  <value>700</value>
                  <value>800</value>
                  <value>900</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
         <ref name="svg_SVG.Font.extra.attrib"/>
      </define>
      <define name="svg_MarkerValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.Marker.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Marker.attrib">
         <optional>
            <attribute name="marker-start">
               <ref name="svg_MarkerValue.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="marker-mid">
               <ref name="svg_MarkerValue.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="marker-end">
               <ref name="svg_MarkerValue.datatype"/>
            </attribute>
         </optional>
         <ref name="svg_SVG.Marker.extra.attrib"/>
      </define>
      <define name="svg_SVG.ColorProfile.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.ColorProfile.attrib">
         <optional>
            <attribute name="color-profile"/>
         </optional>
         <ref name="svg_SVG.ColorProfile.extra.attrib"/>
      </define>
      <define name="svg_NumberOrPercentage.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.Gradient.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Gradient.attrib">
         <optional>
            <attribute name="stop-color">
               <ref name="svg_SVGColor.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="stop-opacity">
               <ref name="svg_OpacityValue.datatype"/>
            </attribute>
         </optional>
         <ref name="svg_SVG.Gradient.extra.attrib"/>
      </define>
      <define name="svg_ClipPathValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.Clip.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Clip.attrib">
         <optional>
            <attribute name="clip-path">
               <ref name="svg_ClipPathValue.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="clip-rule">
               <ref name="svg_ClipFillRule.datatype"/>
            </attribute>
         </optional>
         <ref name="svg_SVG.Clip.extra.attrib"/>
      </define>
      <define name="svg_MaskValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.Mask.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Mask.attrib">
         <optional>
            <attribute name="mask">
               <ref name="svg_MaskValue.datatype"/>
            </attribute>
         </optional>
         <ref name="svg_SVG.Mask.extra.attrib"/>
      </define>
      <define name="svg_FilterValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_NumberOptionalNumber.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.Filter.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Filter.attrib">
         <optional>
            <attribute name="filter">
               <ref name="svg_FilterValue.datatype"/>
            </attribute>
         </optional>
         <ref name="svg_SVG.Filter.extra.attrib"/>
      </define>
      <define name="svg_SVG.FilterColor.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.FilterColor.attrib">
         <optional>
            <attribute name="color-interpolation-filters">
               <choice>
                  <value>auto</value>
                  <value>sRGB</value>
                  <value>linearRGB</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
         <ref name="svg_SVG.FilterColor.extra.attrib"/>
      </define>
      <define name="svg_CursorValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.Cursor.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Cursor.attrib">
         <optional>
            <attribute name="cursor">
               <ref name="svg_CursorValue.datatype"/>
            </attribute>
         </optional>
         <ref name="svg_SVG.Cursor.extra.attrib"/>
      </define>
      <define name="svg_SVG.id.attrib">
         <optional>
            <attribute name="id">
               <data type="ID"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.base.attrib">
         <optional>
            <attribute name="xml:base">
               <ref name="svg_URI.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.lang.attrib">
         <optional>
            <attribute name="xml:lang">
               <ref name="svg_LanguageCode.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.space.attrib">
         <optional>
            <attribute name="xml:space">
               <choice>
                  <value>default</value>
                  <value>preserve</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.Core.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Core.attrib">
         <ref name="svg_SVG.id.attrib"/>
         <ref name="svg_SVG.base.attrib"/>
         <ref name="svg_SVG.lang.attrib"/>
         <ref name="svg_SVG.space.attrib"/>
         <ref name="svg_SVG.Core.extra.attrib"/>
      </define>
      <define name="svg_EnableBackgroundValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.enable-background.attrib">
         <optional>
            <attribute name="enable-background">
               <ref name="svg_EnableBackgroundValue.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.Container.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Container.attrib">
         <ref name="svg_SVG.enable-background.attrib"/>
         <ref name="svg_SVG.Container.extra.attrib"/>
      </define>
      <define name="svg_ClipValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.clip.attrib">
         <optional>
            <attribute name="clip">
               <ref name="svg_ClipValue.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.overflow.attrib">
         <optional>
            <attribute name="overflow">
               <choice>
                  <value>visible</value>
                  <value>hidden</value>
                  <value>scroll</value>
                  <value>auto</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.Viewport.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Viewport.attrib">
         <ref name="svg_SVG.clip.attrib"/>
         <ref name="svg_SVG.overflow.attrib"/>
         <ref name="svg_SVG.Viewport.extra.attrib"/>
      </define>
      <define name="svg_Paint.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_StrokeDashArrayValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_StrokeDashOffsetValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_StrokeMiterLimitValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_StrokeWidthValue.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.fill.attrib">
         <optional>
            <attribute name="fill">
               <ref name="svg_Paint.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.fill-rule.attrib">
         <optional>
            <attribute name="fill-rule">
               <ref name="svg_ClipFillRule.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.stroke.attrib">
         <optional>
            <attribute name="stroke">
               <ref name="svg_Paint.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.stroke-dasharray.attrib">
         <optional>
            <attribute name="stroke-dasharray">
               <ref name="svg_StrokeDashArrayValue.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.stroke-dashoffset.attrib">
         <optional>
            <attribute name="stroke-dashoffset">
               <ref name="svg_StrokeDashOffsetValue.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.stroke-linecap.attrib">
         <optional>
            <attribute name="stroke-linecap">
               <choice>
                  <value>butt</value>
                  <value>round</value>
                  <value>square</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.stroke-linejoin.attrib">
         <optional>
            <attribute name="stroke-linejoin">
               <choice>
                  <value>miter</value>
                  <value>round</value>
                  <value>bevel</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.stroke-miterlimit.attrib">
         <optional>
            <attribute name="stroke-miterlimit">
               <ref name="svg_StrokeMiterLimitValue.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.stroke-width.attrib">
         <optional>
            <attribute name="stroke-width">
               <ref name="svg_StrokeWidthValue.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.Paint.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Paint.attrib">
         <ref name="svg_SVG.fill.attrib"/>
         <ref name="svg_SVG.fill-rule.attrib"/>
         <ref name="svg_SVG.stroke.attrib"/>
         <ref name="svg_SVG.stroke-dasharray.attrib"/>
         <ref name="svg_SVG.stroke-dashoffset.attrib"/>
         <ref name="svg_SVG.stroke-linecap.attrib"/>
         <ref name="svg_SVG.stroke-linejoin.attrib"/>
         <ref name="svg_SVG.stroke-miterlimit.attrib"/>
         <ref name="svg_SVG.stroke-width.attrib"/>
         <ref name="svg_SVG.Paint.extra.attrib"/>
      </define>
      <define name="svg_SVG.color.attrib">
         <optional>
            <attribute name="color">
               <ref name="svg_Color.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.color-interpolation.attrib">
         <optional>
            <attribute name="color-interpolation">
               <choice>
                  <value>auto</value>
                  <value>sRGB</value>
                  <value>linearRGB</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.color-rendering.attrib">
         <optional>
            <attribute name="color-rendering">
               <choice>
                  <value>auto</value>
                  <value>optimizeSpeed</value>
                  <value>optimizeQuality</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.Color.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Color.attrib">
         <ref name="svg_SVG.color.attrib"/>
         <ref name="svg_SVG.color-interpolation.attrib"/>
         <ref name="svg_SVG.color-rendering.attrib"/>
         <ref name="svg_SVG.Color.extra.attrib"/>
      </define>
      <define name="svg_SVG.opacity.attrib">
         <optional>
            <attribute name="opacity">
               <ref name="svg_OpacityValue.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.fill-opacity.attrib">
         <optional>
            <attribute name="fill-opacity">
               <ref name="svg_OpacityValue.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.stroke-opacity.attrib">
         <optional>
            <attribute name="stroke-opacity">
               <ref name="svg_OpacityValue.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.Opacity.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Opacity.attrib">
         <ref name="svg_SVG.opacity.attrib"/>
         <ref name="svg_SVG.fill-opacity.attrib"/>
         <ref name="svg_SVG.stroke-opacity.attrib"/>
         <ref name="svg_SVG.Opacity.extra.attrib"/>
      </define>
      <define name="svg_SVG.display.attrib">
         <optional>
            <attribute name="display">
               <choice>
                  <value>inline</value>
                  <value>block</value>
                  <value>list-item</value>
                  <value>run-in</value>
                  <value>compact</value>
                  <value>marker</value>
                  <value>table</value>
                  <value>inline-table</value>
                  <value>table-row-group</value>
                  <value>table-header-group</value>
                  <value>table-footer-group</value>
                  <value>table-row</value>
                  <value>table-column-group</value>
                  <value>table-column</value>
                  <value>table-cell</value>
                  <value>table-caption</value>
                  <value>none</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.image-rendering.attrib">
         <optional>
            <attribute name="image-rendering">
               <choice>
                  <value>auto</value>
                  <value>optimizeSpeed</value>
                  <value>optimizeQuality</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.pointer-events.attrib">
         <optional>
            <attribute name="pointer-events">
               <choice>
                  <value>visiblePainted</value>
                  <value>visibleFill</value>
                  <value>visibleStroke</value>
                  <value>visible</value>
                  <value>painted</value>
                  <value>fill</value>
                  <value>stroke</value>
                  <value>all</value>
                  <value>none</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.shape-rendering.attrib">
         <optional>
            <attribute name="shape-rendering">
               <choice>
                  <value>auto</value>
                  <value>optimizeSpeed</value>
                  <value>crispEdges</value>
                  <value>geometricPrecision</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.text-rendering.attrib">
         <optional>
            <attribute name="text-rendering">
               <choice>
                  <value>auto</value>
                  <value>optimizeSpeed</value>
                  <value>optimizeLegibility</value>
                  <value>geometricPrecision</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.visibility.attrib">
         <optional>
            <attribute name="visibility">
               <choice>
                  <value>visible</value>
                  <value>hidden</value>
                  <value>inherit</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.Graphics.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Graphics.attrib">
         <ref name="svg_SVG.display.attrib"/>
         <ref name="svg_SVG.image-rendering.attrib"/>
         <ref name="svg_SVG.pointer-events.attrib"/>
         <ref name="svg_SVG.shape-rendering.attrib"/>
         <ref name="svg_SVG.text-rendering.attrib"/>
         <ref name="svg_SVG.visibility.attrib"/>
         <ref name="svg_SVG.Graphics.extra.attrib"/>
      </define>
      <define name="svg_SVG.onunload.attrib">
         <optional>
            <attribute name="onunload">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onabort.attrib">
         <optional>
            <attribute name="onabort">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onerror.attrib">
         <optional>
            <attribute name="onerror">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onresize.attrib">
         <optional>
            <attribute name="onresize">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onscroll.attrib">
         <optional>
            <attribute name="onscroll">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onzoom.attrib">
         <optional>
            <attribute name="onzoom">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.DocumentEvents.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.DocumentEvents.attrib">
         <ref name="svg_SVG.onunload.attrib"/>
         <ref name="svg_SVG.onabort.attrib"/>
         <ref name="svg_SVG.onerror.attrib"/>
         <ref name="svg_SVG.onresize.attrib"/>
         <ref name="svg_SVG.onscroll.attrib"/>
         <ref name="svg_SVG.onzoom.attrib"/>
         <ref name="svg_SVG.DocumentEvents.extra.attrib"/>
      </define>
      <define name="svg_SVG.onfocusin.attrib">
         <optional>
            <attribute name="onfocusin">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onfocusout.attrib">
         <optional>
            <attribute name="onfocusout">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onactivate.attrib">
         <optional>
            <attribute name="onactivate">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onclick.attrib">
         <optional>
            <attribute name="onclick">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onmousedown.attrib">
         <optional>
            <attribute name="onmousedown">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onmouseup.attrib">
         <optional>
            <attribute name="onmouseup">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onmouseover.attrib">
         <optional>
            <attribute name="onmouseover">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onmousemove.attrib">
         <optional>
            <attribute name="onmousemove">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onmouseout.attrib">
         <optional>
            <attribute name="onmouseout">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onload.attrib">
         <optional>
            <attribute name="onload">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.GraphicalEvents.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.GraphicalEvents.attrib">
         <ref name="svg_SVG.onfocusin.attrib"/>
         <ref name="svg_SVG.onfocusout.attrib"/>
         <ref name="svg_SVG.onactivate.attrib"/>
         <ref name="svg_SVG.onclick.attrib"/>
         <ref name="svg_SVG.onmousedown.attrib"/>
         <ref name="svg_SVG.onmouseup.attrib"/>
         <ref name="svg_SVG.onmouseover.attrib"/>
         <ref name="svg_SVG.onmousemove.attrib"/>
         <ref name="svg_SVG.onmouseout.attrib"/>
         <ref name="svg_SVG.onload.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.extra.attrib"/>
      </define>
      <define name="svg_SVG.onbegin.attrib">
         <optional>
            <attribute name="onbegin">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onend.attrib">
         <optional>
            <attribute name="onend">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.onrepeat.attrib">
         <optional>
            <attribute name="onrepeat">
               <ref name="svg_Script.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.AnimationEvents.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.AnimationEvents.attrib">
         <ref name="svg_SVG.onbegin.attrib"/>
         <ref name="svg_SVG.onend.attrib"/>
         <ref name="svg_SVG.onrepeat.attrib"/>
         <ref name="svg_SVG.onload.attrib"/>
         <ref name="svg_SVG.AnimationEvents.extra.attrib"/>
      </define>
      <define name="svg_SVG.XLink.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.XLink.attrib">
         <ref name="svg_XLINK.xmlns.attrib"/>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xlink:type" a:defaultValue="simple">
               <value>simple</value>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:href">
               <ref name="svg_URI.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:role">
               <ref name="svg_URI.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:arcrole">
               <ref name="svg_URI.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:title"/>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xlink:show" a:defaultValue="other">
               <choice>
                  <value>other</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xlink:actuate" a:defaultValue="onLoad">
               <value>onLoad</value>
            </attribute>
         </optional>
         <ref name="svg_SVG.XLink.extra.attrib"/>
      </define>
      <define name="svg_SVG.XLinkRequired.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.XLinkRequired.attrib">
         <ref name="svg_XLINK.xmlns.attrib"/>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xlink:type" a:defaultValue="simple">
               <value>simple</value>
            </attribute>
         </optional>
         <attribute name="xlink:href">
            <ref name="svg_URI.datatype"/>
         </attribute>
         <optional>
            <attribute name="xlink:role">
               <ref name="svg_URI.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:arcrole">
               <ref name="svg_URI.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:title"/>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xlink:show" a:defaultValue="other">
               <choice>
                  <value>other</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xlink:actuate" a:defaultValue="onLoad">
               <value>onLoad</value>
            </attribute>
         </optional>
         <ref name="svg_SVG.XLinkRequired.extra.attrib"/>
      </define>
      <define name="svg_SVG.XLinkEmbed.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.XLinkEmbed.attrib">
         <ref name="svg_XLINK.xmlns.attrib"/>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xlink:type" a:defaultValue="simple">
               <value>simple</value>
            </attribute>
         </optional>
         <attribute name="xlink:href">
            <ref name="svg_URI.datatype"/>
         </attribute>
         <optional>
            <attribute name="xlink:role">
               <ref name="svg_URI.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:arcrole">
               <ref name="svg_URI.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:title"/>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xlink:show" a:defaultValue="embed">
               <choice>
                  <value>embed</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xlink:actuate" a:defaultValue="onLoad">
               <value>onLoad</value>
            </attribute>
         </optional>
         <ref name="svg_SVG.XLinkEmbed.extra.attrib"/>
      </define>
      <define name="svg_SVG.XLinkReplace.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.XLinkReplace.attrib">
         <ref name="svg_XLINK.xmlns.attrib"/>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xlink:type" a:defaultValue="simple">
               <value>simple</value>
            </attribute>
         </optional>
         <attribute name="xlink:href">
            <ref name="svg_URI.datatype"/>
         </attribute>
         <optional>
            <attribute name="xlink:role">
               <ref name="svg_URI.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:arcrole">
               <ref name="svg_URI.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="xlink:title"/>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xlink:show" a:defaultValue="replace">
               <choice>
                  <value>new</value>
                  <value>replace</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xlink:actuate" a:defaultValue="onRequest">
               <value>onRequest</value>
            </attribute>
         </optional>
         <ref name="svg_SVG.XLinkReplace.extra.attrib"/>
      </define>
      <define name="svg_SVG.externalResourcesRequired.attrib">
         <optional>
            <attribute name="externalResourcesRequired">
               <ref name="svg_Boolean.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.External.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.External.attrib">
         <ref name="svg_SVG.externalResourcesRequired.attrib"/>
         <ref name="svg_SVG.External.extra.attrib"/>
      </define>
      <define name="svg_SVG.Presentation.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Presentation.attrib">
         <ref name="svg_SVG.Container.attrib"/>
         <ref name="svg_SVG.Viewport.attrib"/>
         <ref name="svg_SVG.Text.attrib"/>
         <ref name="svg_SVG.TextContent.attrib"/>
         <ref name="svg_SVG.Font.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Marker.attrib"/>
         <ref name="svg_SVG.ColorProfile.attrib"/>
         <ref name="svg_SVG.Gradient.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <optional>
            <attribute name="flood-color">
               <ref name="svg_SVGColor.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="flood-opacity">
               <ref name="svg_OpacityValue.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="lighting-color">
               <ref name="svg_SVGColor.datatype"/>
            </attribute>
         </optional>
         <ref name="svg_SVG.Presentation.extra.attrib"/>
      </define>
      <define name="svg_SVG.svg.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.svg.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.Structure.class"/>
               <ref name="svg_SVG.Conditional.class"/>
               <ref name="svg_SVG.Image.class"/>
               <ref name="svg_SVG.Style.class"/>
               <ref name="svg_SVG.Shape.class"/>
               <ref name="svg_SVG.Text.class"/>
               <ref name="svg_SVG.Marker.class"/>
               <ref name="svg_SVG.ColorProfile.class"/>
               <ref name="svg_SVG.Gradient.class"/>
               <ref name="svg_SVG.Pattern.class"/>
               <ref name="svg_SVG.Clip.class"/>
               <ref name="svg_SVG.Mask.class"/>
               <ref name="svg_SVG.Filter.class"/>
               <ref name="svg_SVG.Cursor.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.View.class"/>
               <ref name="svg_SVG.Script.class"/>
               <ref name="svg_SVG.Font.class"/>
               <ref name="svg_SVG.svg.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_svg">
         <element name="svg">
            <ref name="svg_attlist.svg"/>
            <ref name="svg_SVG.svg.content"/>
         </element>
      </define>
      <define name="svg_attlist.svg" combine="interleave">
         <ref name="svg_SVG.xmlns.attrib"/>
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.DocumentEvents.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="width">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="height">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="viewBox">
               <ref name="svg_ViewBoxSpec.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
               <ref name="svg_PreserveAspectRatioSpec.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="zoomAndPan" a:defaultValue="magnify">
               <choice>
                  <value>disable</value>
                  <value>magnify</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="version"
               a:defaultValue="1.1">
               <value type="string" datatypeLibrary="">1.1</value>
            </attribute>
         </optional>
         <optional>
            <attribute name="baseProfile">
               <ref name="svg_Text.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="contentScriptType" a:defaultValue="text/ecmascript">
               <ref name="svg_ContentType.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="contentStyleType" a:defaultValue="text/css">
               <ref name="svg_ContentType.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.g.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.g.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.Structure.class"/>
               <ref name="svg_SVG.Conditional.class"/>
               <ref name="svg_SVG.Image.class"/>
               <ref name="svg_SVG.Style.class"/>
               <ref name="svg_SVG.Shape.class"/>
               <ref name="svg_SVG.Text.class"/>
               <ref name="svg_SVG.Marker.class"/>
               <ref name="svg_SVG.ColorProfile.class"/>
               <ref name="svg_SVG.Gradient.class"/>
               <ref name="svg_SVG.Pattern.class"/>
               <ref name="svg_SVG.Clip.class"/>
               <ref name="svg_SVG.Mask.class"/>
               <ref name="svg_SVG.Filter.class"/>
               <ref name="svg_SVG.Cursor.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.View.class"/>
               <ref name="svg_SVG.Script.class"/>
               <ref name="svg_SVG.Font.class"/>
               <ref name="svg_SVG.g.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_g">
         <element name="g">
            <ref name="svg_attlist.g"/>
            <ref name="svg_SVG.g.content"/>
         </element>
      </define>
      <define name="svg_attlist.g" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.defs.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.defs.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.Structure.class"/>
               <ref name="svg_SVG.Conditional.class"/>
               <ref name="svg_SVG.Image.class"/>
               <ref name="svg_SVG.Style.class"/>
               <ref name="svg_SVG.Shape.class"/>
               <ref name="svg_SVG.Text.class"/>
               <ref name="svg_SVG.Marker.class"/>
               <ref name="svg_SVG.ColorProfile.class"/>
               <ref name="svg_SVG.Gradient.class"/>
               <ref name="svg_SVG.Pattern.class"/>
               <ref name="svg_SVG.Clip.class"/>
               <ref name="svg_SVG.Mask.class"/>
               <ref name="svg_SVG.Filter.class"/>
               <ref name="svg_SVG.Cursor.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.View.class"/>
               <ref name="svg_SVG.Script.class"/>
               <ref name="svg_SVG.Font.class"/>
               <ref name="svg_SVG.defs.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_defs">
         <element name="defs">
            <ref name="svg_attlist.defs"/>
            <ref name="svg_SVG.defs.content"/>
         </element>
      </define>
      <define name="svg_attlist.defs" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.desc.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.desc.content">
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="svg_SVG.desc.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_desc">
         <element name="desc">
            <ref name="svg_attlist.desc"/>
            <ref name="svg_SVG.desc.content"/>
         </element>
      </define>
      <define name="svg_attlist.desc" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
      </define>
      <define name="svg_SVG.title.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.title.content">
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="svg_SVG.title.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_title">
         <element name="title">
            <ref name="svg_attlist.title"/>
            <ref name="svg_SVG.title.content"/>
         </element>
      </define>
      <define name="svg_attlist.title" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
      </define>
      <define name="svg_SVG.metadata.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.metadata.content">
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="svg_SVG.metadata.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_metadata">
         <element name="metadata">
            <ref name="svg_attlist.metadata"/>
            <ref name="svg_SVG.metadata.content"/>
         </element>
      </define>
      <define name="svg_attlist.metadata" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
      </define>
      <define name="svg_SVG.symbol.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.symbol.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.Structure.class"/>
               <ref name="svg_SVG.Conditional.class"/>
               <ref name="svg_SVG.Image.class"/>
               <ref name="svg_SVG.Style.class"/>
               <ref name="svg_SVG.Shape.class"/>
               <ref name="svg_SVG.Text.class"/>
               <ref name="svg_SVG.Marker.class"/>
               <ref name="svg_SVG.ColorProfile.class"/>
               <ref name="svg_SVG.Gradient.class"/>
               <ref name="svg_SVG.Pattern.class"/>
               <ref name="svg_SVG.Clip.class"/>
               <ref name="svg_SVG.Mask.class"/>
               <ref name="svg_SVG.Filter.class"/>
               <ref name="svg_SVG.Cursor.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.View.class"/>
               <ref name="svg_SVG.Script.class"/>
               <ref name="svg_SVG.Font.class"/>
               <ref name="svg_SVG.symbol.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_symbol">
         <element name="symbol">
            <ref name="svg_attlist.symbol"/>
            <ref name="svg_SVG.symbol.content"/>
         </element>
      </define>
      <define name="svg_attlist.symbol" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="viewBox">
               <ref name="svg_ViewBoxSpec.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
               <ref name="svg_PreserveAspectRatioSpec.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.use.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.use.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.use.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_use">
         <element name="use">
            <ref name="svg_attlist.use"/>
            <ref name="svg_SVG.use.content"/>
         </element>
      </define>
      <define name="svg_attlist.use" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.XLinkEmbed.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="width">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="height">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.switch.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.switch.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_svg"/>
               <ref name="svg_g"/>
               <ref name="svg_use"/>
               <ref name="svg_text"/>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.Conditional.class"/>
               <ref name="svg_SVG.Image.class"/>
               <ref name="svg_SVG.Shape.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.Extensibility.class"/>
               <ref name="svg_SVG.switch.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_switch">
         <element name="switch">
            <ref name="svg_attlist.switch"/>
            <ref name="svg_SVG.switch.content"/>
         </element>
      </define>
      <define name="svg_attlist.switch" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.image.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.image.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.image.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_image">
         <element name="image">
            <ref name="svg_attlist.image"/>
            <ref name="svg_SVG.image.content"/>
         </element>
      </define>
      <define name="svg_attlist.image" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Viewport.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.ColorProfile.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.XLinkEmbed.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <attribute name="width">
            <ref name="svg_Length.datatype"/>
         </attribute>
         <attribute name="height">
            <ref name="svg_Length.datatype"/>
         </attribute>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
               <ref name="svg_PreserveAspectRatioSpec.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_MediaDesc.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.style.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.style.content">
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="svg_SVG.style.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_style">
         <element name="style">
            <ref name="svg_attlist.style"/>
            <ref name="svg_SVG.style.content"/>
         </element>
      </define>
      <define name="svg_attlist.style" combine="interleave">
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xml:space" a:defaultValue="preserve">
               <value>preserve</value>
            </attribute>
         </optional>
         <ref name="svg_SVG.id.attrib"/>
         <ref name="svg_SVG.base.attrib"/>
         <ref name="svg_SVG.lang.attrib"/>
         <ref name="svg_SVG.Core.extra.attrib"/>
         <attribute name="type">
            <ref name="svg_ContentType.datatype"/>
         </attribute>
         <optional>
            <attribute name="media">
               <ref name="svg_MediaDesc.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="title">
               <ref name="svg_Text.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_Points.datatype">
         <data type="string" datatypeLibrary=""/>
      </define>
      <define name="svg_SVG.path.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.path.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.path.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_path">
         <element name="path">
            <ref name="svg_attlist.path"/>
            <ref name="svg_SVG.path.content"/>
         </element>
      </define>
      <define name="svg_attlist.path" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Marker.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <attribute name="d">
            <ref name="svg_PathData.datatype"/>
         </attribute>
         <optional>
            <attribute name="pathLength">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.rect.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.rect.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.rect.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_rect">
         <element name="rect">
            <ref name="svg_attlist.rect"/>
            <ref name="svg_SVG.rect.content"/>
         </element>
      </define>
      <define name="svg_attlist.rect" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <attribute name="width">
            <ref name="svg_Length.datatype"/>
         </attribute>
         <attribute name="height">
            <ref name="svg_Length.datatype"/>
         </attribute>
         <optional>
            <attribute name="rx">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="ry">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.circle.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.circle.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.circle.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_circle">
         <element name="circle">
            <ref name="svg_attlist.circle"/>
            <ref name="svg_SVG.circle.content"/>
         </element>
      </define>
      <define name="svg_attlist.circle" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="cx">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="cy">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <attribute name="r">
            <ref name="svg_Length.datatype"/>
         </attribute>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.line.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.line.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.line.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_line">
         <element name="line">
            <ref name="svg_attlist.line"/>
            <ref name="svg_SVG.line.content"/>
         </element>
      </define>
      <define name="svg_attlist.line" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Marker.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x1">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y1">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="x2">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y2">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.ellipse.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.ellipse.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.ellipse.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_ellipse">
         <element name="ellipse">
            <ref name="svg_attlist.ellipse"/>
            <ref name="svg_SVG.ellipse.content"/>
         </element>
      </define>
      <define name="svg_attlist.ellipse" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="cx">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="cy">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <attribute name="rx">
            <ref name="svg_Length.datatype"/>
         </attribute>
         <attribute name="ry">
            <ref name="svg_Length.datatype"/>
         </attribute>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.polyline.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.polyline.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.polyline.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_polyline">
         <element name="polyline">
            <ref name="svg_attlist.polyline"/>
            <ref name="svg_SVG.polyline.content"/>
         </element>
      </define>
      <define name="svg_attlist.polyline" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Marker.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <attribute name="points">
            <ref name="svg_Points.datatype"/>
         </attribute>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.polygon.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.polygon.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.polygon.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_polygon">
         <element name="polygon">
            <ref name="svg_attlist.polygon"/>
            <ref name="svg_SVG.polygon.content"/>
         </element>
      </define>
      <define name="svg_attlist.polygon" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Marker.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <attribute name="points">
            <ref name="svg_Points.datatype"/>
         </attribute>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.text.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.text.content">
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.TextContent.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.text.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_text">
         <element name="text">
            <ref name="svg_attlist.text"/>
            <ref name="svg_SVG.text.content"/>
         </element>
      </define>
      <define name="svg_attlist.text" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Text.attrib"/>
         <ref name="svg_SVG.TextContent.attrib"/>
         <ref name="svg_SVG.Font.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinates.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinates.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="dx">
               <ref name="svg_Lengths.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="dy">
               <ref name="svg_Lengths.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="rotate">
               <ref name="svg_Numbers.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="textLength">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="lengthAdjust">
               <choice>
                  <value>spacing</value>
                  <value>spacingAndGlyphs</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.tspan.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.tspan.content">
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="svg_tspan"/>
               <ref name="svg_tref"/>
               <ref name="svg_altGlyph"/>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_animateColor"/>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.tspan.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_tspan">
         <element name="tspan">
            <ref name="svg_attlist.tspan"/>
            <ref name="svg_SVG.tspan.content"/>
         </element>
      </define>
      <define name="svg_attlist.tspan" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.TextContent.attrib"/>
         <ref name="svg_SVG.Font.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinates.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinates.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="dx">
               <ref name="svg_Lengths.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="dy">
               <ref name="svg_Lengths.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="rotate">
               <ref name="svg_Numbers.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="textLength">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="lengthAdjust">
               <choice>
                  <value>spacing</value>
                  <value>spacingAndGlyphs</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.tref.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.tref.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_animateColor"/>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.tref.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_tref">
         <element name="tref">
            <ref name="svg_attlist.tref"/>
            <ref name="svg_SVG.tref.content"/>
         </element>
      </define>
      <define name="svg_attlist.tref" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.TextContent.attrib"/>
         <ref name="svg_SVG.Font.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.XLinkRequired.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinates.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinates.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="dx">
               <ref name="svg_Lengths.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="dy">
               <ref name="svg_Lengths.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="rotate">
               <ref name="svg_Numbers.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="textLength">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="lengthAdjust">
               <choice>
                  <value>spacing</value>
                  <value>spacingAndGlyphs</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.textPath.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.textPath.content">
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="svg_tspan"/>
               <ref name="svg_tref"/>
               <ref name="svg_altGlyph"/>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_animateColor"/>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.textPath.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_textPath">
         <element name="textPath">
            <ref name="svg_attlist.textPath"/>
            <ref name="svg_SVG.textPath.content"/>
         </element>
      </define>
      <define name="svg_attlist.textPath" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.TextContent.attrib"/>
         <ref name="svg_SVG.Font.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.XLinkRequired.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="startOffset">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="textLength">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="lengthAdjust">
               <choice>
                  <value>spacing</value>
                  <value>spacingAndGlyphs</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="method">
               <choice>
                  <value>align</value>
                  <value>stretch</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="spacing">
               <choice>
                  <value>auto</value>
                  <value>exact</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.altGlyph.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.altGlyph.content">
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="svg_SVG.altGlyph.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_altGlyph">
         <element name="altGlyph">
            <ref name="svg_attlist.altGlyph"/>
            <ref name="svg_SVG.altGlyph.content"/>
         </element>
      </define>
      <define name="svg_attlist.altGlyph" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.TextContent.attrib"/>
         <ref name="svg_SVG.Font.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.XLink.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinates.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinates.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="dx">
               <ref name="svg_Lengths.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="dy">
               <ref name="svg_Lengths.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="glyphRef"/>
         </optional>
         <optional>
            <attribute name="format"/>
         </optional>
         <optional>
            <attribute name="rotate">
               <ref name="svg_Numbers.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.altGlyphDef.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.altGlyphDef.content">
         <choice>
            <choice>
               <oneOrMore>
                  <ref name="svg_glyphRef"/>
               </oneOrMore>
               <oneOrMore>
                  <ref name="svg_altGlyphItem"/>
               </oneOrMore>
            </choice>
            <ref name="svg_SVG.altGlyphDef.extra.content"/>
         </choice>
      </define>
      <define name="svg_altGlyphDef">
         <element name="altGlyphDef">
            <ref name="svg_attlist.altGlyphDef"/>
            <ref name="svg_SVG.altGlyphDef.content"/>
         </element>
      </define>
      <define name="svg_attlist.altGlyphDef" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
      </define>
      <define name="svg_SVG.altGlyphItem.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.altGlyphItem.content">
         <choice>
            <oneOrMore>
               <ref name="svg_glyphRef"/>
            </oneOrMore>
            <ref name="svg_SVG.altGlyphItem.extra.content"/>
         </choice>
      </define>
      <define name="svg_altGlyphItem">
         <element name="altGlyphItem">
            <ref name="svg_attlist.altGlyphItem"/>
            <ref name="svg_SVG.altGlyphItem.content"/>
         </element>
      </define>
      <define name="svg_attlist.altGlyphItem" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
      </define>
      <define name="svg_SVG.glyphRef.content">
         <empty/>
      </define>
      <define name="svg_glyphRef">
         <element name="glyphRef">
            <ref name="svg_attlist.glyphRef"/>
            <ref name="svg_SVG.glyphRef.content"/>
         </element>
      </define>
      <define name="svg_attlist.glyphRef" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Font.attrib"/>
         <ref name="svg_SVG.XLink.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="dx">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="dy">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="glyphRef"/>
         </optional>
         <optional>
            <attribute name="format"/>
         </optional>
      </define>
      <define name="svg_SVG.marker.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.marker.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.Structure.class"/>
               <ref name="svg_SVG.Conditional.class"/>
               <ref name="svg_SVG.Image.class"/>
               <ref name="svg_SVG.Style.class"/>
               <ref name="svg_SVG.Shape.class"/>
               <ref name="svg_SVG.Text.class"/>
               <ref name="svg_SVG.Marker.class"/>
               <ref name="svg_SVG.ColorProfile.class"/>
               <ref name="svg_SVG.Gradient.class"/>
               <ref name="svg_SVG.Pattern.class"/>
               <ref name="svg_SVG.Clip.class"/>
               <ref name="svg_SVG.Mask.class"/>
               <ref name="svg_SVG.Filter.class"/>
               <ref name="svg_SVG.Cursor.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.View.class"/>
               <ref name="svg_SVG.Script.class"/>
               <ref name="svg_SVG.Font.class"/>
               <ref name="svg_SVG.marker.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_marker">
         <element name="marker">
            <ref name="svg_attlist.marker"/>
            <ref name="svg_SVG.marker.content"/>
         </element>
      </define>
      <define name="svg_attlist.marker" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="refX">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="refY">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="markerUnits">
               <choice>
                  <value>strokeWidth</value>
                  <value>userSpaceOnUse</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="markerWidth">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="markerHeight">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="orient"/>
         </optional>
         <optional>
            <attribute name="viewBox">
               <ref name="svg_ViewBoxSpec.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
               <ref name="svg_PreserveAspectRatioSpec.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.color-profile.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.color-profile.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.color-profile.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_color-profile">
         <element name="color-profile">
            <ref name="svg_attlist.color-profile"/>
            <ref name="svg_SVG.color-profile.content"/>
         </element>
      </define>
      <define name="svg_attlist.color-profile" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.XLink.attrib"/>
         <optional>
            <attribute name="local"/>
         </optional>
         <attribute name="name"/>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="rendering-intent" a:defaultValue="auto">
               <choice>
                  <value>auto</value>
                  <value>perceptual</value>
                  <value>relative-colorimetric</value>
                  <value>saturation</value>
                  <value>absolute-colorimetric</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.linearGradient.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.linearGradient.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_stop"/>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_animateTransform"/>
               <ref name="svg_SVG.linearGradient.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_linearGradient">
         <element name="linearGradient">
            <ref name="svg_attlist.linearGradient"/>
            <ref name="svg_SVG.linearGradient.content"/>
         </element>
      </define>
      <define name="svg_attlist.linearGradient" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Gradient.attrib"/>
         <ref name="svg_SVG.XLink.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x1">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y1">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="x2">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y2">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="gradientUnits">
               <choice>
                  <value>userSpaceOnUse</value>
                  <value>objectBoundingBox</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="gradientTransform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="spreadMethod">
               <choice>
                  <value>pad</value>
                  <value>reflect</value>
                  <value>repeat</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.radialGradient.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.radialGradient.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_stop"/>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_animateTransform"/>
               <ref name="svg_SVG.radialGradient.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_radialGradient">
         <element name="radialGradient">
            <ref name="svg_attlist.radialGradient"/>
            <ref name="svg_SVG.radialGradient.content"/>
         </element>
      </define>
      <define name="svg_attlist.radialGradient" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Gradient.attrib"/>
         <ref name="svg_SVG.XLink.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="cx">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="cy">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="r">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="fx">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="fy">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="gradientUnits">
               <choice>
                  <value>userSpaceOnUse</value>
                  <value>objectBoundingBox</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="gradientTransform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="spreadMethod">
               <choice>
                  <value>pad</value>
                  <value>reflect</value>
                  <value>repeat</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.stop.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.stop.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_animateColor"/>
               <ref name="svg_SVG.stop.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_stop">
         <element name="stop">
            <ref name="svg_attlist.stop"/>
            <ref name="svg_SVG.stop.content"/>
         </element>
      </define>
      <define name="svg_attlist.stop" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Gradient.attrib"/>
         <attribute name="offset">
            <ref name="svg_NumberOrPercentage.datatype"/>
         </attribute>
      </define>
      <define name="svg_SVG.pattern.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.pattern.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.Structure.class"/>
               <ref name="svg_SVG.Conditional.class"/>
               <ref name="svg_SVG.Image.class"/>
               <ref name="svg_SVG.Style.class"/>
               <ref name="svg_SVG.Shape.class"/>
               <ref name="svg_SVG.Text.class"/>
               <ref name="svg_SVG.Marker.class"/>
               <ref name="svg_SVG.ColorProfile.class"/>
               <ref name="svg_SVG.Gradient.class"/>
               <ref name="svg_SVG.Pattern.class"/>
               <ref name="svg_SVG.Clip.class"/>
               <ref name="svg_SVG.Mask.class"/>
               <ref name="svg_SVG.Filter.class"/>
               <ref name="svg_SVG.Cursor.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.View.class"/>
               <ref name="svg_SVG.Script.class"/>
               <ref name="svg_SVG.Font.class"/>
               <ref name="svg_SVG.pattern.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_svgpattern">
         <element name="pattern">
            <ref name="svg_attlist.pattern"/>
            <ref name="svg_SVG.pattern.content"/>
         </element>
      </define>
      <define name="svg_attlist.pattern" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.XLink.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="width">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="height">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="patternUnits">
               <choice>
                  <value>userSpaceOnUse</value>
                  <value>objectBoundingBox</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="patternContentUnits">
               <choice>
                  <value>userSpaceOnUse</value>
                  <value>objectBoundingBox</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="patternTransform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="viewBox">
               <ref name="svg_ViewBoxSpec.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
               <ref name="svg_PreserveAspectRatioSpec.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.clipPath.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.clipPath.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.Use.class"/>
               <ref name="svg_SVG.Shape.class"/>
               <ref name="svg_SVG.Text.class"/>
               <ref name="svg_SVG.clipPath.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_clipPath">
         <element name="clipPath">
            <ref name="svg_attlist.clipPath"/>
            <ref name="svg_SVG.clipPath.content"/>
         </element>
      </define>
      <define name="svg_attlist.clipPath" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Text.attrib"/>
         <ref name="svg_SVG.TextContent.attrib"/>
         <ref name="svg_SVG.Font.attrib"/>
         <ref name="svg_SVG.Paint.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.Opacity.attrib"/>
         <ref name="svg_SVG.Graphics.attrib"/>
         <ref name="svg_SVG.Clip.attrib"/>
         <ref name="svg_SVG.Mask.attrib"/>
         <ref name="svg_SVG.Filter.attrib"/>
         <ref name="svg_SVG.Cursor.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="clipPathUnits">
               <choice>
                  <value>userSpaceOnUse</value>
                  <value>objectBoundingBox</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.mask.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.mask.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.Structure.class"/>
               <ref name="svg_SVG.Conditional.class"/>
               <ref name="svg_SVG.Image.class"/>
               <ref name="svg_SVG.Style.class"/>
               <ref name="svg_SVG.Shape.class"/>
               <ref name="svg_SVG.Text.class"/>
               <ref name="svg_SVG.Marker.class"/>
               <ref name="svg_SVG.ColorProfile.class"/>
               <ref name="svg_SVG.Gradient.class"/>
               <ref name="svg_SVG.Pattern.class"/>
               <ref name="svg_SVG.Clip.class"/>
               <ref name="svg_SVG.Mask.class"/>
               <ref name="svg_SVG.Filter.class"/>
               <ref name="svg_SVG.Cursor.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.View.class"/>
               <ref name="svg_SVG.Script.class"/>
               <ref name="svg_SVG.Font.class"/>
               <ref name="svg_SVG.mask.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_mask">
         <element name="mask">
            <ref name="svg_attlist.mask"/>
            <ref name="svg_SVG.mask.content"/>
         </element>
      </define>
      <define name="svg_attlist.mask" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="width">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="height">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="maskUnits">
               <choice>
                  <value>userSpaceOnUse</value>
                  <value>objectBoundingBox</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="maskContentUnits">
               <choice>
                  <value>userSpaceOnUse</value>
                  <value>objectBoundingBox</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.FilterPrimitive.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.FilterPrimitive.attrib">
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="width">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="height">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="result"/>
         </optional>
         <ref name="svg_SVG.FilterPrimitive.extra.attrib"/>
      </define>
      <define name="svg_SVG.FilterPrimitiveWithIn.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.FilterPrimitiveWithIn.attrib">
         <ref name="svg_SVG.FilterPrimitive.attrib"/>
         <optional>
            <attribute name="in"/>
         </optional>
         <ref name="svg_SVG.FilterPrimitiveWithIn.extra.attrib"/>
      </define>
      <define name="svg_SVG.filter.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.filter.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.FilterPrimitive.class"/>
               <ref name="svg_SVG.filter.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_filter">
         <element name="filter">
            <ref name="svg_attlist.filter"/>
            <ref name="svg_SVG.filter.content"/>
         </element>
      </define>
      <define name="svg_attlist.filter" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.XLink.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="width">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="height">
               <ref name="svg_Length.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="filterRes">
               <ref name="svg_NumberOptionalNumber.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="filterUnits">
               <choice>
                  <value>userSpaceOnUse</value>
                  <value>objectBoundingBox</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="primitiveUnits">
               <choice>
                  <value>userSpaceOnUse</value>
                  <value>objectBoundingBox</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feBlend.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feBlend.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feBlend.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feBlend">
         <element name="feBlend">
            <ref name="svg_attlist.feBlend"/>
            <ref name="svg_SVG.feBlend.content"/>
         </element>
      </define>
      <define name="svg_attlist.feBlend" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitiveWithIn.attrib"/>
         <attribute name="in2"/>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="mode"
               a:defaultValue="normal">
               <choice>
                  <value>normal</value>
                  <value>multiply</value>
                  <value>screen</value>
                  <value>darken</value>
                  <value>lighten</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feColorMatrix.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feColorMatrix.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feColorMatrix.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feColorMatrix">
         <element name="feColorMatrix">
            <ref name="svg_attlist.feColorMatrix"/>
            <ref name="svg_SVG.feColorMatrix.content"/>
         </element>
      </define>
      <define name="svg_attlist.feColorMatrix" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitiveWithIn.attrib"/>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="type"
               a:defaultValue="matrix">
               <choice>
                  <value>matrix</value>
                  <value>saturate</value>
                  <value>hueRotate</value>
                  <value>luminanceToAlpha</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="values"/>
         </optional>
      </define>
      <define name="svg_SVG.feComponentTransfer.extra.content">
         <empty/>
      </define>
      <define name="svg_SVG.feComponentTransfer.content">
         <optional>
            <ref name="svg_feFuncR"/>
         </optional>
         <optional>
            <ref name="svg_feFuncG"/>
         </optional>
         <optional>
            <ref name="svg_feFuncB"/>
         </optional>
         <optional>
            <ref name="svg_feFuncA"/>
         </optional>
         <ref name="svg_SVG.feComponentTransfer.extra.content"/>
      </define>
      <define name="svg_feComponentTransfer">
         <element name="feComponentTransfer">
            <ref name="svg_attlist.feComponentTransfer"/>
            <ref name="svg_SVG.feComponentTransfer.content"/>
         </element>
      </define>
      <define name="svg_attlist.feComponentTransfer" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitiveWithIn.attrib"/>
      </define>
      <define name="svg_SVG.feComposite.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feComposite.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feComposite.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feComposite">
         <element name="feComposite">
            <ref name="svg_attlist.feComposite"/>
            <ref name="svg_SVG.feComposite.content"/>
         </element>
      </define>
      <define name="svg_attlist.feComposite" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitiveWithIn.attrib"/>
         <attribute name="in2"/>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="operator"
               a:defaultValue="over">
               <choice>
                  <value>over</value>
                  <value>in</value>
                  <value>out</value>
                  <value>atop</value>
                  <value>xor</value>
                  <value>arithmetic</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="k1">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="k2">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="k3">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="k4">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feConvolveMatrix.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feConvolveMatrix.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feConvolveMatrix.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feConvolveMatrix">
         <element name="feConvolveMatrix">
            <ref name="svg_attlist.feConvolveMatrix"/>
            <ref name="svg_SVG.feConvolveMatrix.content"/>
         </element>
      </define>
      <define name="svg_attlist.feConvolveMatrix" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitiveWithIn.attrib"/>
         <attribute name="order">
            <ref name="svg_NumberOptionalNumber.datatype"/>
         </attribute>
         <attribute name="kernelMatrix"/>
         <optional>
            <attribute name="divisor">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="bias">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="targetX">
               <ref name="svg_Integer.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="targetY">
               <ref name="svg_Integer.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="edgeMode"
               a:defaultValue="duplicate">
               <choice>
                  <value>duplicate</value>
                  <value>wrap</value>
                  <value>none</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="kernelUnitLength">
               <ref name="svg_NumberOptionalNumber.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="preserveAlpha">
               <ref name="svg_Boolean.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feDiffuseLighting.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feDiffuseLighting.content">
         <choice>
            <ref name="svg_feDistantLight"/>
            <ref name="svg_fePointLight"/>
            <ref name="svg_feSpotLight"/>
         </choice>
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_animateColor"/>
               <ref name="svg_SVG.feDiffuseLighting.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feDiffuseLighting">
         <element name="feDiffuseLighting">
            <ref name="svg_attlist.feDiffuseLighting"/>
            <ref name="svg_SVG.feDiffuseLighting.content"/>
         </element>
      </define>
      <define name="svg_attlist.feDiffuseLighting" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitiveWithIn.attrib"/>
         <optional>
            <attribute name="lighting-color">
               <ref name="svg_SVGColor.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="surfaceScale">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="diffuseConstant">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="kernelUnitLength">
               <ref name="svg_NumberOptionalNumber.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feDisplacementMap.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feDisplacementMap.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feDisplacementMap.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feDisplacementMap">
         <element name="feDisplacementMap">
            <ref name="svg_attlist.feDisplacementMap"/>
            <ref name="svg_SVG.feDisplacementMap.content"/>
         </element>
      </define>
      <define name="svg_attlist.feDisplacementMap" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitiveWithIn.attrib"/>
         <attribute name="in2"/>
         <optional>
            <attribute name="scale">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="xChannelSelector" a:defaultValue="A">
               <choice>
                  <value>R</value>
                  <value>G</value>
                  <value>B</value>
                  <value>A</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="yChannelSelector" a:defaultValue="A">
               <choice>
                  <value>R</value>
                  <value>G</value>
                  <value>B</value>
                  <value>A</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feFlood.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feFlood.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_animateColor"/>
               <ref name="svg_SVG.feFlood.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feFlood">
         <element name="feFlood">
            <ref name="svg_attlist.feFlood"/>
            <ref name="svg_SVG.feFlood.content"/>
         </element>
      </define>
      <define name="svg_attlist.feFlood" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitiveWithIn.attrib"/>
         <optional>
            <attribute name="flood-color">
               <ref name="svg_SVGColor.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="flood-opacity">
               <ref name="svg_OpacityValue.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feGaussianBlur.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feGaussianBlur.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feGaussianBlur.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feGaussianBlur">
         <element name="feGaussianBlur">
            <ref name="svg_attlist.feGaussianBlur"/>
            <ref name="svg_SVG.feGaussianBlur.content"/>
         </element>
      </define>
      <define name="svg_attlist.feGaussianBlur" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitiveWithIn.attrib"/>
         <optional>
            <attribute name="stdDeviation">
               <ref name="svg_NumberOptionalNumber.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feImage.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feImage.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_animateTransform"/>
               <ref name="svg_SVG.feImage.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feImage">
         <element name="feImage">
            <ref name="svg_attlist.feImage"/>
            <ref name="svg_SVG.feImage.content"/>
         </element>
      </define>
      <define name="svg_attlist.feImage" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.FilterPrimitive.attrib"/>
         <ref name="svg_SVG.XLinkEmbed.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
               <ref name="svg_PreserveAspectRatioSpec.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feMerge.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feMerge.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_feMergeNode"/>
               <ref name="svg_SVG.feMerge.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feMerge">
         <element name="feMerge">
            <ref name="svg_attlist.feMerge"/>
            <ref name="svg_SVG.feMerge.content"/>
         </element>
      </define>
      <define name="svg_attlist.feMerge" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitive.attrib"/>
      </define>
      <define name="svg_SVG.feMergeNode.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feMergeNode.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feMergeNode.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feMergeNode">
         <element name="feMergeNode">
            <ref name="svg_attlist.feMergeNode"/>
            <ref name="svg_SVG.feMergeNode.content"/>
         </element>
      </define>
      <define name="svg_attlist.feMergeNode" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <optional>
            <attribute name="in"/>
         </optional>
      </define>
      <define name="svg_SVG.feMorphology.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feMorphology.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feMorphology.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feMorphology">
         <element name="feMorphology">
            <ref name="svg_attlist.feMorphology"/>
            <ref name="svg_SVG.feMorphology.content"/>
         </element>
      </define>
      <define name="svg_attlist.feMorphology" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitiveWithIn.attrib"/>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="operator"
               a:defaultValue="erode">
               <choice>
                  <value>erode</value>
                  <value>dilate</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="radius">
               <ref name="svg_NumberOptionalNumber.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feOffset.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feOffset.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feOffset.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feOffset">
         <element name="feOffset">
            <ref name="svg_attlist.feOffset"/>
            <ref name="svg_SVG.feOffset.content"/>
         </element>
      </define>
      <define name="svg_attlist.feOffset" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitiveWithIn.attrib"/>
         <optional>
            <attribute name="dx">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="dy">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feSpecularLighting.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feSpecularLighting.content">
         <choice>
            <ref name="svg_feDistantLight"/>
            <ref name="svg_fePointLight"/>
            <ref name="svg_feSpotLight"/>
         </choice>
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_animateColor"/>
               <ref name="svg_SVG.feSpecularLighting.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feSpecularLighting">
         <element name="feSpecularLighting">
            <ref name="svg_attlist.feSpecularLighting"/>
            <ref name="svg_SVG.feSpecularLighting.content"/>
         </element>
      </define>
      <define name="svg_attlist.feSpecularLighting" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Color.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitiveWithIn.attrib"/>
         <optional>
            <attribute name="lighting-color">
               <ref name="svg_SVGColor.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="surfaceScale">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="specularConstant">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="specularExponent">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="kernelUnitLength">
               <ref name="svg_NumberOptionalNumber.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feTile.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feTile.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feTile.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feTile">
         <element name="feTile">
            <ref name="svg_attlist.feTile"/>
            <ref name="svg_SVG.feTile.content"/>
         </element>
      </define>
      <define name="svg_attlist.feTile" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitiveWithIn.attrib"/>
      </define>
      <define name="svg_SVG.feTurbulence.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feTurbulence.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feTurbulence.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feTurbulence">
         <element name="feTurbulence">
            <ref name="svg_attlist.feTurbulence"/>
            <ref name="svg_SVG.feTurbulence.content"/>
         </element>
      </define>
      <define name="svg_attlist.feTurbulence" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.FilterColor.attrib"/>
         <ref name="svg_SVG.FilterPrimitive.attrib"/>
         <optional>
            <attribute name="baseFrequency">
               <ref name="svg_NumberOptionalNumber.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="numOctaves">
               <ref name="svg_Integer.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="seed">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="stitchTiles" a:defaultValue="noStitch">
               <choice>
                  <value>stitch</value>
                  <value>noStitch</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="type"
               a:defaultValue="turbulence">
               <choice>
                  <value>fractalNoise</value>
                  <value>turbulence</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feDistantLight.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feDistantLight.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feDistantLight.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feDistantLight">
         <element name="feDistantLight">
            <ref name="svg_attlist.feDistantLight"/>
            <ref name="svg_SVG.feDistantLight.content"/>
         </element>
      </define>
      <define name="svg_attlist.feDistantLight" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <optional>
            <attribute name="azimuth">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="elevation">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.fePointLight.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.fePointLight.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.fePointLight.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_fePointLight">
         <element name="fePointLight">
            <ref name="svg_attlist.fePointLight"/>
            <ref name="svg_SVG.fePointLight.content"/>
         </element>
      </define>
      <define name="svg_attlist.fePointLight" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="z">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feSpotLight.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feSpotLight.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feSpotLight.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feSpotLight">
         <element name="feSpotLight">
            <ref name="svg_attlist.feSpotLight"/>
            <ref name="svg_SVG.feSpotLight.content"/>
         </element>
      </define>
      <define name="svg_attlist.feSpotLight" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="z">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="pointsAtX">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="pointsAtY">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="pointsAtZ">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="specularExponent">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="limitingConeAngle">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feFuncR.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feFuncR.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feFuncR.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feFuncR">
         <element name="feFuncR">
            <ref name="svg_attlist.feFuncR"/>
            <ref name="svg_SVG.feFuncR.content"/>
         </element>
      </define>
      <define name="svg_attlist.feFuncR" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <attribute name="type">
            <choice>
               <value>identity</value>
               <value>table</value>
               <value>discrete</value>
               <value>linear</value>
               <value>gamma</value>
            </choice>
         </attribute>
         <optional>
            <attribute name="tableValues"/>
         </optional>
         <optional>
            <attribute name="slope">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="intercept">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="amplitude">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="exponent">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="offset">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feFuncG.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feFuncG.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feFuncG.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feFuncG">
         <element name="feFuncG">
            <ref name="svg_attlist.feFuncG"/>
            <ref name="svg_SVG.feFuncG.content"/>
         </element>
      </define>
      <define name="svg_attlist.feFuncG" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <attribute name="type">
            <choice>
               <value>identity</value>
               <value>table</value>
               <value>discrete</value>
               <value>linear</value>
               <value>gamma</value>
            </choice>
         </attribute>
         <optional>
            <attribute name="tableValues"/>
         </optional>
         <optional>
            <attribute name="slope">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="intercept">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="amplitude">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="exponent">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="offset">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feFuncB.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feFuncB.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feFuncB.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feFuncB">
         <element name="feFuncB">
            <ref name="svg_attlist.feFuncB"/>
            <ref name="svg_SVG.feFuncB.content"/>
         </element>
      </define>
      <define name="svg_attlist.feFuncB" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <attribute name="type">
            <choice>
               <value>identity</value>
               <value>table</value>
               <value>discrete</value>
               <value>linear</value>
               <value>gamma</value>
            </choice>
         </attribute>
         <optional>
            <attribute name="tableValues"/>
         </optional>
         <optional>
            <attribute name="slope">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="intercept">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="amplitude">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="exponent">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="offset">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.feFuncA.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.feFuncA.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_animate"/>
               <ref name="svg_set"/>
               <ref name="svg_SVG.feFuncA.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_feFuncA">
         <element name="feFuncA">
            <ref name="svg_attlist.feFuncA"/>
            <ref name="svg_SVG.feFuncA.content"/>
         </element>
      </define>
      <define name="svg_attlist.feFuncA" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <attribute name="type">
            <choice>
               <value>identity</value>
               <value>table</value>
               <value>discrete</value>
               <value>linear</value>
               <value>gamma</value>
            </choice>
         </attribute>
         <optional>
            <attribute name="tableValues"/>
         </optional>
         <optional>
            <attribute name="slope">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="intercept">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="amplitude">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="exponent">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="offset">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.cursor.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.cursor.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.cursor.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_cursor">
         <element name="cursor">
            <ref name="svg_attlist.cursor"/>
            <ref name="svg_SVG.cursor.content"/>
         </element>
      </define>
      <define name="svg_attlist.cursor" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.XLinkRequired.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_LinkTarget.datatype">
         <data type="NMTOKEN"/>
      </define>
      <define name="svg_SVG.a.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.a.content">
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.Structure.class"/>
               <ref name="svg_SVG.Conditional.class"/>
               <ref name="svg_SVG.Image.class"/>
               <ref name="svg_SVG.Style.class"/>
               <ref name="svg_SVG.Shape.class"/>
               <ref name="svg_SVG.Text.class"/>
               <ref name="svg_SVG.Marker.class"/>
               <ref name="svg_SVG.ColorProfile.class"/>
               <ref name="svg_SVG.Gradient.class"/>
               <ref name="svg_SVG.Pattern.class"/>
               <ref name="svg_SVG.Clip.class"/>
               <ref name="svg_SVG.Mask.class"/>
               <ref name="svg_SVG.Filter.class"/>
               <ref name="svg_SVG.Cursor.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.View.class"/>
               <ref name="svg_SVG.Script.class"/>
               <ref name="svg_SVG.Font.class"/>
               <ref name="svg_SVG.a.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_a">
         <element name="a">
            <ref name="svg_attlist.a"/>
            <ref name="svg_SVG.a.content"/>
         </element>
      </define>
      <define name="svg_attlist.a" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.XLinkReplace.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="target">
               <ref name="svg_LinkTarget.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.view.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.view.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.view.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_view">
         <element name="view">
            <ref name="svg_attlist.view"/>
            <ref name="svg_SVG.view.content"/>
         </element>
      </define>
      <define name="svg_attlist.view" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="viewBox">
               <ref name="svg_ViewBoxSpec.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
               <ref name="svg_PreserveAspectRatioSpec.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="zoomAndPan" a:defaultValue="magnify">
               <choice>
                  <value>disable</value>
                  <value>magnify</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="viewTarget"/>
         </optional>
      </define>
      <define name="svg_SVG.script.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.script.content">
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="svg_SVG.script.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_script">
         <element name="script">
            <ref name="svg_attlist.script"/>
            <ref name="svg_SVG.script.content"/>
         </element>
      </define>
      <define name="svg_attlist.script" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.XLink.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <attribute name="type">
            <ref name="svg_ContentType.datatype"/>
         </attribute>
      </define>
      <define name="svg_SVG.Animation.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.Animation.attrib">
         <ref name="svg_SVG.XLink.attrib"/>
         <ref name="svg_SVG.Animation.extra.attrib"/>
      </define>
      <define name="svg_SVG.AnimationAttribute.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.AnimationAttribute.attrib">
         <attribute name="attributeName"/>
         <optional>
            <attribute name="attributeType"/>
         </optional>
         <ref name="svg_SVG.AnimationAttribute.extra.attrib"/>
      </define>
      <define name="svg_SVG.AnimationTiming.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.AnimationTiming.attrib">
         <optional>
            <attribute name="begin"/>
         </optional>
         <optional>
            <attribute name="dur"/>
         </optional>
         <optional>
            <attribute name="end"/>
         </optional>
         <optional>
            <attribute name="min"/>
         </optional>
         <optional>
            <attribute name="max"/>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="restart"
               a:defaultValue="always">
               <choice>
                  <value>always</value>
                  <value>never</value>
                  <value>whenNotActive</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="repeatCount"/>
         </optional>
         <optional>
            <attribute name="repeatDur"/>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="fill"
               a:defaultValue="remove">
               <choice>
                  <value>remove</value>
                  <value>freeze</value>
               </choice>
            </attribute>
         </optional>
         <ref name="svg_SVG.AnimationTiming.extra.attrib"/>
      </define>
      <define name="svg_SVG.AnimationValue.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.AnimationValue.attrib">
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="calcMode"
               a:defaultValue="linear">
               <choice>
                  <value>discrete</value>
                  <value>linear</value>
                  <value>paced</value>
                  <value>spline</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="values"/>
         </optional>
         <optional>
            <attribute name="keyTimes"/>
         </optional>
         <optional>
            <attribute name="keySplines"/>
         </optional>
         <optional>
            <attribute name="from"/>
         </optional>
         <optional>
            <attribute name="to"/>
         </optional>
         <optional>
            <attribute name="by"/>
         </optional>
         <ref name="svg_SVG.AnimationValue.extra.attrib"/>
      </define>
      <define name="svg_SVG.AnimationAddtion.extra.attrib">
         <empty/>
      </define>
      <define name="svg_SVG.AnimationAddtion.attrib">
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="additive"
               a:defaultValue="replace">
               <choice>
                  <value>replace</value>
                  <value>sum</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               name="accumulate" a:defaultValue="none">
               <choice>
                  <value>none</value>
                  <value>sum</value>
               </choice>
            </attribute>
         </optional>
         <ref name="svg_SVG.AnimationAddtion.extra.attrib"/>
      </define>
      <define name="svg_SVG.animate.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.animate.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.animate.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_animate">
         <element name="animate">
            <ref name="svg_attlist.animate"/>
            <ref name="svg_SVG.animate.content"/>
         </element>
      </define>
      <define name="svg_attlist.animate" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.AnimationEvents.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <ref name="svg_SVG.Animation.attrib"/>
         <ref name="svg_SVG.AnimationAttribute.attrib"/>
         <ref name="svg_SVG.AnimationTiming.attrib"/>
         <ref name="svg_SVG.AnimationValue.attrib"/>
         <ref name="svg_SVG.AnimationAddtion.attrib"/>
      </define>
      <define name="svg_SVG.set.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.set.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.set.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_set">
         <element name="set">
            <ref name="svg_attlist.set"/>
            <ref name="svg_SVG.set.content"/>
         </element>
      </define>
      <define name="svg_attlist.set" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.AnimationEvents.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <ref name="svg_SVG.Animation.attrib"/>
         <ref name="svg_SVG.AnimationAttribute.attrib"/>
         <ref name="svg_SVG.AnimationTiming.attrib"/>
         <optional>
            <attribute name="to"/>
         </optional>
      </define>
      <define name="svg_SVG.animateMotion.extra.content">
         <empty/>
      </define>
      <define name="svg_SVG.animateMotion.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <optional>
            <ref name="svg_mpath"/>
         </optional>
         <ref name="svg_SVG.animateMotion.extra.content"/>
      </define>
      <define name="svg_animateMotion">
         <element name="animateMotion">
            <ref name="svg_attlist.animateMotion"/>
            <ref name="svg_SVG.animateMotion.content"/>
         </element>
      </define>
      <define name="svg_attlist.animateMotion" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.AnimationEvents.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <ref name="svg_SVG.Animation.attrib"/>
         <ref name="svg_SVG.AnimationTiming.attrib"/>
         <ref name="svg_SVG.AnimationAddtion.attrib"/>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="calcMode"
               a:defaultValue="paced">
               <choice>
                  <value>discrete</value>
                  <value>linear</value>
                  <value>paced</value>
                  <value>spline</value>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="values"/>
         </optional>
         <optional>
            <attribute name="keyTimes"/>
         </optional>
         <optional>
            <attribute name="keySplines"/>
         </optional>
         <optional>
            <attribute name="from"/>
         </optional>
         <optional>
            <attribute name="to"/>
         </optional>
         <optional>
            <attribute name="by"/>
         </optional>
         <optional>
            <attribute name="path"/>
         </optional>
         <optional>
            <attribute name="keyPoints"/>
         </optional>
         <optional>
            <attribute name="rotate"/>
         </optional>
         <optional>
            <attribute name="origin"/>
         </optional>
      </define>
      <define name="svg_SVG.animateColor.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.animateColor.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.animateColor.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_animateColor">
         <element name="animateColor">
            <ref name="svg_attlist.animateColor"/>
            <ref name="svg_SVG.animateColor.content"/>
         </element>
      </define>
      <define name="svg_attlist.animateColor" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.AnimationEvents.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <ref name="svg_SVG.Animation.attrib"/>
         <ref name="svg_SVG.AnimationAttribute.attrib"/>
         <ref name="svg_SVG.AnimationTiming.attrib"/>
         <ref name="svg_SVG.AnimationValue.attrib"/>
         <ref name="svg_SVG.AnimationAddtion.attrib"/>
      </define>
      <define name="svg_SVG.animateTransform.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.animateTransform.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.animateTransform.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_animateTransform">
         <element name="animateTransform">
            <ref name="svg_attlist.animateTransform"/>
            <ref name="svg_SVG.animateTransform.content"/>
         </element>
      </define>
      <define name="svg_attlist.animateTransform" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.AnimationEvents.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <ref name="svg_SVG.Animation.attrib"/>
         <ref name="svg_SVG.AnimationAttribute.attrib"/>
         <ref name="svg_SVG.AnimationTiming.attrib"/>
         <ref name="svg_SVG.AnimationValue.attrib"/>
         <ref name="svg_SVG.AnimationAddtion.attrib"/>
         <optional>
            <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="type"
               a:defaultValue="translate">
               <choice>
                  <value>translate</value>
                  <value>scale</value>
                  <value>rotate</value>
                  <value>skewX</value>
                  <value>skewY</value>
               </choice>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.mpath.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.mpath.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.mpath.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_mpath">
         <element name="mpath">
            <ref name="svg_attlist.mpath"/>
            <ref name="svg_SVG.mpath.content"/>
         </element>
      </define>
      <define name="svg_attlist.mpath" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.XLinkRequired.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
      </define>
      <define name="svg_SVG.font.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.font.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <ref name="svg_font-face"/>
         <ref name="svg_missing-glyph"/>
         <zeroOrMore>
            <choice>
               <ref name="svg_glyph"/>
               <ref name="svg_hkern"/>
               <ref name="svg_vkern"/>
               <ref name="svg_SVG.font.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_font">
         <element name="font">
            <ref name="svg_attlist.font"/>
            <ref name="svg_SVG.font.content"/>
         </element>
      </define>
      <define name="svg_attlist.font" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="horiz-origin-x">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="horiz-origin-y">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <attribute name="horiz-adv-x">
            <ref name="svg_Number.datatype"/>
         </attribute>
         <optional>
            <attribute name="vert-origin-x">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="vert-origin-y">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="vert-adv-y">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.font-face.extra.content">
         <empty/>
      </define>
      <define name="svg_SVG.font-face.content">
         <zeroOrMore>
            <ref name="svg_SVG.Description.class"/>
         </zeroOrMore>
         <optional>
            <ref name="svg_font-face-src"/>
         </optional>
         <optional>
            <ref name="svg_definition-src"/>
         </optional>
         <ref name="svg_SVG.font-face.extra.content"/>
      </define>
      <define name="svg_font-face">
         <element name="font-face">
            <ref name="svg_attlist.font-face"/>
            <ref name="svg_SVG.font-face.content"/>
         </element>
      </define>
      <define name="svg_attlist.font-face" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <optional>
            <attribute name="font-family"/>
         </optional>
         <optional>
            <attribute name="font-style"/>
         </optional>
         <optional>
            <attribute name="font-variant"/>
         </optional>
         <optional>
            <attribute name="font-weight"/>
         </optional>
         <optional>
            <attribute name="font-stretch"/>
         </optional>
         <optional>
            <attribute name="font-size"/>
         </optional>
         <optional>
            <attribute name="unicode-range"/>
         </optional>
         <optional>
            <attribute name="units-per-em">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="panose-1"/>
         </optional>
         <optional>
            <attribute name="stemv">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="stemh">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="slope">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="cap-height">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="x-height">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="accent-height">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="ascent">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="descent">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="widths"/>
         </optional>
         <optional>
            <attribute name="bbox"/>
         </optional>
         <optional>
            <attribute name="ideographic">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="alphabetic">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="mathematical">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="hanging">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="v-ideographic">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="v-alphabetic">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="v-mathematical">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="v-hanging">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="underline-position">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="underline-thickness">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="strikethrough-position">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="strikethrough-thickness">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="overline-position">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="overline-thickness">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.glyph.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.glyph.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.Structure.class"/>
               <ref name="svg_SVG.Conditional.class"/>
               <ref name="svg_SVG.Image.class"/>
               <ref name="svg_SVG.Style.class"/>
               <ref name="svg_SVG.Shape.class"/>
               <ref name="svg_SVG.Text.class"/>
               <ref name="svg_SVG.Marker.class"/>
               <ref name="svg_SVG.ColorProfile.class"/>
               <ref name="svg_SVG.Gradient.class"/>
               <ref name="svg_SVG.Pattern.class"/>
               <ref name="svg_SVG.Clip.class"/>
               <ref name="svg_SVG.Mask.class"/>
               <ref name="svg_SVG.Filter.class"/>
               <ref name="svg_SVG.Cursor.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.View.class"/>
               <ref name="svg_SVG.Script.class"/>
               <ref name="svg_SVG.Font.class"/>
               <ref name="svg_SVG.glyph.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_glyph">
         <element name="glyph">
            <ref name="svg_attlist.glyph"/>
            <ref name="svg_SVG.glyph.content"/>
         </element>
      </define>
      <define name="svg_attlist.glyph" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <optional>
            <attribute name="unicode"/>
         </optional>
         <optional>
            <attribute name="glyph-name"/>
         </optional>
         <optional>
            <attribute name="d">
               <ref name="svg_PathData.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="orientation"/>
         </optional>
         <optional>
            <attribute name="arabic-form"/>
         </optional>
         <optional>
            <attribute name="lang">
               <ref name="svg_LanguageCodes.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="horiz-adv-x">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="vert-origin-x">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="vert-origin-y">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="vert-adv-y">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.missing-glyph.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.missing-glyph.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_SVG.Description.class"/>
               <ref name="svg_SVG.Animation.class"/>
               <ref name="svg_SVG.Structure.class"/>
               <ref name="svg_SVG.Conditional.class"/>
               <ref name="svg_SVG.Image.class"/>
               <ref name="svg_SVG.Style.class"/>
               <ref name="svg_SVG.Shape.class"/>
               <ref name="svg_SVG.Text.class"/>
               <ref name="svg_SVG.Marker.class"/>
               <ref name="svg_SVG.ColorProfile.class"/>
               <ref name="svg_SVG.Gradient.class"/>
               <ref name="svg_SVG.Pattern.class"/>
               <ref name="svg_SVG.Clip.class"/>
               <ref name="svg_SVG.Mask.class"/>
               <ref name="svg_SVG.Filter.class"/>
               <ref name="svg_SVG.Cursor.class"/>
               <ref name="svg_SVG.Hyperlink.class"/>
               <ref name="svg_SVG.View.class"/>
               <ref name="svg_SVG.Script.class"/>
               <ref name="svg_SVG.Font.class"/>
               <ref name="svg_SVG.missing-glyph.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_missing-glyph">
         <element name="missing-glyph">
            <ref name="svg_attlist.missing-glyph"/>
            <ref name="svg_SVG.missing-glyph.content"/>
         </element>
      </define>
      <define name="svg_attlist.missing-glyph" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <optional>
            <attribute name="d">
               <ref name="svg_PathData.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="horiz-adv-x">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="vert-origin-x">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="vert-origin-y">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="vert-adv-y">
               <ref name="svg_Number.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="svg_SVG.hkern.content">
         <empty/>
      </define>
      <define name="svg_hkern">
         <element name="hkern">
            <ref name="svg_attlist.hkern"/>
            <ref name="svg_SVG.hkern.content"/>
         </element>
      </define>
      <define name="svg_attlist.hkern" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <optional>
            <attribute name="u1"/>
         </optional>
         <optional>
            <attribute name="g1"/>
         </optional>
         <optional>
            <attribute name="u2"/>
         </optional>
         <optional>
            <attribute name="g2"/>
         </optional>
         <attribute name="k">
            <ref name="svg_Number.datatype"/>
         </attribute>
      </define>
      <define name="svg_SVG.vkern.content">
         <empty/>
      </define>
      <define name="svg_vkern">
         <element name="vkern">
            <ref name="svg_attlist.vkern"/>
            <ref name="svg_SVG.vkern.content"/>
         </element>
      </define>
      <define name="svg_attlist.vkern" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <optional>
            <attribute name="u1"/>
         </optional>
         <optional>
            <attribute name="g1"/>
         </optional>
         <optional>
            <attribute name="u2"/>
         </optional>
         <optional>
            <attribute name="g2"/>
         </optional>
         <attribute name="k">
            <ref name="svg_Number.datatype"/>
         </attribute>
      </define>
      <define name="svg_SVG.font-face-src.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.font-face-src.content">
         <oneOrMore>
            <choice>
               <ref name="svg_font-face-uri"/>
               <ref name="svg_font-face-name"/>
               <ref name="svg_SVG.font-face-src.extra.content"/>
            </choice>
         </oneOrMore>
      </define>
      <define name="svg_font-face-src">
         <element name="font-face-src">
            <ref name="svg_attlist.font-face-src"/>
            <ref name="svg_SVG.font-face-src.content"/>
         </element>
      </define>
      <define name="svg_attlist.font-face-src" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
      </define>
      <define name="svg_SVG.font-face-uri.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.font-face-uri.content">
         <zeroOrMore>
            <choice>
               <ref name="svg_font-face-format"/>
               <ref name="svg_SVG.font-face-uri.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_font-face-uri">
         <element name="font-face-uri">
            <ref name="svg_attlist.font-face-uri"/>
            <ref name="svg_SVG.font-face-uri.content"/>
         </element>
      </define>
      <define name="svg_attlist.font-face-uri" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.XLinkRequired.attrib"/>
      </define>
      <define name="svg_SVG.font-face-format.content">
         <empty/>
      </define>
      <define name="svg_font-face-format">
         <element name="font-face-format">
            <ref name="svg_attlist.font-face-format"/>
            <ref name="svg_SVG.font-face-format.content"/>
         </element>
      </define>
      <define name="svg_attlist.font-face-format" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <optional>
            <attribute name="string"/>
         </optional>
      </define>
      <define name="svg_SVG.font-face-name.content">
         <empty/>
      </define>
      <define name="svg_font-face-name">
         <element name="font-face-name">
            <ref name="svg_attlist.font-face-name"/>
            <ref name="svg_SVG.font-face-name.content"/>
         </element>
      </define>
      <define name="svg_attlist.font-face-name" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <optional>
            <attribute name="name"/>
         </optional>
      </define>
      <define name="svg_SVG.definition-src.content">
         <empty/>
      </define>
      <define name="svg_definition-src">
         <element name="definition-src">
            <ref name="svg_attlist.definition-src"/>
            <ref name="svg_SVG.definition-src.content"/>
         </element>
      </define>
      <define name="svg_attlist.definition-src" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.XLinkRequired.attrib"/>
      </define>
      <define name="svg_SVG.foreignObject.extra.content">
         <notAllowed/>
      </define>
      <define name="svg_SVG.foreignObject.content">
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="svg_SVG.foreignObject.extra.content"/>
            </choice>
         </zeroOrMore>
      </define>
      <define name="svg_foreignObject">
         <element name="foreignObject">
            <ref name="svg_attlist.foreignObject"/>
            <ref name="svg_SVG.foreignObject.content"/>
         </element>
      </define>
      <define name="svg_attlist.foreignObject" combine="interleave">
         <ref name="svg_SVG.Core.attrib"/>
         <ref name="svg_SVG.Conditional.attrib"/>
         <ref name="svg_SVG.Style.attrib"/>
         <ref name="svg_SVG.Presentation.attrib"/>
         <ref name="svg_SVG.GraphicalEvents.attrib"/>
         <ref name="svg_SVG.External.attrib"/>
         <optional>
            <attribute name="x">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="y">
               <ref name="svg_Coordinate.datatype"/>
            </attribute>
         </optional>
         <attribute name="width">
            <ref name="svg_Length.datatype"/>
         </attribute>
         <attribute name="height">
            <ref name="svg_Length.datatype"/>
         </attribute>
         <optional>
            <attribute name="transform">
               <ref name="svg_TransformList.datatype"/>
            </attribute>
         </optional>
      </define>
      <define name="mei_model.graphicLike" combine="choice">
         <ref name="svg_svg"/>
      </define>
   </div>
   <define name="mei_data.ACCIDENTAL.EXPLICIT">
      <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>
         <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>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.IMPLICIT">
      <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>n</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >Natural.</a:documentation>
         <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>
      </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>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>marc-stacc</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Marcato +
            staccato (Unicode 1D180).</a:documentation>
         <value>spicc</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >Spiccato.</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>ten-stacc</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tenuto +
            staccato (Unicode 1D182).</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.BARPLACE">
      <choice>
         <value>mensur</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Between
            staves only.</a:documentation>
         <value>staff</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Between and
            across staves as necessary.</a:documentation>
         <value>takt</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Short line
            above staff or through top line.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.BARRENDITION">
      <choice>
         <value>dashed</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Dashed line
            (Unicode 1D104).</a:documentation>
         <value>dotted</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Dotted
            line.</a:documentation>
         <value>dbl</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(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>end</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(Unicode
            1D102).</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
            (Unicode 1D106).</a:documentation>
         <value>rptboth</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Repeat start
            and end.</a:documentation>
         <value>rptend</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Repeat end
            (Unicode 1D107).</a:documentation>
         <value>single</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(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.BOOLEAN">
      <choice>
         <value>true</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>false</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
      </choice>
   </define>
   <define name="mei_data.CERTAINTY">
      <choice>
         <value>high</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>medium</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>low</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>unknown</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
      </choice>
   </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.</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>aqua</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #00FFFF
            / RGB:0,255,255</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>blue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #0000FF
            / RGB:0,0,255</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>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>lime</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #00FF00
            / RGB:0,255,0</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>navy</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #000080
            / RGB:0,0,128</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>purple</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #800080
            / RGB:128,0,128</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>silver</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #C0C0C0
            / RGB:208,208,208</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>white</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Hex: #FFFFFF
            / RGB:255,255,255</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>
      </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">
      <empty/>
   </define>
   <define name="mei_data.DURATION.gestural.prop">
      <data type="token">
         <param name="pattern">[0-9]+(\.)*r</param>
      </data>
   </define>
   <define name="mei_data.DURATION.gestural.pat">
      <data type="token">
         <param name="pattern">[0-9]+(p|(\.[0-9]+)?(b|s))</param>
      </data>
   </define>
   <define name="mei_data.DURATION.gestural">
      <choice>
         <ref name="mei_data.DURATION.gestural.prop"/>
         <ref name="mei_data.DURATION.gestural.pat"/>

      </choice>
   </define>
   <define name="mei_data.ENCLOSURE">
      <choice>
         <value>paren</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >Parentheses.</a:documentation>
         <value>brack</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Square
            brackets.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.FILL">
      <choice>
         <value>void</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >Unfilled</a:documentation>
         <value>solid</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >Filled</a:documentation>
         <value>top</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Top half
            filled</a:documentation>
         <value>bottom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Bottom half
            filled</a:documentation>
         <value>left</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Left half
            filled</a:documentation>
         <value>right</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Right half
            filled</a:documentation>
      </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)?</param>
         <except>
            <choice>
               <data type="token">
                  <param name="pattern">(pt)?</param>
               </data>
               <data type="token">
                  <param name="pattern">0+(pt)?</param>
               </data>
               <data type="token">
                  <param name="pattern">0+(\.0+)?(pt)?</param>
               </data>
               <data type="token">
                  <param name="pattern">\.0+(pt)?</param>
               </data>
            </choice>
         </except>
      </data>
   </define>
   <define name="mei_data.FONTSIZETERM">
      <choice>
         <value>xx-small</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Relative
            font size.</a:documentation>
         <value>x-small</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Relative
            font size.</a:documentation>
         <value>small</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Relative
            font size.</a:documentation>
         <value>medium</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Relative
            font size.</a:documentation>
         <value>large</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Relative
            font size.</a:documentation>
         <value>x-large</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Relative
            font size.</a:documentation>
         <value>xx-large</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Relative
            font size.</a:documentation>
         <value>smaller</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Relative
            font size.</a:documentation>
         <value>larger</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Relative
            font 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"/>
         <value>normal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
      </choice>
   </define>
   <define name="mei_data.FRET">
      <data type="positiveInteger">
         <param name="minInclusive">1</param>
         <param name="maxInclusive">5</param>
      </data>
   </define>
   <define name="mei_data.FRETNUMBER">
      <data type="nonNegativeInteger"/>
   </define>
   <define name="mei_data.HEADSHAPE">
      <choice>
         <ref name="mei_data.HEADSHAPE.list"/>
         <ref name="mei_data.NMTOKEN"/>
      </choice>
   </define>
   <define name="mei_data.HEADSHAPE.list">
      <choice>
         <value>quarter</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Filled,
            rotated oval (Unicode 1D158).</a:documentation>
         <value>half</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled,
            rotated oval (Unicode 1D157).</a:documentation>
         <value>whole</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled,
            rotated oval (Unicode 1D15D).</a:documentation>
         <value>backslash</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled
            backslash (~ reflection of Unicode 1D10D).</a:documentation>
         <value>circle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled
            circle (Unicode 25CB).</a:documentation>
         <value>+</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Plus sign
            (Unicode 1D144).</a:documentation>
         <value>diamond</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled
            diamond (Unicode 1D1B9).</a:documentation>
         <value>isotriangle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled
            isosceles triangle (Unicode 1D148).</a:documentation>
         <value>oval</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled,
            unrotated oval (Unicode 2B2D).</a:documentation>
         <value>piewedge</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled
            downward-pointing wedge (Unicode 1D154).</a:documentation>
         <value>rectangle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled
            rectangle (Unicode 25AD).</a:documentation>
         <value>rtriangle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled
            right triangle (Unicode 1D14A).</a:documentation>
         <value>semicircle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled
            semi-circle (Unicode 1D152).</a:documentation>
         <value>slash</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled
            slash (~ Unicode 1D10D).</a:documentation>
         <value>square</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unfilled
            square (Unicode 1D146).</a:documentation>
         <value>x</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">X (Unicode
            1D143).</a:documentation>
      </choice>
   </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.INEUMEFORM">
      <choice>
         <value>liquescent1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>liquescent2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>tied</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>tiedliquescent1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>tiedliquescent2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
      </choice>
   </define>
   <define name="mei_data.INEUMENAME">
      <choice>
         <value>pessubpunctis</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>climacus</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>scandicus</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>bistropha</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>tristropha</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>pressusminor</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>pressusmaior</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
      </choice>
   </define>
   <define name="mei_data.INTERVAL.HARMONIC">
      <data type="token">
         <param name="pattern">[AdMmP][0-9]+</param>
      </data>
   </define>
   <define name="mei_data.INTERVAL.MELODIC">
      <choice>
         <data type="decimal"/>
         <data type="token">
            <param name="pattern">u|d|s</param>
         </data>
         <data type="token">
            <param name="pattern">(\+|\-)?[AdMmP][0-9]+</param>
         </data>
      </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.ISOTIME">
      <data type="time"/>
   </define>
   <define name="mei_data.KEYSIGNATURE">
      <data type="token">
         <param name="pattern">mixed|0|([1-9]|1[0-2])[f|s]</param>
      </data>
   </define>
   <define name="mei_data.KEYSIGTOKEN">
      <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)</param>
      </data>
   </define>
   <define name="mei_data.LAYERSCHEME">
      <choice>
         <value>1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Single
            layer.</a:documentation>
         <value>2o</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Two layers
            with opposing stems.</a:documentation>
         <value>2f</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Two layers
            with 'floating' stems.</a:documentation>
         <value>3o</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>3f</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
      </choice>
   </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 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 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 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>none</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">No start
            symbol.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.LINESTARTENDSYMBOLSIZE">
      <data type="positiveInteger">
         <param name="minInclusive">1</param>
         <param name="maxInclusive">9</param>
      </data>
   </define>
   <define name="mei_data.LINEWIDTH">
      <choice>
         <ref name="mei_data.LINEWIDTHTERM"/>
         <ref name="mei_data.MEASUREMENTABS"/>
      </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.MEASUREBEATOFFSET">
      <data type="token">
         <param name="pattern">(\+|-)?[0-9]+m\+[0-9]+(\.[0-9]*)?</param>
      </data>
   </define>
   <define name="mei_data.MEASUREMENTABS">
      <data type="token">
         <param name="pattern">(\+)?\d+(\.\d+)?(cm|mm|in|pt|pc|px|vu)?</param>
      </data>
   </define>
   <define name="mei_data.MEASUREMENTREL">
      <data type="token">
         <param name="pattern">(\+|-)?\d+(\.\d+)?(cm|mm|in|pt|pc|px|vu)?</param>
      </data>
   </define>
   <define name="mei_data.MELODICFUNCTION">
      <choice>
         <value>aln</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Accented
            lower neighbor.</a:documentation>
         <value>ant</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >Anticipation.</a:documentation>
         <value>app</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >Appogiatura.</a:documentation>
         <value>apt</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Accented
            passing tone.</a:documentation>
         <value>arp</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Arpeggio
            tone (chordal tone).</a:documentation>
         <value>arp7</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Arpeggio
            tone (7th added to the chord).</a:documentation>
         <value>aun</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Accented
            upper neighbor.</a:documentation>
         <value>chg</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Changing
            tone.</a:documentation>
         <value>cln</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Chromatic
            lower neighbor.</a:documentation>
         <value>ct</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Chord tone
            (i.e., not an embellishment).</a:documentation>
         <value>ct7</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Chord tone
            (7th added to the chord).</a:documentation>
         <value>cun</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Chromatic
            upper neighbor.</a:documentation>
         <value>cup</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Chromatic
            unaccented passing tone.</a:documentation>
         <value>et</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Escape
            tone.</a:documentation>
         <value>ln</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Lower
            neighbor.</a:documentation>
         <value>ped</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Pedal
            tone.</a:documentation>
         <value>rep</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Repeated
            tone.</a:documentation>
         <value>ret</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >Retardation.</a:documentation>
         <value>23ret</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">2-3
            retardation.</a:documentation>
         <value>78ret</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">7-8
            retardation.</a:documentation>
         <value>sus</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >Suspension.</a:documentation>
         <value>43sus</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">4-3
            suspension.</a:documentation>
         <value>98sus</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">9-8
            suspension.</a:documentation>
         <value>76sus</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">7-6
            suspension.</a:documentation>
         <value>un</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Upper
            neighbor.</a:documentation>
         <value>un7</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Upper
            neighbor (7th added to the chord).</a:documentation>
         <value>upt</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unaccented
            passing tone.</a:documentation>
         <value>upt7</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Unaccented
            passing tone (7th added to the chord).</a:documentation>
      </choice>
   </define>
   <define name="mei_data.MENSURATIONSIGN">
      <choice>
         <value>C</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tempus
            imperfectum.</a:documentation>
         <value>O</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tempus
            perfectum.</a:documentation>
      </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>
      </choice>
   </define>
   <define name="mei_data.MIDICHANNEL">
      <data type="positiveInteger">
         <param name="maxInclusive">16</param>
      </data>
   </define>
   <define name="mei_data.MIDIBPM">
      <data type="positiveInteger"/>
   </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">Program
            #0.</a:documentation>
         <value>Bright_Acoustic_Piano</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #1.</a:documentation>
         <value>Electric_Grand_Piano</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #2.</a:documentation>
         <value>Honky-tonk_Piano</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #3.</a:documentation>
         <value>Electric_Piano_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #4.</a:documentation>
         <value>Electric_Piano_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #5.</a:documentation>
         <value>Harpsichord</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #6.</a:documentation>
         <value>Clavi</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #7.</a:documentation>
         <value>Celesta</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #8.</a:documentation>
         <value>Glockenspiel</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #9.</a:documentation>
         <value>Music_Box</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #10.</a:documentation>
         <value>Vibraphone</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #11.</a:documentation>
         <value>Marimba</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #12.</a:documentation>
         <value>Xylophone</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #13.</a:documentation>
         <value>Tubular_Bells</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #14.</a:documentation>
         <value>Dulcimer</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #15.</a:documentation>
         <value>Drawbar_Organ</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #16.</a:documentation>
         <value>Percussive_Organ</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #17.</a:documentation>
         <value>Rock_Organ</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #18.</a:documentation>
         <value>Church_Organ</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #19.</a:documentation>
         <value>Reed_Organ</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #20.</a:documentation>
         <value>Accordion</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #21.</a:documentation>
         <value>Harmonica</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #22.</a:documentation>
         <value>Tango_Accordion</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #23.</a:documentation>
         <value>Acoustic_Guitar_nylon</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #24.</a:documentation>
         <value>Acoustic_Guitar_steel</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #25.</a:documentation>
         <value>Electric_Guitar_jazz</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #26.</a:documentation>
         <value>Electric_Guitar_clean</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #27.</a:documentation>
         <value>Electric_Guitar_muted</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #28.</a:documentation>
         <value>Overdriven_Guitar</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #29.</a:documentation>
         <value>Distortion_Guitar</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #30.</a:documentation>
         <value>Guitar_harmonics</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #31.</a:documentation>
         <value>Acoustic_Bass</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #32.</a:documentation>
         <value>Electric_Bass_finger</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #33.</a:documentation>
         <value>Electric_Bass_pick</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #34.</a:documentation>
         <value>Fretless_Bass</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #35.</a:documentation>
         <value>Slap_Bass_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #36.</a:documentation>
         <value>Slap_Bass_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #37.</a:documentation>
         <value>Synth_Bass_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #38.</a:documentation>
         <value>Synth_Bass_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #39.</a:documentation>
         <value>Violin</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #40.</a:documentation>
         <value>Viola</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #41.</a:documentation>
         <value>Cello</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #42.</a:documentation>
         <value>Contrabass</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #43.</a:documentation>
         <value>Tremolo_Strings</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #44.</a:documentation>
         <value>Pizzicato_Strings</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #45.</a:documentation>
         <value>Orchestral_Harp</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #46.</a:documentation>
         <value>Timpani</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #47.</a:documentation>
         <value>String_Ensemble_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #48.</a:documentation>
         <value>String_Ensemble_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #49.</a:documentation>
         <value>SynthStrings_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #50.</a:documentation>
         <value>SynthStrings_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #51.</a:documentation>
         <value>Choir_Aahs</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #52.</a:documentation>
         <value>Voice_Oohs</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #53.</a:documentation>
         <value>Synth_Voice</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #54.</a:documentation>
         <value>Orchestra_Hit</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #55.</a:documentation>
         <value>Trumpet</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #56.</a:documentation>
         <value>Trombone</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #57.</a:documentation>
         <value>Tuba</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #58.</a:documentation>
         <value>Muted_Trumpet</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #59.</a:documentation>
         <value>French_Horn</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #60.</a:documentation>
         <value>Brass_Section</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #61.</a:documentation>
         <value>SynthBrass_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #62.</a:documentation>
         <value>SynthBrass_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #63.</a:documentation>
         <value>Soprano_Sax</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #64.</a:documentation>
         <value>Alto_Sax</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #65.</a:documentation>
         <value>Tenor_Sax</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #66.</a:documentation>
         <value>Baritone_Sax</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #67.</a:documentation>
         <value>Oboe</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #68.</a:documentation>
         <value>English_Horn</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #69.</a:documentation>
         <value>Bassoon</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #70.</a:documentation>
         <value>Clarinet</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #71.</a:documentation>
         <value>Piccolo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #72.</a:documentation>
         <value>Flute</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #73.</a:documentation>
         <value>Recorder</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #74.</a:documentation>
         <value>Pan_Flute</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #75.</a:documentation>
         <value>Blown_Bottle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #76.</a:documentation>
         <value>Shakuhachi</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #77.</a:documentation>
         <value>Whistle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #78.</a:documentation>
         <value>Ocarina</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #79.</a:documentation>
         <value>Lead_1_square</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #80.</a:documentation>
         <value>Lead_2_sawtooth</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #81.</a:documentation>
         <value>Lead_3_calliope</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #82.</a:documentation>
         <value>Lead_4_chiff</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #83.</a:documentation>
         <value>Lead_5_charang</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #84.</a:documentation>
         <value>Lead_6_voice</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #85.</a:documentation>
         <value>Lead_7_fifths</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #86.</a:documentation>
         <value>Lead_8_bass_and_lead</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #87.</a:documentation>
         <value>Pad_1_new_age</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #88.</a:documentation>
         <value>Pad_2_warm</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #89.</a:documentation>
         <value>Pad_3_polysynth</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #90.</a:documentation>
         <value>Pad_4_choir</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #91.</a:documentation>
         <value>Pad_5_bowed</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #92.</a:documentation>
         <value>Pad_6_metallic</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #93.</a:documentation>
         <value>Pad_7_halo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #94.</a:documentation>
         <value>Pad_8_sweep</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #95.</a:documentation>
         <value>FX_1_rain</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #96.</a:documentation>
         <value>FX_2_soundtrack</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #97.</a:documentation>
         <value>FX_3_crystal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #98.</a:documentation>
         <value>FX_4_atmosphere</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #99.</a:documentation>
         <value>FX_5_brightness</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #100.</a:documentation>
         <value>FX_6_goblins</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #101.</a:documentation>
         <value>FX_7_echoes</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #102.</a:documentation>
         <value>FX_8_sci-fi</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #103.</a:documentation>
         <value>Sitar</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #104.</a:documentation>
         <value>Banjo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #105.</a:documentation>
         <value>Shamisen</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #106.</a:documentation>
         <value>Koto</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #107.</a:documentation>
         <value>Kalimba</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #108.</a:documentation>
         <value>Bagpipe</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #109.</a:documentation>
         <value>Fiddle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #110.</a:documentation>
         <value>Shanai</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #111.</a:documentation>
         <value>Tinkle_Bell</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #112.</a:documentation>
         <value>Agogo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #113.</a:documentation>
         <value>Steel_Drums</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #114.</a:documentation>
         <value>Woodblock</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #115.</a:documentation>
         <value>Taiko_Drum</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #116.</a:documentation>
         <value>Melodic_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #117.</a:documentation>
         <value>Synth_Drum</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #118.</a:documentation>
         <value>Reverse_Cymbal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #119.</a:documentation>
         <value>Guitar_Fret_Noise</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #120.</a:documentation>
         <value>Breath_Noise</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #121.</a:documentation>
         <value>Seashore</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #122.</a:documentation>
         <value>Bird_Tweet</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #123.</a:documentation>
         <value>Telephone_Ring</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #124.</a:documentation>
         <value>Helicopter</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #125.</a:documentation>
         <value>Applause</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #126.</a:documentation>
         <value>Gunshot</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Program
            #127.</a:documentation>
         <value>Acoustic_Bass_Drum</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #35.</a:documentation>
         <value>Bass_Drum_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #36.</a:documentation>
         <value>Side_Stick</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #37.</a:documentation>
         <value>Acoustic_Snare</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #38.</a:documentation>
         <value>Hand_Clap</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #39.</a:documentation>
         <value>Electric_Snare</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #40.</a:documentation>
         <value>Low_Floor_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #41.</a:documentation>
         <value>Closed_Hi_Hat</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #42.</a:documentation>
         <value>High_Floor_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #43.</a:documentation>
         <value>Pedal_Hi-Hat</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #44.</a:documentation>
         <value>Low_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #45.</a:documentation>
         <value>Open_Hi-Hat</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #46.</a:documentation>
         <value>Low-Mid_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #47.</a:documentation>
         <value>Hi-Mid_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #48.</a:documentation>
         <value>Crash_Cymbal_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #49.</a:documentation>
         <value>High_Tom</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #50.</a:documentation>
         <value>Ride_Cymbal_1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #51.</a:documentation>
         <value>Chinese_Cymbal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #52.</a:documentation>
         <value>Ride_Bell</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #53.</a:documentation>
         <value>Tambourine</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #54.</a:documentation>
         <value>Splash_Cymbal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #55.</a:documentation>
         <value>Cowbell</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #56.</a:documentation>
         <value>Crash_Cymbal_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #57.</a:documentation>
         <value>Vibraslap</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #58.</a:documentation>
         <value>Ride_Cymbal_2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #59.</a:documentation>
         <value>Hi_Bongo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #60.</a:documentation>
         <value>Low_Bongo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #61.</a:documentation>
         <value>Mute_Hi_Conga</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #62.</a:documentation>
         <value>Open_Hi_Conga</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #63.</a:documentation>
         <value>Low_Conga</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #64.</a:documentation>
         <value>High_Timbale</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #65.</a:documentation>
         <value>Low_Timbale</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #66.</a:documentation>
         <value>High_Agogo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #67.</a:documentation>
         <value>Low_Agogo</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #68.</a:documentation>
         <value>Cabasa</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #69.</a:documentation>
         <value>Maracas</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #70.</a:documentation>
         <value>Short_Whistle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #71.</a:documentation>
         <value>Long_Whistle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #72.</a:documentation>
         <value>Short_Guiro</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #73.</a:documentation>
         <value>Long_Guiro</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #74.</a:documentation>
         <value>Claves</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #75.</a:documentation>
         <value>Hi_Wood_Block</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #76.</a:documentation>
         <value>Low_Wood_Block</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #77.</a:documentation>
         <value>Mute_Cuica</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #78.</a:documentation>
         <value>Open_Cuica</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #79.</a:documentation>
         <value>Mute_Triangle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #80.</a:documentation>
         <value>Open_Triangle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key
            #81.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.MIDIVALUE">
      <data type="nonNegativeInteger">
         <param name="maxInclusive">127</param>
      </data>
   </define>
   <define name="mei_data.MODE">
      <choice>
         <value>major</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>minor</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>dorian</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>phrygian</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>lydian</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>mixolydian</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>aeolian</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>locrian</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
      </choice>
   </define>
   <define name="mei_data.MUSICFONT">
      <data type="token"/>
   </define>
   <define name="mei_data.NMTOKEN">
      <data type="NMTOKEN"/>
   </define>
   <define name="mei_data.NOTATIONTYPE">
      <choice>
         <value>cmn</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Common Music
            Notation.</a:documentation>
         <value>mensural</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Mensural
            notation.</a:documentation>
         <value>mensural.black</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Black
            mensural notation.</a:documentation>
         <value>mensural.white</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">White
            mensural notation.</a:documentation>
         <value>neume</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Neumatic
            notation.</a:documentation>
         <value>tab</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Tablature
            notation.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.NOTEHEADMODIFIER">
      <choice>
         <ref name="mei_data.NOTEHEADMODIFIER.list"/>
         <ref name="mei_data.NOTEHEADMODIFIER.pat"/>
      </choice>
   </define>
   <define name="mei_data.NOTEHEADMODIFIER.list">
      <choice>
         <value>slash</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Slash (upper
            right to lower left).</a:documentation>
         <value>backslash</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Backslash
            (upper left to lower right).</a:documentation>
         <value>vline</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Vertical
            line.</a:documentation>
         <value>hline</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Horizontal
            line.</a:documentation>
         <value>centerdot</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Center
            dot.</a:documentation>
         <value>paren</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Enclosing
            parentheses.</a:documentation>
         <value>brack</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Enclosing
            square brackets.</a:documentation>
         <value>box</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Enclosing
            box.</a:documentation>
         <value>circle</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Enclosing
            circle.</a:documentation>
         <value>dblwhole</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Enclosing
            "fences".</a:documentation>
      </choice>
   </define>
   <define name="mei_data.NOTEHEADMODIFIER.pat">
      <choice>
         <data type="string">
            <param name="pattern">centertext\((A|B|C|D|E|F|G)(f|♭|n|♮|s|♯)?\)</param>
         </data>
         <data type="string">
            <param name="pattern">centertext\(H(s|♯)?\)</param>
         </data>
      </choice>
   </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.PAGE.PANELS">
      <data type="positiveInteger">
         <param name="minInclusive">1</param>
         <param name="maxInclusive">2</param>
      </data>
   </define>
   <define name="mei_data.PERCENT">
      <data type="token">
         <param name="pattern">[0-9]+(\.?[0-9]*)?%</param>
      </data>
   </define>
   <define name="mei_data.PGSCALE">
      <ref name="mei_data.PERCENT"/>
   </define>
   <define name="mei_data.PITCHCLASS">
      <data type="nonNegativeInteger">
         <param name="maxInclusive">11</param>
      </data>
   </define>
   <define name="mei_data.PITCHNAME">
      <data type="token">
         <param name="pattern">[a-g]</param>
      </data>
   </define>
   <define name="mei_data.PITCHNAME.GES">
      <data type="token">
         <param name="pattern">[a-g]|none</param>
      </data>
   </define>
   <define name="mei_data.PITCHNUMBER">
      <data type="nonNegativeInteger"/>
   </define>
   <define name="mei_data.PLACE">
      <choice>
         <value>above</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>below</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
      </choice>
   </define>
   <define name="mei_data.ROTATION">
      <choice>
         <ref name="mei_data.DEGREES"/>
         <ref name="mei_data.ROTATIONDIRECTION"/>
      </choice>
   </define>
   <define name="mei_data.ROTATIONDIRECTION">
      <choice>
         <value>none</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">No
            rotation.</a:documentation>
         <value>down</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Rotated 180
            degrees.</a:documentation>
         <value>left</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Rotated 270
            degrees clockwise.</a:documentation>
         <value>ne</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Rotated 45
            degrees clockwise.</a:documentation>
         <value>nw</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Rotated 315
            degrees clockwise.</a:documentation>
         <value>se</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Rotated 135
            degrees clockwise.</a:documentation>
         <value>sw</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Rotated 225
            degrees clockwise.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.SCALEDEGREE">
      <data type="token">
         <param name="pattern">(\^|v)?[1-7](\+|\-)?</param>
      </data>
   </define>
   <define name="mei_data.SIZE">
      <choice>
         <value>normal</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Default
            size.</a:documentation>
         <value>cue</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reduced
            size.</a:documentation>
      </choice>
   </define>
   <define name="mei_data.SLASH">
      <data type="positiveInteger">
         <param name="minInclusive">1</param>
         <param name="maxInclusive">6</param>
      </data>
   </define>
   <define name="mei_data.SLUR">
      <data type="token">
         <param name="pattern">[i|m|t][1-6]</param>
      </data>
   </define>
   <define name="mei_data.STAFFLOC">
      <data type="integer"/>
   </define>
   <define name="mei_data.STAFFREL">
      <choice>
         <value>above</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Written
            above staff.</a:documentation>
         <value>below</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Written
            below staff.</a:documentation>
         <value>within</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Written on
            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.STEMPOSITION">
      <choice>
         <value>left</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stem
            attached to left side of note head.</a:documentation>
         <value>right</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stem
            attached to right side of note head.</a:documentation>
         <value>center</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Stem is
            originates from center of note head.</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>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 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 lines, e.g.
            overline(3).</a:documentation>
         <value>overstrike</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">obscured by
            other text, such as 'XXXXX'</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 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>underline</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Underlined;
            may be qualified to indicate multiple lines, e.g. underline(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">
      <choice>
         <data type="string">
            <param name="pattern">(underline|overline|line-through|strike)\(\d+\)</param>
         </data>
         <data type="string">
            <param name="pattern">(letter-spacing|line-height)\((\+|-)?\d+(\.\d+)?%?\)</param>
         </data>
      </choice>
   </define>
   <define name="mei_data.TEXTRENDITION">
      <choice>
         <ref name="mei_data.TEXTRENDITIONLIST"/>
         <ref name="mei_data.TEXTRENDITIONPAR"/>
      </choice>
   </define>
   <define name="mei_data.TIE">
      <data type="token">
         <param name="pattern">[i|m|t]</param>
      </data>
   </define>
   <define name="mei_data.TSTAMPOFFSET">
      <data type="decimal"/>
   </define>
   <define name="mei_data.TUPLET">
      <data type="token">
         <param name="pattern">[i|m|t][1-6]</param>
      </data>
   </define>
   <define name="mei_data.UNEUMEFORM">
      <choice>
         <value>liquescent1</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>liquescent2</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>liquescent3</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>quilismatic</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>rectangular</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>rhombic</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>tied</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
      </choice>
   </define>
   <define name="mei_data.UNEUMENAME">
      <choice>
         <value>punctum</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>virga</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>pes</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>clivis</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>torculus</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>torculusresupinus</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>porrectus</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>porrectusflexus</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>apostropha</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>oriscus</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>pressusmaior</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>pressusminor</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
         <value>virgastrata</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
      </choice>
   </define>
   <define name="mei_data.URI">
      <data type="anyURI"/>
   </define>
   <define name="mei_macro.anyXML">
      <element>
         <anyName>
            <except>
               <nsName ns="http://www.music-encoding.org/ns/mei"/>
               <nsName ns="http://www.w3.org/2000/svg"/>
            </except>
         </anyName>
         <zeroOrMore>
            <attribute>
               <anyName/>
            </attribute>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_macro.anyXML"/>
            </choice>
         </zeroOrMore>
      </element>
   </define>
   <define name="mei_macro.metaLike.page">
      <optional>
         <ref name="mei_pgHead"/>
      </optional>
      <optional>
         <ref name="mei_pgFoot"/>
      </optional>
      <optional>
         <ref name="mei_pgDesc"/>
      </optional>
   </define>
   <define name="mei_macro.musicPart">
      <optional>
         <ref name="mei_model.frontLike"/>
      </optional>
      <optional>
         <choice>
            <ref name="mei_body"/>
            <ref name="mei_group"/>
         </choice>
      </optional>
      <optional>
         <ref name="mei_model.backLike"/>
      </optional>
   </define>
   <define name="mei_data.BETYPE">
      <choice>
         <value>byte</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >Bytes.</a:documentation>
         <value>smil</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Synchronized
            Multimedia Integration Language.</a:documentation>
         <value>midi</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI
            clicks.</a:documentation>
         <value>mmc</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI machine
            code.</a:documentation>
         <value>mtc</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI time
            code.</a:documentation>
         <value>smpte-25</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">SMPTE 25
            EBU.</a:documentation>
         <value>smpte-24</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">SMPTE 24
            Film Sync.</a:documentation>
         <value>smpte-df30</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">SMPTE 30
            Drop.</a:documentation>
         <value>smpte-ndf30</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">SMPTE 30
            Non-Drop.</a:documentation>
         <value>smpte-df29.97</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">SMPTE 29.97
            Drop.</a:documentation>
         <value>smpte-ndf29.97</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">SMPTE 29.97
            Non-Drop.</a:documentation>
         <value>tcf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">AES
            Time-code character format.</a:documentation>
         <value>time</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">ISO 24-hour
            time format: HH:MM:SS.ss.</a:documentation>
      </choice>
   </define>
   <define name="mei_macro.availabilityPart">
      <zeroOrMore>
         <choice>
            <ref name="mei_accessRestrict"/>
            <ref name="mei_distributor"/>
            <ref name="mei_price"/>
            <ref name="mei_sysReq"/>
            <ref name="mei_useRestrict"/>
            <ref name="mei_model.addressLike"/>
            <ref name="mei_model.dateLike"/>
            <ref name="mei_model.identifierLike"/>
         </choice>
      </zeroOrMore>
   </define>
   <define name="mei_macro.bibldescPart">
      <optional>
         <ref name="mei_editionStmt"/>
      </optional>
      <optional>
         <ref name="mei_pubStmt"/>
      </optional>
      <zeroOrMore>
         <ref name="mei_physDesc"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_physLoc"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_seriesStmt"/>
      </zeroOrMore>
   </define>
   <define name="mei_macro.neumeModifierLike">
      <empty/>
   </define>
   <define name="mei_data.FRBRRELATIONSHIP">
      <choice>
         <value>hasAbridgement</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is an
            abridgement, condensation, or expurgation of the current entity.</a:documentation>
         <value>isAbridgementOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasAbridgement.</a:documentation>
         <value>hasAdaptation</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is an
            adaptation, paraphrase, free translation, variation (music), harmonization (music), or
            fantasy (music) of the current entity.</a:documentation>
         <value>isAdaptationOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasAdaptation.</a:documentation>
         <value>hasAlternate</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is an
            alternate format or simultaneously released edition of the current
            entity.</a:documentation>
         <value>isAlternateOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasAlternate.</a:documentation>
         <value>hasArrangement</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is an
            arrangement (music) of the current entity.</a:documentation>
         <value>isArrangementOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasArrangement.</a:documentation>
         <value>hasComplement</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is a
            cadenza, libretto, choreography, ending for unfinished work, incidental music, or
            musical setting of a text of the current entity.</a:documentation>
         <value>isComplementOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasComplement.</a:documentation>
         <value>hasEmbodiment</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is a
            physical embodiment of the current abstract entity; describes the
            expression-to-manifestation relationship.</a:documentation>
         <value>isEmbodimentOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasEmbodiment.</a:documentation>
         <value>hasExemplar</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is an
            exemplar of the class of things represented by the current entity; describes the
            manifestation-to-item relationship.</a:documentation>
         <value>isExemplarOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasExamplar.</a:documentation>
         <value>hasImitation</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is a
            parody, imitation, or travesty of the current entity.</a:documentation>
         <value>isImitationOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasImitation.</a:documentation>
         <value>hasPart</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is a
            chapter, section, part, etc.; volume of a multivolume manifestation; volume/issue of
            serial; intellectual part of a multipart work; illustration for a text; sound aspect of
            a film; soundtrack for a film on separate medium; soundtrack for a film embedded in
            film; monograph in a series; physical component of a particular copy; the binding of a
            book of the current entity.</a:documentation>
         <value>isPartOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasPart.</a:documentation>
         <value>hasRealization</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is a
            realization of the current entity; describes the work-to-expression
            relationship.</a:documentation>
         <value>isRealizationOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasRealization.</a:documentation>
         <value>hasReconfiguration</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target has
            been reconfigured: bound with, split into, extracted from the current
            entity.</a:documentation>
         <value>isReconfigurationOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasReconfiguration.</a:documentation>
         <value>hasReproduction</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is a
            reproduction, microreproduction, macroreproduction, reprint, photo-offset reprint, or
            facsimile of the current entity.</a:documentation>
         <value>isReproductionOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasReproduction.</a:documentation>
         <value>hasRevision</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is a
            revised edition, enlarged edition, or new state (graphic) of the current
            entity.</a:documentation>
         <value>isRevisionOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasRevision.</a:documentation>
         <value>hasSuccessor</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is a
            sequel or succeeding work of the current entity.</a:documentation>
         <value>isSuccessorOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasSuccessor.</a:documentation>
         <value>hasSummarization</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is a
            digest or abstract of the current entity.</a:documentation>
         <value>isSummarizationOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasSummarization.</a:documentation>
         <value>hasSupplement</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is an
            index, concordance, teacher's guide, gloss, supplement, or appendix of the current
            entity.</a:documentation>
         <value>isSupplementOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasSupplement.</a:documentation>
         <value>hasTransformation</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is a
            dramatization, novelization, versification, or screenplay of the current
            entity.</a:documentation>
         <value>isTransformationOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasTransformation.</a:documentation>
         <value>hasTranslation</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Target is a
            literal translation or transcription (music) of the current entity.</a:documentation>
         <value>isTranslationOf</value>
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Reciprocal
            relationship of hasTranslation.</a:documentation>
      </choice>
   </define>
   <define name="mei_att.notationtype.attributes">
      <ref name="mei_att.notationtype.attribute.notationtype"/>
      <ref name="mei_att.notationtype.attribute.notationsubtype"/>
   </define>
   <define name="mei_att.notationtype.attribute.notationtype">
      <optional>
         <attribute name="notationtype">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
               classification of the notation contained or described by the element bearing this
               attribute.</a:documentation>
            <ref name="mei_data.NOTATIONTYPE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.notationtype.attribute.notationsubtype">
      <optional>
         <attribute name="notationsubtype">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               any sub-classification of the notation contained or described by the element,
               additional to that given by its notationtype attribute.</a:documentation>
            <data type="NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
      id="mei-att.notationtype-notationsubtype-When_notationsubtype-constraint-1">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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:*[@notationsubtype]">
         <sch:assert test="@notationtype">An element with a notationsubtype attribute must have a
            notationtype attribute.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.accid.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.accid.ges.attributes">
      <ref name="mei_att.accidental.performed.attributes"/>
   </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.accid.vis.attributes">
      <ref name="mei_att.altsym.attributes"/>
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.enclosingchars.attributes"/>
      <ref name="mei_att.extsym.attributes"/>
      <ref name="mei_att.placement.attributes"/>
      <ref name="mei_att.staffloc.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualoffset.ho.attributes"/>
      <ref name="mei_att.visualoffset.vo.attributes"/>
      <ref name="mei_att.xy.attributes"/>
   </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.EXPLICIT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.accidental.performed.attributes">
      <ref name="mei_att.accidental.performed.attribute.accid.ges"/>
   </define>
   <define name="mei_att.accidental.performed.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.IMPLICIT"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
      id="mei-att.accidental.performed-accid.ges-check_accid_duplication-constraint-2">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@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.annot.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.annot.ges.attributes">
      <ref name="mei_att.duration.performed.attributes"/>
   </define>
   <define name="mei_att.annot.log.attributes">
      <ref name="mei_att.layerident.attributes"/>
      <ref name="mei_att.staffident.attributes"/>
      <ref name="mei_att.startendid.attributes"/>
      <ref name="mei_att.timestamp.musical.attributes"/>
      <ref name="mei_att.timestamp2.musical.attributes"/>
      <ref name="mei_att.timestamp.performed.attributes"/>
   </define>
   <define name="mei_att.annot.vis.attributes">
      <empty/>
   </define>
   <define name="mei_att.artic.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.artic.ges.attributes">
      <ref name="mei_att.articulation.performed.attributes"/>
   </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.artic.vis.attributes">
      <ref name="mei_att.altsym.attributes"/>
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.enclosingchars.attributes"/>
      <ref name="mei_att.extsym.attributes"/>
      <ref name="mei_att.placement.attributes"/>
      <ref name="mei_att.staffloc.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualoffset.attributes"/>
      <ref name="mei_att.xy.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 &lt;fingering&gt; element.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.ARTICULATION"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.articulation.performed.attributes">
      <ref name="mei_att.articulation.performed.attribute.artic.ges"/>
   </define>
   <define name="mei_att.articulation.performed.attribute.artic.ges">
      <optional>
         <attribute name="artic.ges">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               performed articulation that differs from the written value.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.ARTICULATION"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.authorized.attributes">
      <ref name="mei_att.authorized.attribute.authority"/>
      <ref name="mei_att.authorized.attribute.authURI"/>
   </define>
   <define name="mei_att.authorized.attribute.authority">
      <optional>
         <attribute name="authority">
            <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 is
               taken.</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.authorized.attribute.authURI">
      <optional>
         <attribute name="authURI">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The
               web-accessible location of the controlled vocabulary from which the value is
               taken.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.barLine.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.barLine.ges.attributes">
      <ref name="mei_att.timestamp.musical.attributes"/>
   </define>
   <define name="mei_att.barLine.log.attributes">
      <ref name="mei_att.meterconformance.bar.attributes"/>
      <ref name="mei_att.barLine.log.attribute.form"/>
   </define>
   <define name="mei_att.barLine.log.attribute.form">
      <optional>
         <attribute name="form">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the appearance and usually the function of the bar line.</a:documentation>
            <ref name="mei_data.BARRENDITION"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.barLine.vis.attributes">
      <ref name="mei_att.barplacement.attributes"/>
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.measurement.attributes"/>
      <ref name="mei_att.width.attributes"/>
   </define>
   <define name="mei_att.barplacement.attributes">
      <ref name="mei_att.barplacement.attribute.barplace"/>
      <ref name="mei_att.barplacement.attribute.taktplace"/>
   </define>
   <define name="mei_att.barplacement.attribute.barplace">
      <optional>
         <attribute name="barplace">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the location of a bar line.</a:documentation>
            <ref name="mei_data.BARPLACE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.barplacement.attribute.taktplace">
      <optional>
         <attribute name="taktplace">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">If takt
               bar lines are to be used, then the taktplace attribute may be used to denote the
               staff location of the shortened bar line. The location may include staff lines,
               spaces, and the spaces directly above and below the staff. The value ranges between 0
               (just below the staff) to 2 * number of staff lines (directly above the staff). For
               example, on a 5-line staff the lines would be numbered 1,3,5,7, and 9 while the
               spaces would be numbered 0,2,4,6,8,10. For example, a value of '9' puts the bar line
               through the top line of a 5-line staff.</a:documentation>
            <ref name="mei_data.STAFFLOC"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.beaming.vis.attributes">
      <ref name="mei_att.beaming.vis.attribute.beam.color"/>
      <ref name="mei_att.beaming.vis.attribute.beam.rend"/>
      <ref name="mei_att.beaming.vis.attribute.beam.slope"/>
   </define>
   <define name="mei_att.beaming.vis.attribute.beam.color">
      <optional>
         <attribute name="beam.color">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Color of
               beams, including those associated with tuplets.</a:documentation>
            <ref name="mei_data.COLOR"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.beaming.vis.attribute.beam.rend">
      <optional>
         <attribute name="beam.rend">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes
               whether a beam is "feathered" and in which direction.</a:documentation>
            <choice>
               <value>acc</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Beam
                  lines grow farther apart from left to right.</a:documentation>
               <value>rit</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Beam
                  lines grow closer together from left to right.</a:documentation>
               <value>norm</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Beam
                  lines are equally-spaced over the entire length of the beam.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.beaming.vis.attribute.beam.slope">
      <optional>
         <attribute name="beam.slope">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures
               beam slope.</a:documentation>
            <data type="decimal"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.bibl.attributes">
      <ref name="mei_att.bibl.attribute.analog"/>
   </define>
   <define name="mei_att.bibl.attribute.analog">
      <optional>
         <attribute name="analog">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
               a reference to a field or element in another descriptive encoding system to which
               this MEI element is comparable.</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </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.canonical.attributes">
      <ref name="mei_att.canonical.attribute.codedval"/>
   </define>
   <define name="mei_att.canonical.attribute.codedval">
      <optional>
         <attribute name="codedval">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">a value
               that represents or identifies the element content. May serve as a primary key in a
               web-accessible database identified by the authURI attribute.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="NMTOKEN"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.chord.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.chord.ges.attributes">
      <ref name="mei_att.articulation.performed.attributes"/>
      <ref name="mei_att.duration.performed.attributes"/>
      <ref name="mei_att.instrumentident.attributes"/>
   </define>
   <define name="mei_att.chord.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.articulation.attributes"/>
      <ref name="mei_att.fermatapresent.attributes"/>
      <ref name="mei_att.syltext.attributes"/>
      <ref name="mei_att.slurpresent.attributes"/>
      <ref name="mei_att.tiepresent.attributes"/>
      <ref name="mei_att.tupletpresent.attributes"/>
   </define>
   <define name="mei_att.chord.vis.attributes">
      <ref name="mei_att.altsym.attributes"/>
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.enclosingchars.attributes"/>
      <ref name="mei_att.extsym.attributes"/>
      <ref name="mei_att.relativesize.attributes"/>
      <ref name="mei_att.stems.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visibility.attributes"/>
      <ref name="mei_att.visualoffset.ho.attributes"/>
      <ref name="mei_att.visualoffset.to.attributes"/>
      <ref name="mei_att.xy.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.classcodeident.attributes">
      <ref name="mei_att.classcodeident.attribute.classcode"/>
   </define>
   <define name="mei_att.classcodeident.attribute.classcode">
      <optional>
         <attribute name="classcode">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
               a reference to the controlled vocabulary from which the term is drawn. The value must
               match the value of an ID attribute on a classCode element given 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.classcodeident-classcode-check_classcodeTarget-constraint-3">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@classcode">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@classcode attribute should
            have content.</sch:assert>
         <sch:assert role="warning"
            test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:classCode/@xml:id"
            >The value in @classcode should correspond to the @xml:id attribute of a classCode
            element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.clef.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.clef.ges.attributes">
      <empty/>
   </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.clef.vis.attributes">
      <ref name="mei_att.altsym.attributes"/>
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extsym.attributes"/>
      <ref name="mei_att.typography.attributes"/>
   </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.PLACE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.cleffing.vis.attributes">
      <ref name="mei_att.cleffing.vis.attribute.clef.color"/>
      <ref name="mei_att.cleffing.vis.attribute.clef.visible"/>
   </define>
   <define name="mei_att.cleffing.vis.attribute.clef.color">
      <optional>
         <attribute name="clef.color">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               the color of the clef.</a:documentation>
            <ref name="mei_data.COLOR"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.cleffing.vis.attribute.clef.visible">
      <optional>
         <attribute name="clef.visible">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Determines whether the clef is to be displayed.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.clefGrp.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.clefGrp.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.clefGrp.log.attributes">
      <empty/>
   </define>
   <define name="mei_att.clefGrp.vis.attributes">
      <empty/>
   </define>
   <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>
   <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.coloration.attributes">
      <ref name="mei_att.coloration.attribute.colored"/>
   </define>
   <define name="mei_att.coloration.attribute.colored">
      <optional>
         <attribute name="colored">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               this feature is 'colored'; that is, it is a participant in a change in rhythmic
               values. In mensural notation, coloration is indicated by colored notes (red, black,
               etc.) where void notes would otherwise occur. In CMN, coloration is indicated by an
               inverse color; that is, the note head is void when it would otherwise be filled and
               vice versa.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.common.attributes">
      <ref name="mei_att.commonPart.attributes"/>
      <ref name="mei_att.common.attribute.n"/>
   </define>
   <define name="mei_att.common.attribute.n">
      <optional>
         <attribute name="n">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a number-like designation for an element.</a:documentation>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.commonPart.attributes">
      <ref name="mei_att.id.attributes"/>
      <ref name="mei_att.commonPart.attribute.label"/>
      <ref name="mei_att.commonPart.attribute.xmlbase"/>
   </define>
   <define name="mei_att.commonPart.attribute.label">
      <optional>
         <attribute name="label">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a name or label for an element. The value may be any string.</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.commonPart.attribute.xmlbase">
      <optional>
         <attribute name="xml:base">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a base URI reference with which applications can resolve relative URI references into
               absolute URI references.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.controlevent.attributes">
      <ref name="mei_att.plist.attributes"/>
      <ref name="mei_att.targeteval.attributes"/>
      <ref name="mei_att.timestamp.musical.attributes"/>
      <ref name="mei_att.timestamp.performed.attributes"/>
      <ref name="mei_att.staffident.attributes"/>
      <ref name="mei_att.layerident.attributes"/>
   </define>
   <define name="mei_att.coordinated.attributes">
      <ref name="mei_att.coordinated.attribute.ulx"/>
      <ref name="mei_att.coordinated.attribute.uly"/>
      <ref name="mei_att.coordinated.attribute.lrx"/>
      <ref name="mei_att.coordinated.attribute.lry"/>
   </define>
   <define name="mei_att.coordinated.attribute.ulx">
      <optional>
         <attribute name="ulx">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the upper-left corner x coordinate.</a:documentation>
            <data type="nonNegativeInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.coordinated.attribute.uly">
      <optional>
         <attribute name="uly">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the upper-left corner y coordinate.</a:documentation>
            <data type="nonNegativeInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.coordinated.attribute.lrx">
      <optional>
         <attribute name="lrx">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the lower-right corner x coordinate.</a:documentation>
            <data type="nonNegativeInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.coordinated.attribute.lry">
      <optional>
         <attribute name="lry">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the lower-left corner x coordinate.</a:documentation>
            <data type="nonNegativeInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.curvature.attributes">
      <ref name="mei_att.curvature.attribute.bezier"/>
      <ref name="mei_att.curvature.attribute.bulge"/>
      <ref name="mei_att.curvature.attribute.curvedir"/>
   </define>
   <define name="mei_att.curvature.attribute.bezier">
      <optional>
         <attribute name="bezier">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the placement of Bezier control points as a series of pairs of space-separated
               values; e.g., 19 45 -32 118.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="decimal"/>
                  <data type="decimal"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.curvature.attribute.bulge">
      <optional>
         <attribute name="bulge">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               a curve as one or more pairs of values with respect to an imaginary line connecting
               the starting and ending points of the curve. The first value captures a distance to
               the left (positive value) or right (negative value) of the line, expressed in virtual
               units. The second value of each pair represents a point along the line, expressed as
               a percentage of the line's length. N.B. An MEI virtual unit (VU) is half the distance
               between adjacent staff lines.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="decimal"/>
                  <ref name="mei_data.PERCENT"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </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.curverend.attributes">
      <ref name="mei_att.curverend.attribute.lform"/>
      <ref name="mei_att.curverend.attribute.lwidth"/>
   </define>
   <define name="mei_att.curverend.attribute.lform">
      <optional>
         <attribute name="lform">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               the line style of a curve.</a:documentation>
            <ref name="mei_data.LINEFORM"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.curverend.attribute.lwidth">
      <optional>
         <attribute name="lwidth">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Width of
               a curved line.</a:documentation>
            <ref name="mei_data.LINEWIDTH"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.custos.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.custos.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.custos.log.attributes">
      <ref name="mei_att.pitched.attributes"/>
      <ref name="mei_att.custos.log.attribute.target"/>
   </define>
   <define name="mei_att.custos.log.attribute.target">
      <optional>
         <attribute name="target">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes
               the target note when its pitch differs from the pitch at which the custos
               appears.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
      id="mei-att.custos.log-target-check_custosTarget-constraint-4">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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:custos/@target">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@target attribute should
            have content.</sch:assert>
         <sch:assert role="warning"
            test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:note/@xml:id">The
            value in @target should correspond to the @xml:id attribute of a note
            element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.custos.vis.attributes">
      <ref name="mei_att.altsym.attributes"/>
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extsym.attributes"/>
      <ref name="mei_att.staffloc.attributes"/>
      <ref name="mei_att.typography.attributes"/>
   </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-5">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@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.declaring.attributes">
      <ref name="mei_att.declaring.attribute.decls"/>
   </define>
   <define name="mei_att.declaring.attribute.decls">
      <optional>
         <attribute name="decls">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Identifies one or more metadata elements within the header, which are understood to
               apply to the element bearing this attribute and its content.</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.declaring-decls-check_declsTarget-constraint-6">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@decls">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@decls attribute should
            have content.</sch:assert>
         <sch:assert role="warning"
            test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*[ancestor::mei:meiHead]/@xml:id"
            >Each value in @decls should correspond to the @xml:id attribute of an element within
            the metadata header.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.dimensions.attributes">
      <ref name="mei_att.height.attributes"/>
      <ref name="mei_att.width.attributes"/>
   </define>
   <define name="mei_att.dir.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.dir.ges.attributes">
      <ref name="mei_att.duration.performed.attributes"/>
   </define>
   <define name="mei_att.dir.log.attributes">
      <ref name="mei_att.controlevent.attributes"/>
      <ref name="mei_att.startendid.attributes"/>
      <ref name="mei_att.timestamp2.musical.attributes"/>
   </define>
   <define name="mei_att.dir.vis.attributes">
      <ref name="mei_att.extender.attributes"/>
      <ref name="mei_att.placement.attributes"/>
      <ref name="mei_att.visualoffset.attributes"/>
      <ref name="mei_att.visualoffset2.ho.attributes"/>
      <ref name="mei_att.visualoffset2.to.attributes"/>
      <ref name="mei_att.xy.attributes"/>
   </define>
   <define name="mei_att.distances.attributes">
      <ref name="mei_att.distances.attribute.dynam.dist"/>
      <ref name="mei_att.distances.attribute.harm.dist"/>
      <ref name="mei_att.distances.attribute.text.dist"/>
   </define>
   <define name="mei_att.distances.attribute.dynam.dist">
      <optional>
         <attribute name="dynam.dist">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the default distance from the staff for dynamic marks.</a:documentation>
            <ref name="mei_data.MEASUREMENTREL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.distances.attribute.harm.dist">
      <optional>
         <attribute name="harm.dist">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the default distance from the staff of harmonic indications, such as guitar chord
               grids or functional labels.</a:documentation>
            <ref name="mei_data.MEASUREMENTREL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.distances.attribute.text.dist">
      <optional>
         <attribute name="text.dist">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Determines how far from the staff to render text elements.</a:documentation>
            <ref name="mei_data.MEASUREMENTREL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.dot.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.dot.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.dot.log.attributes">
      <ref name="mei_att.controlevent.attributes"/>
      <ref name="mei_att.dot.log.attribute.form"/>
   </define>
   <define name="mei_att.dot.log.attribute.form">
      <optional>
         <attribute name="form">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the function of the dot.</a:documentation>
            <choice>
               <value>aug</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Augmentation dot.</a:documentation>
               <value>div</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Dot of
                  division.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.dot.vis.attributes">
      <ref name="mei_att.altsym.attributes"/>
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extsym.attributes"/>
      <ref name="mei_att.staffloc.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualoffset.ho.attributes"/>
      <ref name="mei_att.visualoffset.vo.attributes"/>
      <ref name="mei_att.xy.attributes"/>
   </define>
   <define name="mei_att.duration.default.attributes">
      <ref name="mei_att.duration.default.attribute.dur.default"/>
      <ref name="mei_att.duration.default.attribute.num.default"/>
      <ref name="mei_att.duration.default.attribute.numbase.default"/>
   </define>
   <define name="mei_att.duration.default.attribute.dur.default">
      <optional>
         <attribute name="dur.default">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
               a default duration in those situations when the first note, rest, chord, etc. in a
               measure does not have a duration specified.</a:documentation>
            <ref name="mei_data.DURATION"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.duration.default.attribute.num.default">
      <optional>
         <attribute name="num.default">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Along
               with numbase.default, describes the default duration as a ratio. num.default is the
               first value in the ratio.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.duration.default.attribute.numbase.default">
      <optional>
         <attribute name="numbase.default">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Along
               with num.default, describes the default duration as a ratio. numbase.default is the
               second value in the ratio.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.duration.performed.attributes">
      <ref name="mei_att.duration.performed.attribute.dur.ges"/>
   </define>
   <define name="mei_att.duration.performed.attribute.dur.ges">
      <optional>
         <attribute name="dur.ges">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               performed duration information that differs from the written duration. Its value may
               be expressed in several forms; that is, ppq (MIDI clicks and MusicXML 'divisions'),
               Humdrum **recip values, beats, seconds, or mensural duration
               values.</a:documentation>
            <ref name="mei_data.DURATION.gestural"/>
         </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">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.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.dynam.ges.attributes">
      <ref name="mei_att.duration.performed.attributes"/>
      <ref name="mei_att.midivalue.attributes"/>
      <ref name="mei_att.midivalue2.attributes"/>
   </define>
   <define name="mei_att.dynam.log.attributes">
      <ref name="mei_att.controlevent.attributes"/>
      <ref name="mei_att.startendid.attributes"/>
      <ref name="mei_att.timestamp2.musical.attributes"/>
   </define>
   <define name="mei_att.dynam.vis.attributes">
      <ref name="mei_att.placement.attributes"/>
      <ref name="mei_att.visualoffset.attributes"/>
      <ref name="mei_att.visualoffset2.ho.attributes"/>
      <ref name="mei_att.visualoffset2.to.attributes"/>
      <ref name="mei_att.xy.attributes"/>
   </define>
   <define name="mei_att.enclosingchars.attributes">
      <ref name="mei_att.enclosingchars.attribute.enclose"/>
   </define>
   <define name="mei_att.enclosingchars.attribute.enclose">
      <optional>
         <attribute name="enclose">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the characters often used to mark accidentals, articulations, and sometimes notes as
               having a cautionary or editorial function. For an example of cautionary accidentals
               enclosed in parentheses, see Read, p. 131, ex. 9-14.</a:documentation>
            <ref name="mei_data.ENCLOSURE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.ending.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.ending.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.ending.log.attributes">
      <empty/>
   </define>
   <define name="mei_att.ending.vis.attributes">
      <empty/>
   </define>
   <define name="mei_att.endings.attributes">
      <ref name="mei_att.endings.attribute.ending.rend"/>
   </define>
   <define name="mei_att.endings.attribute.ending.rend">
      <optional>
         <attribute name="ending.rend">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               where ending marks should be displayed.</a:documentation>
            <choice>
               <value>top</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Ending
                  rendered only above top staff.</a:documentation>
               <value>barred</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Ending
                  rendered above staves that have bar lines drawn across them.</a:documentation>
               <value>grouped</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Endings rendered above staff groups.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.event.attributes">
      <ref name="mei_att.timestamp.musical.attributes"/>
      <ref name="mei_att.timestamp.performed.attributes"/>
      <ref name="mei_att.staffident.attributes"/>
      <ref name="mei_att.layerident.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.f.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.f.ges.attributes">
      <ref name="mei_att.duration.performed.attributes"/>
   </define>
   <define name="mei_att.f.log.attributes">
      <ref name="mei_att.controlevent.attributes"/>
      <ref name="mei_att.startendid.attributes"/>
      <ref name="mei_att.timestamp2.musical.attributes"/>
   </define>
   <define name="mei_att.f.vis.attributes">
      <ref name="mei_att.altsym.attributes"/>
      <ref name="mei_att.extender.attributes"/>
      <ref name="mei_att.placement.attributes"/>
      <ref name="mei_att.visualoffset.attributes"/>
      <ref name="mei_att.xy.attributes"/>
   </define>
   <define name="mei_att.fermatapresent.attributes">
      <ref name="mei_att.fermatapresent.attribute.fermata"/>
   </define>
   <define name="mei_att.fermatapresent.attribute.fermata">
      <optional>
         <attribute name="fermata">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the attachment of a fermata to this element. If visual information about the fermata
               needs to be recorded, then a &lt;fermata&gt; element should be employed
               instead.</a:documentation>
            <ref name="mei_data.PLACE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.filing.attributes">
      <ref name="mei_att.filing.attribute.nonfiling"/>
   </define>
   <define name="mei_att.filing.attribute.nonfiling">
      <optional>
         <attribute name="nonfiling">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds the
               number of initial characters (such as those constituing an article or preposition)
               that should not be used for sorting a title or name.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.grpSym.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.grpSym.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.grpSym.log.attributes">
      <ref name="mei_att.staffgroupingsym.attributes"/>
      <ref name="mei_att.startendid.attributes"/>
      <ref name="mei_att.grpSym.log.attribute.level"/>
   </define>
   <define name="mei_att.grpSym.log.attribute.level">
      <optional>
         <attribute name="level">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the nesting level of staff grouping symbols.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.grpSym.vis.attributes">
      <ref name="mei_att.altsym.attributes"/>
      <ref name="mei_att.extsym.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualoffset.attributes"/>
      <ref name="mei_att.xy.attributes"/>
   </define>
   <define name="mei_att.handident.attributes">
      <ref name="mei_att.handident.attribute.hand"/>
   </define>
   <define name="mei_att.handident.attribute.hand">
      <optional>
         <attribute name="hand">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Signifies
               the hand responsible for an action. The value must be the ID of a &lt;hand&gt;
               element declared in the header.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
      id="mei-att.handident-hand-check_handTarget-constraint-7">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@hand">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@hand attribute should have
            content.</sch:assert>
         <sch:assert role="warning"
            test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:hand/@xml:id">Each
            value in @hand should correspond to the @xml:id attribute of a hand
            element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.height.attributes">
      <ref name="mei_att.height.attribute.height"/>
   </define>
   <define name="mei_att.height.attribute.height">
      <optional>
         <attribute name="height">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Measurement of the vertical dimension of an entity.</a:documentation>
            <ref name="mei_data.MEASUREMENTABS"/>
         </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.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
               &lt;instrDef&gt; 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-8">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@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.internetmedia.attributes">
      <ref name="mei_att.internetmedia.attribute.mimetype"/>
   </define>
   <define name="mei_att.internetmedia.attribute.mimetype">
      <optional>
         <attribute name="mimetype">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Specifies
               the applicable MIME (multimedia internet mail extension) type. The value should be a
               valid MIME media type defined by the Internet Engineering Task Force in RFC
               2046.</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.joined.attributes">
      <ref name="mei_att.joined.attribute.join"/>
   </define>
   <define name="mei_att.joined.attribute.join">
      <optional>
         <attribute name="join">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used for
               linking visually separate entities that form a single logical entity, for example,
               multiple slurs broken across a system break that form a single musical phrase. Also
               used to indicate a measure which metrically completes the current one. Record the
               identifiers of the separately encoded components, excluding the one carrying the
               attribute.</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.joined-join-check_joinTarget-constraint-9">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@join">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@join 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 @join should correspond to the @xml:id attribute of an element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.keyAccid.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.keyAccid.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.keyAccid.log.attributes">
      <ref name="mei_att.accidental.attributes"/>
      <ref name="mei_att.pitched.attributes"/>
   </define>
   <define name="mei_att.keyAccid.vis.attributes">
      <ref name="mei_att.altsym.attributes"/>
      <ref name="mei_att.enclosingchars.attributes"/>
      <ref name="mei_att.extsym.attributes"/>
      <ref name="mei_att.staffloc.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.xy.attributes"/>
   </define>
   <define name="mei_att.keySig.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.keySig.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.keySig.log.attributes">
      <ref name="mei_att.accidental.attributes"/>
      <ref name="mei_att.pitch.attributes"/>
      <ref name="mei_att.keySig.log.attribute.sig"/>
      <ref name="mei_att.keySig.log.attribute.sig.mixed"/>
      <ref name="mei_att.keySig.log.attribute.mode"/>
   </define>
   <define name="mei_att.keySig.log.attribute.sig">
      <optional>
         <attribute name="sig">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               where the key lies in the circle of fifths.</a:documentation>
            <ref name="mei_data.KEYSIGNATURE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.keySig.log.attribute.sig.mixed">
      <optional>
         <attribute name="sig.mixed">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Mixed key
               signatures, e.g. those consisting of a mixture of flats and sharps (Read, p. 143, ex.
               9-39), and key signatures with unorthodox placement of the accidentals (Read, p. 141)
               must be indicated by setting the key.sig attribute to 'mixed' and providing explicit
               key signature information in the key.sig.mixed attribute or in the &lt;keySig&gt;
               element. It is intended that key.sig.mixed contain a series of tokens with each token
               containing pitch name, accidental, and octave, such as 'a4 c5s e5f' that indicate
               what key accidentals should be rendered and where they should be
               placed.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.KEYSIGTOKEN"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.keySig.log.attribute.mode">
      <optional>
         <attribute name="mode">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               major, minor, or other tonality.</a:documentation>
            <ref name="mei_data.MODE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.keySig.vis.attributes">
      <ref name="mei_att.visibility.attributes"/>
      <ref name="mei_att.keySig.vis.attribute.sig.showchange"/>
   </define>
   <define name="mei_att.keySig.vis.attribute.sig.showchange">
      <optional>
         <attribute name="sig.showchange">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Determines whether cautionary accidentals should be displayed at a key
               change.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.keySigDefault.log.attributes">
      <ref name="mei_att.keySigDefault.log.attribute.key.accid"/>
      <ref name="mei_att.keySigDefault.log.attribute.key.mode"/>
      <ref name="mei_att.keySigDefault.log.attribute.key.pname"/>
      <ref name="mei_att.keySigDefault.log.attribute.key.sig"/>
      <ref name="mei_att.keySigDefault.log.attribute.key.sig.mixed"/>
   </define>
   <define name="mei_att.keySigDefault.log.attribute.key.accid">
      <optional>
         <attribute name="key.accid">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
               an accidental for the tonic key, if one is required, e.g., if key.pname equals 'c'
               and key.accid equals 's', then a tonic of C# is indicated.</a:documentation>
            <ref name="mei_data.ACCIDENTAL.IMPLICIT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.keySigDefault.log.attribute.key.mode">
      <optional>
         <attribute name="key.mode">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               major, minor, or other tonality.</a:documentation>
            <ref name="mei_data.MODE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.keySigDefault.log.attribute.key.pname">
      <optional>
         <attribute name="key.pname">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds the
               pitch name of the tonic key, e.g. 'c' for the key of C.</a:documentation>
            <ref name="mei_data.PITCHNAME"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.keySigDefault.log.attribute.key.sig">
      <optional>
         <attribute name="key.sig">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               where the key lies in the circle of fifths.</a:documentation>
            <ref name="mei_data.KEYSIGNATURE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.keySigDefault.log.attribute.key.sig.mixed">
      <optional>
         <attribute name="key.sig.mixed">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Mixed key
               signatures, e.g. those consisting of a mixture of flats and sharps (Read, p. 143, ex.
               9-39), and key signatures with unorthodox placement of the accidentals (Read, p. 141)
               must be indicated by setting the key.sig attribute to 'mixed' and providing explicit
               key signature information in the key.sig.mixed attribute or in the &lt;keySig&gt;
               element. It is intended that key.sig.mixed contain a series of tokens with each token
               containing pitch name, accidental, and octave, such as 'a4 c5s e5f' that indicate
               what key accidentals should be rendered and where they should be
               placed.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.KEYSIGTOKEN"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.keySigDefault.vis.attributes">
      <ref name="mei_att.keySigDefault.vis.attribute.key.sig.show"/>
      <ref name="mei_att.keySigDefault.vis.attribute.key.sig.showchange"/>
   </define>
   <define name="mei_att.keySigDefault.vis.attribute.key.sig.show">
      <optional>
         <attribute name="key.sig.show">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               whether the key signature should be displayed.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.keySigDefault.vis.attribute.key.sig.showchange">
      <optional>
         <attribute name="key.sig.showchange">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Determines whether cautionary accidentals should be displayed at a key
               change.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.labels.addl.attributes">
      <ref name="mei_att.labels.addl.attribute.label.abbr"/>
   </define>
   <define name="mei_att.labels.addl.attribute.label.abbr">
      <optional>
         <attribute name="label.abbr">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a label for a group of staves on pages after the first page. Usually, this label
               takes an abbreviated form.</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lang.attributes">
      <ref name="mei_att.lang.attribute.xmllang"/>
      <ref name="mei_att.lang.attribute.translit"/>
   </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.lang.attribute.translit">
      <optional>
         <attribute name="translit">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Specifies
               the transliteration technique used.</a:documentation>
            <data type="NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.layer.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.layer.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.layer.log.attributes">
      <ref name="mei_att.meterconformance.attributes"/>
      <ref name="mei_att.layer.log.attribute.def"/>
   </define>
   <define name="mei_att.layer.log.attribute.def">
      <optional>
         <attribute name="def">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a mechanism for linking the layer to a layerDef element.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
      id="mei-att.layer.log-def-check_defTarget_layer-constraint-10">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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:layer/@def">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@def attribute should have
            content.</sch:assert>
         <sch:assert role="warning"
            test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:layerDef/@xml:id"
            >The value in @def should correspond to the @xml:id attribute of a layerDef
            element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.layer.vis.attributes">
      <ref name="mei_att.visibility.attributes"/>
   </define>
   <define name="mei_att.layerDef.anl.attributes">
      <empty/>
   </define>
   <define name="mei_att.layerDef.ges.attributes">
      <ref name="mei_att.instrumentident.attributes"/>
   </define>
   <define name="mei_att.layerDef.log.attributes">
      <ref name="mei_att.duration.default.attributes"/>
      <ref name="mei_att.octavedefault.attributes"/>
      <ref name="mei_att.transposition.attributes"/>
   </define>
   <define name="mei_att.layerDef.vis.attributes">
      <ref name="mei_att.labels.addl.attributes"/>
      <ref name="mei_att.beaming.vis.attributes"/>
      <ref name="mei_att.textstyle.attributes"/>
      <ref name="mei_att.visibility.attributes"/>
   </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.line.anl.attributes">
      <empty/>
   </define>
   <define name="mei_att.line.ges.attributes">
      <ref name="mei_att.duration.performed.attributes"/>
   </define>
   <define name="mei_att.line.log.attributes">
      <ref name="mei_att.controlevent.attributes"/>
      <ref name="mei_att.startendid.attributes"/>
      <ref name="mei_att.timestamp2.musical.attributes"/>
   </define>
   <define name="mei_att.line.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.placement.attributes"/>
      <ref name="mei_att.visualoffset.attributes"/>
      <ref name="mei_att.visualoffset2.attributes"/>
      <ref name="mei_att.xy.attributes"/>
      <ref name="mei_att.xy2.attributes"/>
      <ref name="mei_att.line.vis.attribute.form"/>
      <ref name="mei_att.line.vis.attribute.width"/>
      <ref name="mei_att.line.vis.attribute.endsym"/>
      <ref name="mei_att.line.vis.attribute.endsymsize"/>
      <ref name="mei_att.line.vis.attribute.startsym"/>
      <ref name="mei_att.line.vis.attribute.startsymsize"/>
   </define>
   <define name="mei_att.line.vis.attribute.form">
      <optional>
         <attribute name="form">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Visual
               form of the line.</a:documentation>
            <ref name="mei_data.LINEFORM"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.line.vis.attribute.width">
      <optional>
         <attribute name="width">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Width of
               the line.</a:documentation>
            <ref name="mei_data.LINEWIDTH"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.line.vis.attribute.endsym">
      <optional>
         <attribute name="endsym">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Symbol
               rendered at end of line.</a:documentation>
            <ref name="mei_data.LINESTARTENDSYMBOL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.line.vis.attribute.endsymsize">
      <optional>
         <attribute name="endsymsize">
            <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.LINESTARTENDSYMBOLSIZE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.line.vis.attribute.startsym">
      <optional>
         <attribute name="startsym">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Symbol
               rendered at start of line.</a:documentation>
            <ref name="mei_data.LINESTARTENDSYMBOL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.line.vis.attribute.startsymsize">
      <optional>
         <attribute name="startsymsize">
            <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.LINESTARTENDSYMBOLSIZE"/>
         </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.lendsymsize"/>
      <ref name="mei_att.linerend.attribute.lstartsym"/>
      <ref name="mei_att.linerend.attribute.lstartsymsize"/>
   </define>
   <define name="mei_att.linerend.attribute.lendsym">
      <optional>
         <attribute name="lendsym">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Symbol
               rendered at end of line.</a:documentation>
            <ref name="mei_data.LINESTARTENDSYMBOL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.linerend.attribute.lendsymsize">
      <optional>
         <attribute name="lendsymsize">
            <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.LINESTARTENDSYMBOLSIZE"/>
         </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">Symbol
               rendered at start of line.</a:documentation>
            <ref name="mei_data.LINESTARTENDSYMBOL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.linerend.attribute.lstartsymsize">
      <optional>
         <attribute name="lstartsymsize">
            <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.LINESTARTENDSYMBOLSIZE"/>
         </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"/>
   </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 line 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.lyricstyle.attributes">
      <ref name="mei_att.lyricstyle.attribute.lyric.align"/>
      <ref name="mei_att.lyricstyle.attribute.lyric.fam"/>
      <ref name="mei_att.lyricstyle.attribute.lyric.name"/>
      <ref name="mei_att.lyricstyle.attribute.lyric.size"/>
      <ref name="mei_att.lyricstyle.attribute.lyric.style"/>
      <ref name="mei_att.lyricstyle.attribute.lyric.weight"/>
   </define>
   <define name="mei_att.lyricstyle.attribute.lyric.align">
      <optional>
         <attribute name="lyric.align">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               the alignment of lyric syllables associated with a note or chord.</a:documentation>
            <ref name="mei_data.MEASUREMENTREL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lyricstyle.attribute.lyric.fam">
      <optional>
         <attribute name="lyric.fam">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sets the
               font family default value for lyrics.</a:documentation>
            <ref name="mei_data.FONTFAMILY"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lyricstyle.attribute.lyric.name">
      <optional>
         <attribute name="lyric.name">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sets the
               font name default value for lyrics.</a:documentation>
            <ref name="mei_data.FONTNAME"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lyricstyle.attribute.lyric.size">
      <optional>
         <attribute name="lyric.size">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sets the
               default font size value for lyrics.</a:documentation>
            <ref name="mei_data.FONTSIZE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lyricstyle.attribute.lyric.style">
      <optional>
         <attribute name="lyric.style">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sets the
               default font style value for lyrics.</a:documentation>
            <ref name="mei_data.FONTSTYLE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.lyricstyle.attribute.lyric.weight">
      <optional>
         <attribute name="lyric.weight">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sets the
               default font weight value for lyrics.</a:documentation>
            <ref name="mei_data.FONTWEIGHT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.measurement.attributes">
      <ref name="mei_att.measurement.attribute.unit"/>
   </define>
   <define name="mei_att.measurement.attribute.unit">
      <optional>
         <attribute name="unit">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the unit of measurement. Suggested values include: 1] byte; 2] char; 3] cm; 4] in; 5]
               issue; 6] mm; 7] page; 8] pc; 9] pt; 10] px; 11] record; 12] vol; 13]
               vu</a:documentation>
            <choice>
               <value>byte</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Byte.</a:documentation>
               <value>char</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Character.</a:documentation>
               <value>cm</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Centimeter.</a:documentation>
               <value>in</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Inch.</a:documentation>
               <value>issue</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Serial
                  issue.</a:documentation>
               <value>mm</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Millimeter.</a:documentation>
               <value>page</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Page.</a:documentation>
               <value>pc</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Pica.</a:documentation>
               <value>pt</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Point.</a:documentation>
               <value>px</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Pixel.</a:documentation>
               <value>record</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Record.</a:documentation>
               <value>vol</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Serial
                  volume.</a:documentation>
               <value>vu</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MEI
                  virtual unit.</a:documentation>
               <data type="NMTOKEN"/>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.measurenumbers.attributes">
      <ref name="mei_att.measurenumbers.attribute.mnum.visible"/>
   </define>
   <define name="mei_att.measurenumbers.attribute.mnum.visible">
      <optional>
         <attribute name="mnum.visible">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               whether measure numbers should be displayed.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.mediabounds.attributes">
      <ref name="mei_att.mediabounds.attribute.begin"/>
      <ref name="mei_att.mediabounds.attribute.end"/>
      <ref name="mei_att.mediabounds.attribute.betype"/>
   </define>
   <define name="mei_att.mediabounds.attribute.begin">
      <optional>
         <attribute name="begin">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Specifies
               a point where the relevant content begins. A numerical value must be less and a time
               value must be earlier than that given by the end attribute.</a:documentation>
            <text/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.mediabounds.attribute.end">
      <optional>
         <attribute name="end">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Specifies
               a point where the relevant content ends. If not specified, the end of the content is
               assumed to be the end point. A numerical value must be greater and a time value must
               be later than that given by the begin attribute.</a:documentation>
            <text/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.mediabounds.attribute.betype">
      <optional>
         <attribute name="betype">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Type of
               values used in the begin/end attributes. The begin and end attributes can only be
               interpreted meaningfully in conjunction with this attribute.</a:documentation>
            <ref name="mei_data.BETYPE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.medium.attributes">
      <ref name="mei_att.medium.attribute.medium"/>
   </define>
   <define name="mei_att.medium.attribute.medium">
      <optional>
         <attribute name="medium">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               the writing medium.</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.meiversion.attributes">
      <ref name="mei_att.meiversion.attribute.meiversion"/>
   </define>
   <define name="mei_att.meiversion.attribute.meiversion">
      <optional>
         <attribute xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" name="meiversion"
            a:defaultValue="3.0.0">
            <a:documentation>Specifies a generic MEI version label.</a:documentation>
            <choice>
               <value>3.0.0</value>
               <a:documentation>This version of MEI.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.mensur.log.attributes">
      <ref name="mei_att.duration.ratio.attributes"/>
      <ref name="mei_att.slashcount.attributes"/>
      <ref name="mei_att.mensur.log.attribute.dot"/>
      <ref name="mei_att.mensur.log.attribute.sign"/>
   </define>
   <define name="mei_att.mensur.log.attribute.dot">
      <optional>
         <attribute name="dot">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Specifies
               whether a dot is to be added to the base symbol.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.mensur.log.attribute.sign">
      <optional>
         <attribute name="sign">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The base
               symbol in the mensuration sign/time signature of mensural notation.</a:documentation>
            <ref name="mei_data.MENSURATIONSIGN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.meterconformance.attributes">
      <ref name="mei_att.meterconformance.attribute.metcon"/>
   </define>
   <define name="mei_att.meterconformance.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 staff or layer and the prevailing
               meter.</a:documentation>
            <choice>
               <value>c</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Complete; i.e., conformant with the prevailing meter.</a:documentation>
               <value>i</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Incomplete; i.e., not enough beats.</a:documentation>
               <value>o</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Overfull; i.e., too many beats.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.meterconformance.bar.attributes">
      <ref name="mei_att.meterconformance.bar.attribute.metcon"/>
      <ref name="mei_att.meterconformance.bar.attribute.control"/>
   </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.meterconformance.bar.attribute.control">
      <optional>
         <attribute name="control">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               whether or not a bar line is "controlling"; that is, if it indicates a point of
               alignment across all the parts. Bar lines within a score are usually controlling;
               that is, they "line up". Bar lines within parts may or may not be controlling. When
               applied to &lt;measure&gt;, this attribute indicates the nature of the right barline
               but not the left.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.meterSig.log.attributes">
      <ref name="mei_att.meterSig.log.attribute.count"/>
      <ref name="mei_att.meterSig.log.attribute.sym"/>
      <ref name="mei_att.meterSig.log.attribute.unit"/>
   </define>
   <define name="mei_att.meterSig.log.attribute.count">
      <optional>
         <attribute name="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 additive expression that evaluates to a decimal
               number, such as 2+3.</a:documentation>
            <data type="string">
               <param name="pattern">\d+(\.\d+)?(\s*\+\s*\d+(\.\d+)?)*</param>
            </data>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.meterSig.log.attribute.sym">
      <optional>
         <attribute name="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.meterSig.log.attribute.unit">
      <optional>
         <attribute name="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"/>
         </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"/>
   </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 additive expression that evaluates to a decimal
               number, such as 2+3.</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"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.meterSigDefault.vis.attributes">
      <ref name="mei_att.meterSigDefault.vis.attribute.meter.rend"/>
      <ref name="mei_att.meterSigDefault.vis.attribute.meter.showchange"/>
      <ref name="mei_att.meterSigDefault.vis.attribute.meter.sym"/>
   </define>
   <define name="mei_att.meterSigDefault.vis.attribute.meter.rend">
      <optional>
         <attribute name="meter.rend">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
               an indication of how the meter signature should be rendered.</a:documentation>
            <choice>
               <value>num</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Show
                  only the number of beats.</a:documentation>
               <value>denomsym</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The
                  lower number in the meter signature is replaced by a note
                  symbol.</a:documentation>
               <value>norm</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Meter
                  signature rendered using traditional numeric values.</a:documentation>
               <value>invis</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Meter
                  signature not rendered.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.meterSigDefault.vis.attribute.meter.showchange">
      <optional>
         <attribute name="meter.showchange">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Determines whether a new meter signature should be displayed when the meter
               signature changes.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.meterSigDefault.vis.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. (Maezel'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.multinummeasures.attributes">
      <ref name="mei_att.multinummeasures.attribute.multi.number"/>
   </define>
   <define name="mei_att.multinummeasures.attribute.multi.number">
      <optional>
         <attribute name="multi.number">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               whether programmatically calculated counts of multiple measures of rest (mRest) and
               whole measure repeats (mRpt) in parts should be rendered.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.name.attributes">
      <ref name="mei_att.authorized.attributes"/>
      <ref name="mei_att.canonical.attributes"/>
      <ref name="mei_att.datable.attributes"/>
      <ref name="mei_att.filing.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-11">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@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. Use a standard value whenever
               possible.</a:documentation>
            <text/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.notationstyle.attributes">
      <ref name="mei_att.notationstyle.attribute.music.name"/>
      <ref name="mei_att.notationstyle.attribute.music.size"/>
   </define>
   <define name="mei_att.notationstyle.attribute.music.name">
      <optional>
         <attribute name="music.name">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sets the
               default music font name.</a:documentation>
            <ref name="mei_data.MUSICFONT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.notationstyle.attribute.music.size">
      <optional>
         <attribute name="music.size">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Sets the
               default music font size.</a:documentation>
            <ref name="mei_data.FONTSIZE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.note.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
      <ref name="mei_att.harmonicfunction.attributes"/>
      <ref name="mei_att.intervalmelodic.attributes"/>
      <ref name="mei_att.melodicfunction.attributes"/>
      <ref name="mei_att.pitchclass.attributes"/>
      <ref name="mei_att.solfa.attributes"/>
   </define>
   <define name="mei_att.note.ges.attributes">
      <ref name="mei_att.accidental.performed.attributes"/>
      <ref name="mei_att.articulation.performed.attributes"/>
      <ref name="mei_att.duration.performed.attributes"/>
      <ref name="mei_att.instrumentident.attributes"/>
      <ref name="mei_att.midivelocity.attributes"/>
      <ref name="mei_att.note.ges.tablature.attributes"/>
      <ref name="mei_att.note.ges.attribute.oct.ges"/>
      <ref name="mei_att.note.ges.attribute.pname.ges"/>
      <ref name="mei_att.note.ges.attribute.pnum"/>
   </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.GES"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.note.ges.attribute.pnum">
      <optional>
         <attribute name="pnum">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds a
               pitch-to-number mapping, a base-40 or MIDI note number, for
               example.</a:documentation>
            <ref name="mei_data.PITCHNUMBER"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.note.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.accidental.attributes"/>
      <ref name="mei_att.articulation.attributes"/>
      <ref name="mei_att.fermatapresent.attributes"/>
      <ref name="mei_att.pitched.attributes"/>
      <ref name="mei_att.syltext.attributes"/>
      <ref name="mei_att.slurpresent.attributes"/>
      <ref name="mei_att.tiepresent.attributes"/>
      <ref name="mei_att.tupletpresent.attributes"/>
   </define>
   <define name="mei_att.note.vis.attributes">
      <ref name="mei_att.altsym.attributes"/>
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.coloration.attributes"/>
      <ref name="mei_att.enclosingchars.attributes"/>
      <ref name="mei_att.extsym.attributes"/>
      <ref name="mei_att.noteheads.attributes"/>
      <ref name="mei_att.relativesize.attributes"/>
      <ref name="mei_att.staffloc.attributes"/>
      <ref name="mei_att.stems.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visibility.attributes"/>
      <ref name="mei_att.visualoffset.ho.attributes"/>
      <ref name="mei_att.visualoffset.to.attributes"/>
      <ref name="mei_att.xy.attributes"/>
   </define>
   <define name="mei_att.noteheads.attributes">
      <ref name="mei_att.noteheads.attribute.head.color"/>
      <ref name="mei_att.noteheads.attribute.head.fill"/>
      <ref name="mei_att.noteheads.attribute.head.fillcolor"/>
      <ref name="mei_att.noteheads.attribute.head.mod"/>
      <ref name="mei_att.noteheads.attribute.head.rotation"/>
      <ref name="mei_att.noteheads.attribute.head.shape"/>
      <ref name="mei_att.noteheads.attribute.head.visible"/>
   </define>
   <define name="mei_att.noteheads.attribute.head.color">
      <optional>
         <attribute name="head.color">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures
               the overall color of a notehead.</a:documentation>
            <ref name="mei_data.COLOR"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.noteheads.attribute.head.fill">
      <optional>
         <attribute name="head.fill">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               how/if the notehead is filled.</a:documentation>
            <ref name="mei_data.FILL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.noteheads.attribute.head.fillcolor">
      <optional>
         <attribute name="head.fillcolor">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures
               the fill color of a notehead if different from the overall note
               color.</a:documentation>
            <ref name="mei_data.COLOR"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.noteheads.attribute.head.mod">
      <optional>
         <attribute name="head.mod">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               any additional symbols applied to the notehead.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.NOTEHEADMODIFIER"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.noteheads.attribute.head.rotation">
      <optional>
         <attribute name="head.rotation">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               rotation applied to the basic notehead shape. A positive value rotates the notehead
               in a counter-clockwise fashion, while negative values produce clockwise
               rotation.</a:documentation>
            <ref name="mei_data.ROTATION"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.noteheads.attribute.head.shape">
      <optional>
         <attribute name="head.shape">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to
               override the head shape normally used for the given duration.</a:documentation>
            <ref name="mei_data.HEADSHAPE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.noteheads.attribute.head.visible">
      <optional>
         <attribute name="head.visible">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               if a feature should be rendered when the notation is presented graphically or sounded
               when it is presented in an aural form.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </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">Captures
               written octave information.</a:documentation>
            <ref name="mei_data.OCTAVE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.octavedefault.attributes">
      <ref name="mei_att.octavedefault.attribute.octave.default"/>
   </define>
   <define name="mei_att.octavedefault.attribute.octave.default">
      <optional>
         <attribute name="octave.default">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
               a default octave specification for use when the first note, rest, chord, etc. in a
               measure does not have an octave value specified.</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.PLACE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.onelinestaff.attributes">
      <ref name="mei_att.onelinestaff.attribute.ontheline"/>
   </define>
   <define name="mei_att.onelinestaff.attribute.ontheline">
      <optional>
         <attribute name="ontheline">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Determines the placement of notes on a 1-line staff. A value of 'true' places all
               notes on the line, while a value of 'false' places stems-up notes above the line and
               stems-down notes below the line.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.optimization.attributes">
      <ref name="mei_att.optimization.attribute.optimize"/>
   </define>
   <define name="mei_att.optimization.attribute.optimize">
      <optional>
         <attribute name="optimize">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               whether staves without notes, rests, etc. should be displayed. When the value is
               'true', empty staves are displayed.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.origin.layerident.attributes">
      <ref name="mei_att.origin.layerident.attribute.origin.layer"/>
   </define>
   <define name="mei_att.origin.layerident.attribute.origin.layer">
      <optional>
         <attribute name="origin.layer">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >identifies the layer on which referenced notation occurs.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="positiveInteger"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.origin.staffident.attributes">
      <ref name="mei_att.origin.staffident.attribute.origin.staff"/>
   </define>
   <define name="mei_att.origin.staffident.attribute.origin.staff">
      <optional>
         <attribute name="origin.staff">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">signifies
               the staff on which referenced notation occurs. Defaults to the same value as the
               local staff. Mandatory when applicable.</a:documentation>
            <list>
               <oneOrMore>
                  <data type="positiveInteger"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.origin.startendid.attributes">
      <ref name="mei_att.origin.startendid.attribute.origin.startid"/>
      <ref name="mei_att.origin.startendid.attribute.origin.endid"/>
   </define>
   <define name="mei_att.origin.startendid.attribute.origin.startid">
      <optional>
         <attribute name="origin.startid">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates
               the first element in a sequence of events.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.origin.startendid.attribute.origin.endid">
      <optional>
         <attribute name="origin.endid">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">indicates
               the final element in a sequence of events.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.origin.timestamp.musical.attributes">
      <ref name="mei_att.origin.timestamp.musical.attribute.origin.tstamp"/>
      <ref name="mei_att.origin.timestamp.musical.attribute.origin.tstamp2"/>
   </define>
   <define name="mei_att.origin.timestamp.musical.attribute.origin.tstamp">
      <optional>
         <attribute name="origin.tstamp">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">encodes
               the starting point of musical material in terms of musical time, i.e., a (potentially
               negative) count of measures plus a beat location.</a:documentation>
            <ref name="mei_data.MEASUREBEATOFFSET"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.origin.timestamp.musical.attribute.origin.tstamp2">
      <optional>
         <attribute name="origin.tstamp2">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">encodes
               the ending point of musical material in terms of musical time, i.e., a count of
               measures plus a beat location. The values are relative to the measure identified by
               @origin.tstamp.</a:documentation>
            <ref name="mei_data.MEASUREBEAT"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
      id="mei-att.origin.timestamp.musical-origin.tstamp2-origin.tstamp2_requires_origin.tstamp-constraint-12">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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:*[@origin.tstamp2]">
         <sch:assert test="@origin.tstamp">When @origin.tstamp2 is used @origin.tstamp must also be
            present.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.ornam.log.attributes">
      <ref name="mei_att.controlevent.attributes"/>
      <ref name="mei_att.startendid.attributes"/>
      <ref name="mei_att.timestamp2.musical.attributes"/>
   </define>
   <define name="mei_att.ornam.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.placement.attributes"/>
      <ref name="mei_att.visualoffset.attributes"/>
      <ref name="mei_att.visualoffset2.ho.attributes"/>
      <ref name="mei_att.visualoffset2.to.attributes"/>
      <ref name="mei_att.xy.attributes"/>
   </define>
   <define name="mei_att.ornam.ges.attributes">
      <ref name="mei_att.duration.performed.attributes"/>
   </define>
   <define name="mei_att.ornam.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.pad.anl.attributes">
      <empty/>
   </define>
   <define name="mei_att.pad.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.pad.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.pad.log.attribute.num"/>
   </define>
   <define name="mei_att.pad.log.attribute.num">
      <attribute name="num">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Amount of
            "padding" to be added, in interline units; that is, in units of 1/2 the distance between
            adjacent staff lines.</a:documentation>
         <data type="decimal"/>
      </attribute>
   </define>
   <define name="mei_att.pad.vis.attributes">
      <empty/>
   </define>
   <define name="mei_att.pages.attributes">
      <ref name="mei_att.pages.attribute.page.height"/>
      <ref name="mei_att.pages.attribute.page.width"/>
      <ref name="mei_att.pages.attribute.page.topmar"/>
      <ref name="mei_att.pages.attribute.page.botmar"/>
      <ref name="mei_att.pages.attribute.page.leftmar"/>
      <ref name="mei_att.pages.attribute.page.rightmar"/>
      <ref name="mei_att.pages.attribute.page.panels"/>
      <ref name="mei_att.pages.attribute.page.scale"/>
   </define>
   <define name="mei_att.pages.attribute.page.height">
      <optional>
         <attribute name="page.height">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Specifies
               the height of the page; may be expressed in real-world units or staff
               steps.</a:documentation>
            <ref name="mei_data.MEASUREMENTABS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pages.attribute.page.width">
      <optional>
         <attribute name="page.width">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               the width of the page; may be expressed in real-world units or staff
               steps.</a:documentation>
            <ref name="mei_data.MEASUREMENTABS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pages.attribute.page.topmar">
      <optional>
         <attribute name="page.topmar">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the amount of whitespace at the top of a page.</a:documentation>
            <ref name="mei_data.MEASUREMENTABS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pages.attribute.page.botmar">
      <optional>
         <attribute name="page.botmar">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the amount of whitespace at the bottom of a page.</a:documentation>
            <ref name="mei_data.MEASUREMENTABS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pages.attribute.page.leftmar">
      <optional>
         <attribute name="page.leftmar">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the amount of whitespace at the left side of a page.</a:documentation>
            <ref name="mei_data.MEASUREMENTABS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pages.attribute.page.rightmar">
      <optional>
         <attribute name="page.rightmar">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the amount of whitespace at the right side of a page.</a:documentation>
            <ref name="mei_data.MEASUREMENTABS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pages.attribute.page.panels">
      <optional>
         <attribute name="page.panels">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the number of logical pages to be rendered on a single physical
               page.</a:documentation>
            <ref name="mei_data.PAGE.PANELS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pages.attribute.page.scale">
      <optional>
         <attribute name="page.scale">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               how the page should be scaled when rendered.</a:documentation>
            <ref name="mei_data.PGSCALE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.part.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.part.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.part.log.attributes">
      <empty/>
   </define>
   <define name="mei_att.part.vis.attributes">
      <empty/>
   </define>
   <define name="mei_att.parts.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.parts.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.parts.log.attributes">
      <empty/>
   </define>
   <define name="mei_att.parts.vis.attributes">
      <empty/>
   </define>
   <define name="mei_att.pb.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.pb.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.pb.log.attributes">
      <empty/>
   </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 &lt;pb&gt;
               element occurs.</a:documentation>
            <choice>
               <value>verso</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
               <value>recto</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.phrase.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
      <ref name="mei_att.joined.attributes"/>
   </define>
   <define name="mei_att.phrase.ges.attributes">
      <ref name="mei_att.duration.performed.attributes"/>
   </define>
   <define name="mei_att.phrase.log.attributes">
      <ref name="mei_att.controlevent.attributes"/>
      <ref name="mei_att.startendid.attributes"/>
      <ref name="mei_att.timestamp2.musical.attributes"/>
   </define>
   <define name="mei_att.phrase.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.visualoffset.attributes"/>
      <ref name="mei_att.visualoffset2.attributes"/>
      <ref name="mei_att.xy.attributes"/>
      <ref name="mei_att.xy2.attributes"/>
   </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">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.placement.attributes">
      <ref name="mei_att.placement.attribute.place"/>
   </define>
   <define name="mei_att.placement.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">Contains
               a space separated list of references that identify active participants in a
               collection/relationship, such as notes under a phrase mark; that is, the entities
               pointed "from".</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-13">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@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.pointing.attributes">
      <ref name="mei_att.pointing.attribute.xlinkactuate"/>
      <ref name="mei_att.pointing.attribute.xlinkrole"/>
      <ref name="mei_att.pointing.attribute.xlinkshow"/>
      <ref name="mei_att.pointing.attribute.target"/>
      <ref name="mei_att.pointing.attribute.targettype"/>
   </define>
   <define name="mei_att.pointing.attribute.xlinkactuate">
      <optional>
         <attribute name="xlink:actuate">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Defines
               whether a link occurs automatically or must be requested by the
               user.</a:documentation>
            <choice>
               <value>onLoad</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Load
                  the target resource(s) immediately.</a:documentation>
               <value>onRequest</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Load
                  the target resource(s) upon user request.</a:documentation>
               <value>none</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Do not
                  permit loading of the target resource(s).</a:documentation>
               <value>other</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Behavior other than allowed by the other values of this
                  attribute.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pointing.attribute.xlinkrole">
      <optional>
         <attribute name="xlink:role">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Characterization of the relationship between resources. The value of the role
               attribute must be a URI.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pointing.attribute.xlinkshow">
      <optional>
         <attribute name="xlink:show">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Defines
               how a remote resource is rendered.</a:documentation>
            <choice>
               <value>new</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Open
                  in a new window.</a:documentation>
               <value>replace</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Load
                  the referenced resource in the same window.</a:documentation>
               <value>embed</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Embed
                  the referenced resource at the point of the link.</a:documentation>
               <value>none</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Do not
                  permit traversal to the referenced resource.</a:documentation>
               <value>other</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Behavior other than permitted by the other values of this
                  attribute.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pointing.attribute.target">
      <optional>
         <attribute name="target">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Allows
               the use of one or more previously-undeclared URIs to identify passive participants in
               a relationship; that is, the entities pointed "to".</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.URI"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pointing.attribute.targettype">
      <optional>
         <attribute name="targettype">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Characterization of target resource(s) using any convenient classification scheme or
               typology.</a:documentation>
            <data type="NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.quantity.attributes">
      <ref name="mei_att.quantity.attribute.quantity"/>
   </define>
   <define name="mei_att.quantity.attribute.quantity">
      <optional>
         <attribute name="quantity">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Numeric
               value capturing a measurement or count. Can only be interpreted in combination with
               the unit or currency attribute.</a:documentation>
            <data type="decimal">
               <param name="minInclusive">0</param>
            </data>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.relativesize.attributes">
      <ref name="mei_att.relativesize.attribute.size"/>
   </define>
   <define name="mei_att.relativesize.attribute.size">
      <optional>
         <attribute name="size">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               the relative size of a feature.</a:documentation>
            <ref name="mei_data.SIZE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.responsibility.attributes">
      <ref name="mei_att.responsibility.attribute.resp"/>
   </define>
   <define name="mei_att.responsibility.attribute.resp">
      <optional>
         <attribute name="resp">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the agent(s) responsible for some aspect of the text's creation, transcription,
               editing, or encoding. Its value must point to one or more identifiers declared in the
               document header.</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.responsibility-resp-check_respTarget-constraint-14">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@resp">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@resp attribute should have
            content.</sch:assert>
         <sch:assert role="warning"
            test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*[ancestor::mei:meiHead]/@xml:id"
            >The value in @resp should correspond to the @xml:id attribute of an element within the
            metadata header.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.rest.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.rest.ges.attributes">
      <ref name="mei_att.duration.performed.attributes"/>
      <ref name="mei_att.instrumentident.attributes"/>
   </define>
   <define name="mei_att.rest.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.fermatapresent.attributes"/>
      <ref name="mei_att.tupletpresent.attributes"/>
   </define>
   <define name="mei_att.rest.vis.attributes">
      <ref name="mei_att.altsym.attributes"/>
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.enclosingchars.attributes"/>
      <ref name="mei_att.relativesize.attributes"/>
      <ref name="mei_att.staffloc.attributes"/>
      <ref name="mei_att.staffloc.pitched.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualoffset.attributes"/>
      <ref name="mei_att.xy.attributes"/>
   </define>
   <define name="mei_att.sb.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.sb.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.sb.log.attributes">
      <empty/>
   </define>
   <define name="mei_att.sb.vis.attributes">
      <ref name="mei_att.altsym.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.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.score.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.score.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.score.log.attributes">
      <empty/>
   </define>
   <define name="mei_att.score.vis.attributes">
      <empty/>
   </define>
   <define name="mei_att.scoreDef.anl.attributes">
      <empty/>
   </define>
   <define name="mei_att.scoreDef.ges.attributes">
      <ref name="mei_att.channelized.attributes"/>
      <ref name="mei_att.timebase.attributes"/>
      <ref name="mei_att.miditempo.attributes"/>
      <ref name="mei_att.mmtempo.attributes"/>
      <ref name="mei_att.scoreDef.ges.attribute.tune.pname"/>
      <ref name="mei_att.scoreDef.ges.attribute.tune.Hz"/>
      <ref name="mei_att.scoreDef.ges.attribute.tune.temper"/>
   </define>
   <define name="mei_att.scoreDef.ges.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.</a:documentation>
            <ref name="mei_data.PITCHNAME"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.scoreDef.ges.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.scoreDef.ges.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.scoreDef.log.attributes">
      <ref name="mei_att.cleffing.log.attributes"/>
      <ref name="mei_att.duration.default.attributes"/>
      <ref name="mei_att.keySigDefault.log.attributes"/>
      <ref name="mei_att.meterSigDefault.log.attributes"/>
      <ref name="mei_att.octavedefault.attributes"/>
      <ref name="mei_att.transposition.attributes"/>
   </define>
   <define name="mei_att.scoreDef.vis.attributes">
      <ref name="mei_att.barplacement.attributes"/>
      <ref name="mei_att.cleffing.vis.attributes"/>
      <ref name="mei_att.distances.attributes"/>
      <ref name="mei_att.endings.attributes"/>
      <ref name="mei_att.keySigDefault.vis.attributes"/>
      <ref name="mei_att.lyricstyle.attributes"/>
      <ref name="mei_att.measurenumbers.attributes"/>
      <ref name="mei_att.meterSigDefault.vis.attributes"/>
      <ref name="mei_att.multinummeasures.attributes"/>
      <ref name="mei_att.notationstyle.attributes"/>
      <ref name="mei_att.onelinestaff.attributes"/>
      <ref name="mei_att.optimization.attributes"/>
      <ref name="mei_att.pages.attributes"/>
      <ref name="mei_att.spacing.attributes"/>
      <ref name="mei_att.systems.attributes"/>
      <ref name="mei_att.textstyle.attributes"/>
      <ref name="mei_att.scoreDef.vis.attribute.vu.height"/>
   </define>
   <define name="mei_att.scoreDef.vis.attribute.vu.height">
      <optional>
         <attribute name="vu.height">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Defines
               the height of a "virtual unit" (vu) in terms of real-world units. A single vu is half
               the distance between the vertical center point of a staff line and that of an
               adjacent staff line.</a:documentation>
            <data type="token">
               <param name="pattern">\d+(\.\d+)?(cm|mm|in|pt|pc)</param>
            </data>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.section.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.section.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.section.log.attributes">
      <empty/>
   </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.sequence.attributes">
      <ref name="mei_att.sequence.attribute.seq"/>
   </define>
   <define name="mei_att.sequence.attribute.seq">
      <optional>
         <attribute name="seq">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to
               assign a sequence number related to the order in which the encoded features carrying
               this attribute are believed to have occurred.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.slashcount.attributes">
      <ref name="mei_att.slashcount.attribute.slash"/>
   </define>
   <define name="mei_att.slashcount.attribute.slash">
      <optional>
         <attribute name="slash">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the number of slashes present.</a:documentation>
            <ref name="mei_data.SLASH"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.slurpresent.attributes">
      <ref name="mei_att.slurpresent.attribute.slur"/>
   </define>
   <define name="mei_att.slurpresent.attribute.slur">
      <optional>
         <attribute name="slur">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               that this element participates in a slur. If visual information about the slur needs
               to be recorded, then a &lt;slur&gt; element should be employed.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.SLUR"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.space.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.space.ges.attributes">
      <ref name="mei_att.duration.performed.attributes"/>
   </define>
   <define name="mei_att.space.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.fermatapresent.attributes"/>
      <ref name="mei_att.tupletpresent.attributes"/>
   </define>
   <define name="mei_att.space.vis.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.spacing.attributes">
      <ref name="mei_att.spacing.attribute.spacing.packexp"/>
      <ref name="mei_att.spacing.attribute.spacing.packfact"/>
      <ref name="mei_att.spacing.attribute.spacing.staff"/>
      <ref name="mei_att.spacing.attribute.spacing.system"/>
   </define>
   <define name="mei_att.spacing.attribute.spacing.packexp">
      <optional>
         <attribute name="spacing.packexp">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               a note's spacing relative to its time value.</a:documentation>
            <data type="decimal"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.spacing.attribute.spacing.packfact">
      <optional>
         <attribute name="spacing.packfact">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               the note spacing of output.</a:documentation>
            <data type="decimal"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.spacing.attribute.spacing.staff">
      <optional>
         <attribute name="spacing.staff">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Specifies
               the minimum amount of space between adjacent staves in the same system; measured from
               the bottom line of the staff above to the top line of the staff
               below.</a:documentation>
            <ref name="mei_data.MEASUREMENTREL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.spacing.attribute.spacing.system">
      <optional>
         <attribute name="spacing.system">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               the space between adjacent systems; 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>
               <ref name="mei_data.MEASUREMENTREL"/>
               <optional>
                  <ref name="mei_data.MEASUREMENTREL"/>
               </optional>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.staff.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.staff.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.staff.log.attributes">
      <ref name="mei_att.meterconformance.attributes"/>
      <ref name="mei_att.staff.log.attribute.def"/>
   </define>
   <define name="mei_att.staff.log.attribute.def">
      <optional>
         <attribute name="def">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a mechanism for linking the staff to a staffDef element.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
      id="mei-att.staff.log-def-check_defTarget_staff-constraint-15">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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:staff/@def">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@def attribute should have
            content.</sch:assert>
         <sch:assert role="warning"
            test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:staffDef/@xml:id"
            >The value in @def should correspond to the @xml:id attribute of a staffDef
            element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.staff.vis.attributes">
      <ref name="mei_att.visibility.attributes"/>
   </define>
   <define name="mei_att.staffDef.anl.attributes">
      <empty/>
   </define>
   <define name="mei_att.staffDef.ges.attributes">
      <ref name="mei_att.instrumentident.attributes"/>
      <ref name="mei_att.timebase.attributes"/>
      <ref name="mei_att.staffDef.ges.tablature.attributes"/>
   </define>
   <define name="mei_att.staffDef.log.attributes">
      <ref name="mei_att.cleffing.log.attributes"/>
      <ref name="mei_att.duration.default.attributes"/>
      <ref name="mei_att.keySigDefault.log.attributes"/>
      <ref name="mei_att.meterSigDefault.log.attributes"/>
      <ref name="mei_att.notationtype.attributes"/>
      <ref name="mei_att.octavedefault.attributes"/>
      <ref name="mei_att.transposition.attributes"/>
   </define>
   <define name="mei_att.staffDef.vis.attributes">
      <ref name="mei_att.cleffing.vis.attributes"/>
      <ref name="mei_att.distances.attributes"/>
      <ref name="mei_att.keySigDefault.vis.attributes"/>
      <ref name="mei_att.labels.addl.attributes"/>
      <ref name="mei_att.lyricstyle.attributes"/>
      <ref name="mei_att.meterSigDefault.vis.attributes"/>
      <ref name="mei_att.multinummeasures.attributes"/>
      <ref name="mei_att.onelinestaff.attributes"/>
      <ref name="mei_att.scalable.attributes"/>
      <ref name="mei_att.textstyle.attributes"/>
      <ref name="mei_att.visibility.attributes"/>
      <ref name="mei_att.staffDef.vis.attribute.grid.show"/>
      <ref name="mei_att.staffDef.vis.attribute.layerscheme"/>
      <ref name="mei_att.staffDef.vis.attribute.lines"/>
      <ref name="mei_att.staffDef.vis.attribute.lines.color"/>
      <ref name="mei_att.staffDef.vis.attribute.lines.visible"/>
      <ref name="mei_att.staffDef.vis.attribute.spacing"/>
   </define>
   <define name="mei_att.staffDef.vis.attribute.grid.show">
      <optional>
         <attribute name="grid.show">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Determines whether to display guitar chord grids.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.staffDef.vis.attribute.layerscheme">
      <optional>
         <attribute name="layerscheme">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the number of layers and their stem directions.</a:documentation>
            <ref name="mei_data.LAYERSCHEME"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.staffDef.vis.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.staffDef.vis.attribute.lines.color">
      <optional>
         <attribute name="lines.color">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures
               the colors of the staff lines. The value is structured; that is, it should have the
               same number of space-separated RGB values as the number of lines indicated by the
               lines attribute. A line can be made invisible by assigning it the same RGB value as
               the background, usually white.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.COLOR"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.staffDef.vis.attribute.lines.visible">
      <optional>
         <attribute name="lines.visible">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               whether all staff lines are visible.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.staffDef.vis.attribute.spacing">
      <optional>
         <attribute name="spacing">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the absolute distance (as opposed to the relative distances recorded in
               &lt;scoreDef&gt; elements) between this staff and the preceding one in the same
               system. This value is meaningless for the first staff in a system since the
               spacing.system attribute indicates the spacing between systems.</a:documentation>
            <ref name="mei_data.MEASUREMENTREL"/>
         </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.staffGrp.anl.attributes">
      <empty/>
   </define>
   <define name="mei_att.staffGrp.ges.attributes">
      <ref name="mei_att.instrumentident.attributes"/>
   </define>
   <define name="mei_att.staffGrp.log.attributes">
      <empty/>
   </define>
   <define name="mei_att.staffGrp.vis.attributes">
      <ref name="mei_att.labels.addl.attributes"/>
      <ref name="mei_att.staffgroupingsym.attributes"/>
      <ref name="mei_att.visibility.attributes"/>
      <ref name="mei_att.staffGrp.vis.attribute.barthru"/>
   </define>
   <define name="mei_att.staffGrp.vis.attribute.barthru">
      <optional>
         <attribute name="barthru">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">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.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.staffloc.attributes">
      <ref name="mei_att.staffloc.attribute.loc"/>
   </define>
   <define name="mei_att.staffloc.attribute.loc">
      <optional>
         <attribute name="loc">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds the
               staff location of the feature.</a:documentation>
            <ref name="mei_data.STAFFLOC"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.staffloc.pitched.attributes">
      <ref name="mei_att.staffloc.pitched.attribute.ploc"/>
      <ref name="mei_att.staffloc.pitched.attribute.oloc"/>
   </define>
   <define name="mei_att.staffloc.pitched.attribute.ploc">
      <optional>
         <attribute name="ploc">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures
               staff location in terms of written pitch name.</a:documentation>
            <ref name="mei_data.PITCHNAME"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.staffloc.pitched.attribute.oloc">
      <optional>
         <attribute name="oloc">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               staff location in terms of written octave.</a:documentation>
            <ref name="mei_data.OCTAVE"/>
         </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-16">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@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-17">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@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"/>
      <ref name="mei_att.stems.attribute.stem.pos"/>
      <ref name="mei_att.stems.attribute.stem.x"/>
      <ref name="mei_att.stems.attribute.stem.y"/>
   </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.MEASUREMENTABS"/>
         </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.stems.attribute.stem.pos">
      <optional>
         <attribute name="stem.pos">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the position of the stem in relation to the note head(s).</a:documentation>
            <ref name="mei_data.STEMPOSITION"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.stems.attribute.stem.x">
      <optional>
         <attribute name="stem.x">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the output x coordinate of the stem's attachment point.</a:documentation>
            <data type="decimal"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.stems.attribute.stem.y">
      <optional>
         <attribute name="stem.y">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the output y coordinate of the stem's attachment point.</a:documentation>
            <data type="decimal"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.syl.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.syl.ges.attributes">
      <empty/>
   </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>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.syl.vis.attributes">
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualoffset.attributes"/>
      <ref name="mei_att.xy.attributes"/>
      <ref name="mei_att.horizontalalign.attributes"/>
   </define>
   <define name="mei_att.syltext.attributes">
      <ref name="mei_att.syltext.attribute.syl"/>
   </define>
   <define name="mei_att.syltext.attribute.syl">
      <optional>
         <attribute name="syl">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds an
               associated sung text syllable.</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.systems.attributes">
      <ref name="mei_att.systems.attribute.system.leftline"/>
      <ref name="mei_att.systems.attribute.system.leftmar"/>
      <ref name="mei_att.systems.attribute.system.rightmar"/>
      <ref name="mei_att.systems.attribute.system.topmar"/>
   </define>
   <define name="mei_att.systems.attribute.system.leftline">
      <optional>
         <attribute name="system.leftline">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               whether the staves are joined at the left by a continuous line. The default value is
               "true". Do not confuse this with the heavy vertical line used as a grouping
               symbol.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.systems.attribute.system.leftmar">
      <optional>
         <attribute name="system.leftmar">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               the amount of whitespace at the left system margin relative to
               page.leftmar.</a:documentation>
            <ref name="mei_data.MEASUREMENTABS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.systems.attribute.system.rightmar">
      <optional>
         <attribute name="system.rightmar">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               the amount of whitespace at the right system margin relative to
               page.rightmar.</a:documentation>
            <ref name="mei_data.MEASUREMENTABS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.systems.attribute.system.topmar">
      <optional>
         <attribute name="system.topmar">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               the distance from page's top edge to the first system; used for first page
               only.</a:documentation>
            <ref name="mei_data.MEASUREMENTABS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.targeteval.attributes">
      <ref name="mei_att.targeteval.attribute.evaluate"/>
   </define>
   <define name="mei_att.targeteval.attribute.evaluate">
      <optional>
         <attribute name="evaluate">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Specifies
               the intended meaning when a participant in a relationship is itself a
               pointer.</a:documentation>
            <choice>
               <value>all</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">If an
                  element pointed to is itself a pointer, then the target of that pointer will be
                  taken, and so on, until an element is found which is not a
                  pointer.</a:documentation>
               <value>one</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">If an
                  element pointed to is itself a pointer, then its target (whether a pointer or not)
                  is taken as the target of this pointer.</a:documentation>
               <value>none</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">No
                  further evaluation of targets is carried out beyond that needed to find the
                  element(s) specified in plist or target attribute.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tempo.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.tempo.ges.attributes">
      <ref name="mei_att.miditempo.attributes"/>
      <ref name="mei_att.mmtempo.attributes"/>
   </define>
   <define name="mei_att.tempo.log.attributes">
      <ref name="mei_att.controlevent.attributes"/>
      <ref name="mei_att.startid.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 distinquish this kind of
                  historical usage from the modern metric modulation form.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tempo.vis.attributes">
      <ref name="mei_att.placement.attributes"/>
      <ref name="mei_att.visualoffset.attributes"/>
      <ref name="mei_att.visualoffset2.ho.attributes"/>
      <ref name="mei_att.visualoffset2.to.attributes"/>
      <ref name="mei_att.xy.attributes"/>
   </define>
   <define name="mei_att.textstyle.attributes">
      <ref name="mei_att.textstyle.attribute.text.fam"/>
      <ref name="mei_att.textstyle.attribute.text.name"/>
      <ref name="mei_att.textstyle.attribute.text.size"/>
      <ref name="mei_att.textstyle.attribute.text.style"/>
      <ref name="mei_att.textstyle.attribute.text.weight"/>
   </define>
   <define name="mei_att.textstyle.attribute.text.fam">
      <optional>
         <attribute name="text.fam">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a default value for the font family name of text (other than lyrics) when this
               information is not provided on the individual elements.</a:documentation>
            <ref name="mei_data.FONTFAMILY"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.textstyle.attribute.text.name">
      <optional>
         <attribute name="text.name">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a default value for the font name of text (other than lyrics) when this information
               is not provided on the individual elements.</a:documentation>
            <ref name="mei_data.FONTNAME"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.textstyle.attribute.text.size">
      <optional>
         <attribute name="text.size">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a default value for the font size of text (other than lyrics) when this information
               is not provided on the individual elements.</a:documentation>
            <ref name="mei_data.FONTSIZE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.textstyle.attribute.text.style">
      <optional>
         <attribute name="text.style">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a default value for the font style of text (other than lyrics) when this information
               is not provided on the individual elements.</a:documentation>
            <ref name="mei_data.FONTSTYLE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.textstyle.attribute.text.weight">
      <optional>
         <attribute name="text.weight">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a default value for the font weight for text (other than lyrics) when this
               information is not provided on the individual elements.</a:documentation>
            <ref name="mei_data.FONTWEIGHT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tiepresent.attributes">
      <ref name="mei_att.tiepresent.attribute.tie"/>
   </define>
   <define name="mei_att.tiepresent.attribute.tie">
      <optional>
         <attribute name="tie">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               that this element participates in a tie. If visual information about the tie needs to
               be recorded, then a &lt;tie&gt; element should be employed.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.TIE"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.timestamp.musical.attributes">
      <ref name="mei_att.timestamp.musical.attribute.tstamp"/>
   </define>
   <define name="mei_att.timestamp.musical.attribute.tstamp">
      <optional>
         <attribute name="tstamp">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes
               the onset time in terms of musical time, i.e.,
               beats[.fractional_beat_part].</a:documentation>
            <ref name="mei_data.BEAT"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.timestamp.performed.attributes">
      <ref name="mei_att.timestamp.performed.attribute.tstamp.ges"/>
      <ref name="mei_att.timestamp.performed.attribute.tstamp.real"/>
   </define>
   <define name="mei_att.timestamp.performed.attribute.tstamp.ges">
      <optional>
         <attribute name="tstamp.ges">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures
               performed onset time in several forms; that is, ppq (MIDI clicks and MusicXML
               'divisions'), Humdrum **recip values, beats, seconds, or mensural duration
               values.</a:documentation>
            <ref name="mei_data.DURATION.gestural"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.timestamp.performed.attribute.tstamp.real">
      <optional>
         <attribute name="tstamp.real">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to
               record the onset time in terms of ISO time.</a:documentation>
            <ref name="mei_data.ISOTIME"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.timestamp2.musical.attributes">
      <ref name="mei_att.timestamp2.musical.attribute.tstamp2"/>
   </define>
   <define name="mei_att.timestamp2.musical.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 in terms of musical time, i.e., a count of measures plus
               a beat location.</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">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="decimal"/>
         </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">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="decimal"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tupletpresent.attributes">
      <ref name="mei_att.tupletpresent.attribute.tuplet"/>
   </define>
   <define name="mei_att.tupletpresent.attribute.tuplet">
      <optional>
         <attribute name="tuplet">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               that this feature participates in a tuplet. If visual information about the tuplet
               needs to be recorded, then a &lt;tuplet&gt; element should be
               employed.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.TUPLET"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.typed.attributes">
      <ref name="mei_att.typed.attribute.type"/>
      <ref name="mei_att.typed.attribute.subtype"/>
   </define>
   <define name="mei_att.typed.attribute.type">
      <optional>
         <attribute name="type">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Characterizes the element in some sense, using any convenient classification scheme
               or typology.</a:documentation>
            <data type="NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.typed.attribute.subtype">
      <optional>
         <attribute name="subtype">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provide
               any sub-classification for the element, additional to that given by its type
               attribute.</a:documentation>
            <data type="NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
      id="mei-att.typed-subtype-When_subtype-constraint-18">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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:*[@subtype]">
         <sch:assert test="@type">An element with a subtype attribute must have a type
            attribute.</sch:assert>
      </sch:rule>
   </pattern>
   <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"/>
   </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.visibility.attributes">
      <ref name="mei_att.visibility.attribute.visible"/>
   </define>
   <define name="mei_att.visibility.attribute.visible">
      <optional>
         <attribute name="visible">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               if a feature should be rendered when the notation is presented graphically or sounded
               when it is presented in an aural form.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.visualoffset.attributes">
      <ref name="mei_att.visualoffset.ho.attributes"/>
      <ref name="mei_att.visualoffset.to.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.MEASUREMENTREL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.visualoffset.to.attributes">
      <ref name="mei_att.visualoffset.to.attribute.to"/>
   </define>
   <define name="mei_att.visualoffset.to.attribute.to">
      <optional>
         <attribute name="to">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records a
               timestamp adjustment of a feature's programmatically-determined location in terms of
               musical time; that is, beats.</a:documentation>
            <ref name="mei_data.TSTAMPOFFSET"/>
         </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.MEASUREMENTREL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.visualoffset2.attributes">
      <ref name="mei_att.visualoffset2.ho.attributes"/>
      <ref name="mei_att.visualoffset2.to.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.MEASUREMENTREL"/>
         </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.MEASUREMENTREL"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.visualoffset2.to.attributes">
      <ref name="mei_att.visualoffset2.to.attribute.startto"/>
      <ref name="mei_att.visualoffset2.to.attribute.endto"/>
   </define>
   <define name="mei_att.visualoffset2.to.attribute.startto">
      <optional>
         <attribute name="startto">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records a
               timestamp adjustment of a feature's programmatically-determined start
               point.</a:documentation>
            <ref name="mei_data.TSTAMPOFFSET"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.visualoffset2.to.attribute.endto">
      <optional>
         <attribute name="endto">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records a
               timestamp adjustment of a feature's programmatically-determined end
               point.</a:documentation>
            <ref name="mei_data.TSTAMPOFFSET"/>
         </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.MEASUREMENTREL"/>
         </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.MEASUREMENTREL"/>
         </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.MEASUREMENTABS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.xy.attributes">
      <ref name="mei_att.xy.attribute.x"/>
      <ref name="mei_att.xy.attribute.y"/>
   </define>
   <define name="mei_att.xy.attribute.x">
      <optional>
         <attribute name="x">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes
               an x coordinate for a feature in an output coordinate system. When it is necessary to
               record the placement of a feature in a facsimile image, use the facs
               attribute.</a:documentation>
            <data type="decimal"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.xy.attribute.y">
      <optional>
         <attribute name="y">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes
               an y coordinate for a feature in an output coordinate system. When it is necessary to
               record the placement of a feature in a facsimile image, use the facs
               attribute.</a:documentation>
            <data type="decimal"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.xy2.attributes">
      <ref name="mei_att.xy2.attribute.x2"/>
      <ref name="mei_att.xy2.attribute.y2"/>
   </define>
   <define name="mei_att.xy2.attribute.x2">
      <optional>
         <attribute name="x2">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes
               the optional 2nd x coordinate.</a:documentation>
            <data type="decimal"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.xy2.attribute.y2">
      <optional>
         <attribute name="y2">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes
               the optional 2nd y coordinate.</a:documentation>
            <data type="decimal"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_model.addressLike">
      <choice>
         <ref name="mei_address"/>
      </choice>
   </define>
   <define name="mei_model.addressLike_alternation">
      <choice>
         <ref name="mei_address"/>
      </choice>
   </define>
   <define name="mei_model.addressLike_sequence">
      <ref name="mei_address"/>
   </define>
   <define name="mei_model.addressLike_sequenceOptional">
      <optional>
         <ref name="mei_address"/>
      </optional>
   </define>
   <define name="mei_model.addressLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_address"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.addressLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_address"/>
      </oneOrMore>
   </define>
   <define name="mei_model.annotLike">
      <choice>
         <ref name="mei_annot"/>
      </choice>
   </define>
   <define name="mei_model.annotLike_alternation">
      <choice>
         <ref name="mei_annot"/>
      </choice>
   </define>
   <define name="mei_model.annotLike_sequence">
      <ref name="mei_annot"/>
   </define>
   <define name="mei_model.annotLike_sequenceOptional">
      <optional>
         <ref name="mei_annot"/>
      </optional>
   </define>
   <define name="mei_model.annotLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_annot"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.annotLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_annot"/>
      </oneOrMore>
   </define>
   <define name="mei_model.biblLike">
      <choice>
         <ref name="mei_bibl"/>
      </choice>
   </define>
   <define name="mei_model.biblLike_alternation">
      <choice>
         <ref name="mei_bibl"/>
      </choice>
   </define>
   <define name="mei_model.biblLike_sequence">
      <ref name="mei_bibl"/>
   </define>
   <define name="mei_model.biblLike_sequenceOptional">
      <optional>
         <ref name="mei_bibl"/>
      </optional>
   </define>
   <define name="mei_model.biblLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_bibl"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.biblLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_bibl"/>
      </oneOrMore>
   </define>
   <define name="mei_model.biblPart">
      <choice>
         <ref name="mei_model.editionLike"/>
         <ref name="mei_model.respLike"/>
         <ref name="mei_biblScope"/>
         <ref name="mei_creation"/>
         <ref name="mei_extent"/>
         <ref name="mei_genre"/>
         <ref name="mei_imprint"/>
         <ref name="mei_physLoc"/>
         <ref name="mei_recipient"/>
         <ref name="mei_relatedItem"/>
         <ref name="mei_series"/>
         <ref name="mei_textLang"/>
         <ref name="mei_perfDuration"/>
      </choice>
   </define>
   <define name="mei_model.captionLike">
      <choice>
         <ref name="mei_caption"/>
      </choice>
   </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_dir"/>
         <ref name="mei_dynam"/>
         <ref name="mei_ornam"/>
         <ref name="mei_phrase"/>
         <ref name="mei_tempo"/>
         <ref name="mei_model.controleventLike.harmony"/>
      </choice>
   </define>
   <define name="mei_model.dateLike">
      <choice>
         <ref name="mei_date"/>
      </choice>
   </define>
   <define name="mei_model.dateLike_alternation">
      <choice>
         <ref name="mei_date"/>
      </choice>
   </define>
   <define name="mei_model.dateLike_sequence">
      <ref name="mei_date"/>
   </define>
   <define name="mei_model.dateLike_sequenceOptional">
      <optional>
         <ref name="mei_date"/>
      </optional>
   </define>
   <define name="mei_model.dateLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_date"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.dateLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_date"/>
      </oneOrMore>
   </define>
   <define name="mei_model.dimLike">
      <choice>
         <ref name="mei_depth"/>
         <ref name="mei_height"/>
         <ref name="mei_width"/>
      </choice>
   </define>
   <define name="mei_model.editionLike">
      <choice>
         <ref name="mei_edition"/>
      </choice>
   </define>
   <define name="mei_model.editorialLike">
      <choice>
         <ref name="mei_abbr"/>
         <ref name="mei_expan"/>
      </choice>
   </define>
   <define name="mei_model.editorialLike_alternation">
      <choice>
         <ref name="mei_abbr"/>
         <ref name="mei_expan"/>
      </choice>
   </define>
   <define name="mei_model.editorialLike_sequence">
      <ref name="mei_abbr"/>
      <ref name="mei_expan"/>
   </define>
   <define name="mei_model.editorialLike_sequenceOptional">
      <optional>
         <ref name="mei_abbr"/>
      </optional>
      <optional>
         <ref name="mei_expan"/>
      </optional>
   </define>
   <define name="mei_model.editorialLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_abbr"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_expan"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.editorialLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_abbr"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_expan"/>
      </oneOrMore>
   </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_barLine"/>
         <ref name="mei_chord"/>
         <ref name="mei_clef"/>
         <ref name="mei_clefGrp"/>
         <ref name="mei_custos"/>
         <ref name="mei_note"/>
         <ref name="mei_pad"/>
         <ref name="mei_rest"/>
         <ref name="mei_space"/>
      </choice>
   </define>
   <define name="mei_model.headLike">
      <choice>
         <ref name="mei_head"/>
      </choice>
   </define>
   <define name="mei_model.identifierLike">
      <choice>
         <ref name="mei_identifier"/>
      </choice>
   </define>
   <define name="mei_model.identifierLike_alternation">
      <choice>
         <ref name="mei_identifier"/>
      </choice>
   </define>
   <define name="mei_model.identifierLike_sequence">
      <ref name="mei_identifier"/>
   </define>
   <define name="mei_model.identifierLike_sequenceOptional">
      <optional>
         <ref name="mei_identifier"/>
      </optional>
   </define>
   <define name="mei_model.identifierLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_identifier"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.identifierLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_identifier"/>
      </oneOrMore>
   </define>
   <define name="mei_model.imprintPart">
      <choice>
         <ref name="mei_distributor"/>
         <ref name="mei_publisher"/>
         <ref name="mei_pubPlace"/>
      </choice>
   </define>
   <define name="mei_model.incipLike">
      <choice>
         <ref name="mei_incip"/>
      </choice>
   </define>
   <define name="mei_model.instrDefLike">
      <choice>
         <ref name="mei_instrDef"/>
      </choice>
   </define>
   <define name="mei_model.keyAccidLike">
      <choice>
         <ref name="mei_keyAccid"/>
      </choice>
   </define>
   <define name="mei_model.keySigLike">
      <choice>
         <ref name="mei_keySig"/>
      </choice>
   </define>
   <define name="mei_model.keySigLike_alternation">
      <choice>
         <ref name="mei_keySig"/>
      </choice>
   </define>
   <define name="mei_model.keySigLike_sequence">
      <ref name="mei_keySig"/>
   </define>
   <define name="mei_model.keySigLike_sequenceOptional">
      <optional>
         <ref name="mei_keySig"/>
      </optional>
   </define>
   <define name="mei_model.keySigLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_keySig"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.keySigLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_keySig"/>
      </oneOrMore>
   </define>
   <define name="mei_model.labelLike">
      <choice>
         <ref name="mei_label"/>
      </choice>
   </define>
   <define name="mei_model.layerDefLike">
      <choice>
         <ref name="mei_layerDef"/>
      </choice>
   </define>
   <define name="mei_model.layerLike">
      <choice>
         <ref name="mei_layer"/>
      </choice>
   </define>
   <define name="mei_model.layerPart">
      <choice>
         <ref name="mei_model.layerPart.mensuralAndNeumes"/>
      </choice>
   </define>
   <define name="mei_model.layerPart.mensuralAndNeumes">
      <choice>
         <ref name="mei_model.scoreDefLike"/>
         <ref name="mei_model.staffDefLike"/>
         <ref name="mei_model.layerPart.neumes"/>
         <ref name="mei_model.midiLike"/>
      </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.milestoneLike.text">
      <choice>
         <ref name="mei_model.lbLike"/>
         <ref name="mei_model.pbLike"/>
      </choice>
   </define>
   <define name="mei_model.nameLike">
      <choice>
         <ref name="mei_name"/>
         <ref name="mei_model.nameLike.agent"/>
         <ref name="mei_model.nameLike.place"/>
      </choice>
   </define>
   <define name="mei_model.nameLike_alternation">
      <choice>
         <ref name="mei_name"/>
         <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_name"/>
      <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_name"/>
      </optional>
      <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_name"/>
      </zeroOrMore>
      <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_name"/>
      </oneOrMore>
      <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"/>
         <ref name="mei_dot"/>
      </choice>
   </define>
   <define name="mei_model.numLike">
      <choice>
         <ref name="mei_num"/>
      </choice>
   </define>
   <define name="mei_model.numLike_alternation">
      <choice>
         <ref name="mei_num"/>
      </choice>
   </define>
   <define name="mei_model.numLike_sequence">
      <ref name="mei_num"/>
   </define>
   <define name="mei_model.numLike_sequenceOptional">
      <optional>
         <ref name="mei_num"/>
      </optional>
   </define>
   <define name="mei_model.numLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_num"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.numLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_num"/>
      </oneOrMore>
   </define>
   <define name="mei_model.paracontentPart">
      <choice>
         <ref name="mei_model.textphraseLike"/>
         <ref name="mei_model.editLike"/>
         <ref name="mei_model.transcriptionLike"/>
         <ref name="mei_model.tableLike"/>
         <ref name="mei_model.lgLike"/>
         <ref name="mei_model.listLike"/>
         <ref name="mei_model.quoteLike"/>
      </choice>
   </define>
   <define name="mei_model.partLike">
      <choice>
         <ref name="mei_part"/>
      </choice>
   </define>
   <define name="mei_model.partsLike">
      <choice>
         <ref name="mei_parts"/>
      </choice>
   </define>
   <define name="mei_model.pbLike">
      <choice>
         <ref name="mei_pb"/>
      </choice>
   </define>
   <define name="mei_model.pbLike_alternation">
      <choice>
         <ref name="mei_pb"/>
      </choice>
   </define>
   <define name="mei_model.pbLike_sequence">
      <ref name="mei_pb"/>
   </define>
   <define name="mei_model.pbLike_sequenceOptional">
      <optional>
         <ref name="mei_pb"/>
      </optional>
   </define>
   <define name="mei_model.pbLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_pb"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.pbLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_pb"/>
      </oneOrMore>
   </define>
   <define name="mei_model.pLike">
      <choice>
         <ref name="mei_p"/>
      </choice>
   </define>
   <define name="mei_model.rendLike">
      <choice>
         <ref name="mei_rend"/>
         <ref name="mei_stack"/>
      </choice>
   </define>
   <define name="mei_model.rendLike_alternation">
      <choice>
         <ref name="mei_rend"/>
         <ref name="mei_stack"/>
      </choice>
   </define>
   <define name="mei_model.rendLike_sequence">
      <ref name="mei_rend"/>
      <ref name="mei_stack"/>
   </define>
   <define name="mei_model.rendLike_sequenceOptional">
      <optional>
         <ref name="mei_rend"/>
      </optional>
      <optional>
         <ref name="mei_stack"/>
      </optional>
   </define>
   <define name="mei_model.rendLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_rend"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_stack"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.rendLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_rend"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_stack"/>
      </oneOrMore>
   </define>
   <define name="mei_model.repositoryLike">
      <choice>
         <ref name="mei_repository"/>
      </choice>
   </define>
   <define name="mei_model.repositoryLike_alternation">
      <choice>
         <ref name="mei_repository"/>
      </choice>
   </define>
   <define name="mei_model.repositoryLike_sequence">
      <ref name="mei_repository"/>
   </define>
   <define name="mei_model.repositoryLike_sequenceOptional">
      <optional>
         <ref name="mei_repository"/>
      </optional>
   </define>
   <define name="mei_model.repositoryLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_repository"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.repositoryLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_repository"/>
      </oneOrMore>
   </define>
   <define name="mei_model.resourceLike">
      <choice>
         <ref name="mei_facsimile"/>
         <ref name="mei_performance"/>
      </choice>
   </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_author"/>
         <ref name="mei_composer"/>
         <ref name="mei_editor"/>
         <ref name="mei_funder"/>
         <ref name="mei_librettist"/>
         <ref name="mei_lyricist"/>
         <ref name="mei_sponsor"/>
      </choice>
   </define>
   <define name="mei_model.respLikePart_alternation">
      <choice>
         <ref name="mei_arranger"/>
         <ref name="mei_author"/>
         <ref name="mei_composer"/>
         <ref name="mei_editor"/>
         <ref name="mei_funder"/>
         <ref name="mei_librettist"/>
         <ref name="mei_lyricist"/>
         <ref name="mei_sponsor"/>
      </choice>
   </define>
   <define name="mei_model.respLikePart_sequence">
      <ref name="mei_arranger"/>
      <ref name="mei_author"/>
      <ref name="mei_composer"/>
      <ref name="mei_editor"/>
      <ref name="mei_funder"/>
      <ref name="mei_librettist"/>
      <ref name="mei_lyricist"/>
      <ref name="mei_sponsor"/>
   </define>
   <define name="mei_model.respLikePart_sequenceOptional">
      <optional>
         <ref name="mei_arranger"/>
      </optional>
      <optional>
         <ref name="mei_author"/>
      </optional>
      <optional>
         <ref name="mei_composer"/>
      </optional>
      <optional>
         <ref name="mei_editor"/>
      </optional>
      <optional>
         <ref name="mei_funder"/>
      </optional>
      <optional>
         <ref name="mei_librettist"/>
      </optional>
      <optional>
         <ref name="mei_lyricist"/>
      </optional>
      <optional>
         <ref name="mei_sponsor"/>
      </optional>
   </define>
   <define name="mei_model.respLikePart_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_arranger"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_author"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_composer"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_editor"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_funder"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_librettist"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_lyricist"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_sponsor"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.respLikePart_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_arranger"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_author"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_composer"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_editor"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_funder"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_librettist"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_lyricist"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_sponsor"/>
      </oneOrMore>
   </define>
   <define name="mei_model.scoreDefLike">
      <choice>
         <ref name="mei_scoreDef"/>
      </choice>
   </define>
   <define name="mei_model.scoreDefLike_alternation">
      <choice>
         <ref name="mei_scoreDef"/>
      </choice>
   </define>
   <define name="mei_model.scoreDefLike_sequence">
      <ref name="mei_scoreDef"/>
   </define>
   <define name="mei_model.scoreDefLike_sequenceOptional">
      <optional>
         <ref name="mei_scoreDef"/>
      </optional>
   </define>
   <define name="mei_model.scoreDefLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_scoreDef"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.scoreDefLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_scoreDef"/>
      </oneOrMore>
   </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.scoreDefLike"/>
         <ref name="mei_model.scorePart.mensuralAndNeumes"/>
         <ref name="mei_model.sectionLike"/>
         <ref name="mei_model.staffDefLike"/>
      </choice>
   </define>
   <define name="mei_model.scorePart.mensuralAndNeumes">
      <notAllowed/>
   </define>
   <define name="mei_model.sectionLike">
      <choice>
         <ref name="mei_section"/>
      </choice>
   </define>
   <define name="mei_model.sectionPart">
      <choice>
         <ref name="mei_model.endingLike"/>
         <ref name="mei_model.scoreDefLike"/>
         <ref name="mei_model.sectionLike"/>
         <ref name="mei_model.sectionPart.mensuralAndNeumes"/>
         <ref name="mei_model.staffDefLike"/>
      </choice>
   </define>
   <define name="mei_model.sectionPart.mensuralAndNeumes">
      <choice>
         <ref name="mei_model.staffLike"/>
         <ref name="mei_model.sectionPart.neumes"/>
      </choice>
   </define>
   <define name="mei_model.staffDefLike">
      <choice>
         <ref name="mei_staffDef"/>
      </choice>
   </define>
   <define name="mei_model.staffDefLike_alternation">
      <choice>
         <ref name="mei_staffDef"/>
      </choice>
   </define>
   <define name="mei_model.staffDefLike_sequence">
      <ref name="mei_staffDef"/>
   </define>
   <define name="mei_model.staffDefLike_sequenceOptional">
      <optional>
         <ref name="mei_staffDef"/>
      </optional>
   </define>
   <define name="mei_model.staffDefLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_staffDef"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.staffDefLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_staffDef"/>
      </oneOrMore>
   </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.staffLike_alternation">
      <choice>
         <ref name="mei_staff"/>
      </choice>
   </define>
   <define name="mei_model.staffLike_sequence">
      <ref name="mei_staff"/>
   </define>
   <define name="mei_model.staffLike_sequenceOptional">
      <optional>
         <ref name="mei_staff"/>
      </optional>
   </define>
   <define name="mei_model.staffLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_staff"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.staffLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_staff"/>
      </oneOrMore>
   </define>
   <define name="mei_model.staffPart">
      <choice>
         <ref name="mei_model.layerLike"/>
         <ref name="mei_model.staffPart.mensuralAndNeumes"/>
      </choice>
   </define>
   <define name="mei_model.staffPart.mensuralAndNeumes">
      <choice>
         <ref name="mei_model.scoreDefLike"/>
         <ref name="mei_model.staffDefLike"/>
         <ref name="mei_model.staffPart.neumes"/>
      </choice>
   </define>
   <define name="mei_model.textcomponentLike">
      <choice>
         <ref name="mei_model.pLike"/>
         <ref name="mei_model.tableLike"/>
         <ref name="mei_model.lgLike"/>
         <ref name="mei_model.listLike"/>
         <ref name="mei_model.quoteLike"/>
      </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.addressLike"/>
         <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.rendLike"/>
         <ref name="mei_model.titleLike"/>
         <ref name="mei_model.figureLike"/>
         <ref name="mei_model.addressPart"/>
         <ref name="mei_model.nameLike.label"/>
         <ref name="mei_model.locrefLike"/>
         <ref name="mei_symbol"/>
      </choice>
   </define>
   <define name="mei_model.textphraseLike.limited_alternation">
      <choice>
         <ref name="mei_model.addressLike_alternation"/>
         <ref name="mei_model.annotLike_alternation"/>
         <ref name="mei_model.biblLike_alternation"/>
         <ref name="mei_model.dateLike_alternation"/>
         <ref name="mei_model.editorialLike_alternation"/>
         <ref name="mei_model.identifierLike_alternation"/>
         <ref name="mei_model.lbLike_alternation"/>
         <ref name="mei_model.measurementLike_alternation"/>
         <ref name="mei_model.nameLike_alternation"/>
         <ref name="mei_model.rendLike_alternation"/>
         <ref name="mei_model.titleLike_alternation"/>
         <ref name="mei_model.figureLike_alternation"/>
         <ref name="mei_model.addressPart_alternation"/>
         <ref name="mei_model.nameLike.label_alternation"/>
         <ref name="mei_model.locrefLike_alternation"/>
         <ref name="mei_symbol"/>
      </choice>
   </define>
   <define name="mei_model.textphraseLike.limited_sequence">
      <ref name="mei_model.addressLike_sequence"/>
      <ref name="mei_model.annotLike_sequence"/>
      <ref name="mei_model.biblLike_sequence"/>
      <ref name="mei_model.dateLike_sequence"/>
      <ref name="mei_model.editorialLike_sequence"/>
      <ref name="mei_model.identifierLike_sequence"/>
      <ref name="mei_model.lbLike_sequence"/>
      <ref name="mei_model.measurementLike_sequence"/>
      <ref name="mei_model.nameLike_sequence"/>
      <ref name="mei_model.rendLike_sequence"/>
      <ref name="mei_model.titleLike_sequence"/>
      <ref name="mei_model.figureLike_sequence"/>
      <ref name="mei_model.addressPart_sequence"/>
      <ref name="mei_model.nameLike.label_sequence"/>
      <ref name="mei_model.locrefLike_sequence"/>
      <ref name="mei_symbol"/>
   </define>
   <define name="mei_model.textphraseLike.limited_sequenceOptional">
      <optional>
         <ref name="mei_model.addressLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.annotLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.biblLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.dateLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.editorialLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.identifierLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.lbLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.measurementLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.nameLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.rendLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.titleLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.figureLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.addressPart_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.nameLike.label_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.locrefLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_symbol"/>
      </optional>
   </define>
   <define name="mei_model.textphraseLike.limited_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_model.addressLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.annotLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.biblLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.dateLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.editorialLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.identifierLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.lbLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.measurementLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.nameLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.rendLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.titleLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.figureLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.addressPart_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.nameLike.label_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.locrefLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_symbol"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.textphraseLike.limited_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_model.addressLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.annotLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.biblLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.dateLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.editorialLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.identifierLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.lbLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.measurementLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.nameLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.rendLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.titleLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.figureLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.addressPart_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.nameLike.label_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.locrefLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_symbol"/>
      </oneOrMore>
   </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_model.titlePagePart">
      <choice>
         <ref name="mei_model.dateLike"/>
         <ref name="mei_model.respLikePart"/>
         <ref name="mei_model.titleLike"/>
         <ref name="mei_imprint"/>
         <ref name="mei_series"/>
         <ref name="mei_byline"/>
      </choice>
   </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.facsimile.attributes"/>
         <ref name="mei_att.accid.log.attributes"/>
         <ref name="mei_att.accid.vis.attributes"/>
         <ref name="mei_att.accid.ges.attributes"/>
         <ref name="mei_att.accid.anl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_actor">
      <element name="actor">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Name of an
            actor appearing within a cast list.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_address">
      <element name="address">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a
            postal address, for example of a publisher, an organization, or an
            individual.</a:documentation>
         <choice>
            <oneOrMore>
               <ref name="mei_addrLine"/>
            </oneOrMore>
            <oneOrMore>
               <ref name="mei_model.addressPart"/>
            </oneOrMore>
         </choice>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_addrLine">
      <element name="addrLine">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(address
            line) – Single line of a postal address.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_annot">
      <element name="annot">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(annotation)
            – Provides a short statement explaining the text or indicating the basis for an
            assertion.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.headLike"/>
               <ref name="mei_model.textcomponentLike"/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-annot-annot_content_constraint-constraint-19">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:annot[mei:head or mei:lg or mei:p or mei:quote or mei:table]">
               <sch:assert test="not(mei:head[preceding-sibling::*[not(local-name()='head')]])">Head
                  elements can only occur at the start of annot.</sch:assert>
               <sch:assert test="not(*[../text()[normalize-space()]])">Mixed content is not allowed
                  when head, lg, p, quote, or table is used.</sch:assert>
               <sch:assert
                  test="not(*[not(local-name() eq 'biblList' or local-name() eq 'castList' or local-name() eq 'head' or                local-name() eq 'lg' or local-name() eq 'list' or local-name() eq 'p' or local-name() eq 'quote' or                local-name() eq 'table')])"
                  >Unstructured text not allowed when head, lg, p, quote, or table elements are
                  used.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.source.attributes"/>
         <ref name="mei_att.annot.log.attributes"/>
         <ref name="mei_att.annot.vis.attributes"/>
         <ref name="mei_att.annot.ges.attributes"/>
         <ref name="mei_att.annot.anl.attributes"/>
         <ref name="mei_att.plist.attributes"/>
         <ref name="mei_att.responsibility.attributes"/>
         <ref name="mei_att.targeteval.attributes"/>
         <ref name="mei_att.typed.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.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.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.facsimile.attributes"/>
         <ref name="mei_att.artic.log.attributes"/>
         <ref name="mei_att.artic.vis.attributes"/>
         <ref name="mei_att.artic.ges.attributes"/>
         <ref name="mei_att.artic.anl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_author">
      <element name="author">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The name of
            the creator of the intellectual content of a non-musical, literary
            work.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_barLine">
      <element name="barLine">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Vertical
            line drawn through one or more staves that divides musical notation into metrical
            units.</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-barLine-Check_barLinetaktplace-constraint-20">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:barLine[@taktplace]">
               <sch:let name="staff" value="ancestor::mei:staff/@n"/>
               <sch:let name="staffpos"
                  value="count(ancestor::mei:staff/preceding-sibling::mei:staff) + 1"/>
               <sch:assert
                  test="number(@taktplace) &lt;= number(2 * preceding::mei:staffDef[@n=$staff and @lines][1]/@lines)"
                  >The value of @taktplace must be less than or equal to two times the number of
                  staff lines.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.targeteval.attributes"/>
         <ref name="mei_att.barLine.log.attributes"/>
         <ref name="mei_att.barLine.vis.attributes"/>
         <ref name="mei_att.barLine.ges.attributes"/>
         <ref name="mei_att.barLine.anl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_bibl">
      <element name="bibl">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >(bibliographic reference) – Provides a loosely-structured bibliographic citation in
            which the sub-components may or may not be explicitly marked.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.biblPart"/>
               <ref name="mei_model.imprintPart"/>
               <ref name="mei_model.textphraseLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_biblList">
      <element name="biblList">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">List of
            bibliographic references.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <group>
                  <optional>
                     <ref name="mei_model.labelLike"/>
                  </optional>
                  <ref name="mei_model.biblLike"/>
               </group>
               <ref name="mei_biblList"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_biblScope">
      <element name="biblScope">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(scope of
            citation) – Defines the scope of a bibliographic reference, for example as a list of
            page numbers, or a named subdivision of a larger work.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.measurement.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>
            <ref name="mei_model.mdivLike"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_caption">
      <element name="caption">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A label
            which accompanies an illustration or a table.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_castGrp">
      <element name="castGrp">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(cast group)
            – Groups one or more individual castItem elements within a cast list.</a:documentation>
         <oneOrMore>
            <choice>
               <ref name="mei_castItem"/>
               <ref name="mei_castGrp"/>
               <ref name="mei_roleDesc"/>
            </choice>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_castItem">
      <element name="castItem">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a
            single entry within a cast list, describing either a single role or a list of
            non-speaking roles.</a:documentation>
         <oneOrMore>
            <choice>
               <text/>
               <ref name="mei_role"/>
               <ref name="mei_roleDesc"/>
               <ref name="mei_actor"/>
               <ref name="mei_perfRes"/>
            </choice>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_castList">
      <element name="castList">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a
            single cast list or dramatis personae.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <oneOrMore>
            <choice>
               <ref name="mei_castItem"/>
               <ref name="mei_castGrp"/>
            </choice>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.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.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.chord.log.attributes"/>
         <ref name="mei_att.chord.vis.attributes"/>
         <ref name="mei_att.chord.ges.attributes"/>
         <ref name="mei_att.chord.anl.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-21">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:clef[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-22">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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: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.facsimile.attributes"/>
         <ref name="mei_att.clef.anl.attributes"/>
         <ref name="mei_att.clef.ges.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"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.clefGrp.log.attributes"/>
         <ref name="mei_att.clefGrp.vis.attributes"/>
         <ref name="mei_att.clefGrp.ges.attributes"/>
         <ref name="mei_att.clefGrp.anl.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.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_creation">
      <element name="creation">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >Non-bibliographic details of the creation of an intellectual entity, in narrative form,
            such as the date, place, and circumstances of its composition. More detailed information
            may be captured within the history element.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_date"/>
               <ref name="mei_model.nameLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_custos">
      <element name="custos">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Symbol
            placed at the end of a line of music to indicate the first note of the next line.
            Sometimes called a "direct".</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.source.attributes"/>
         <ref name="mei_att.custos.log.attributes"/>
         <ref name="mei_att.custos.vis.attributes"/>
         <ref name="mei_att.custos.ges.attributes"/>
         <ref name="mei_att.custos.anl.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.bibl.attributes"/>
         <ref name="mei_att.calendared.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.datable.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_depth">
      <element name="depth">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Description
            of a measurement taken through a three-dimensional object.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.quantity.attributes"/>
         <ref name="mei_att.measurement.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_desc">
      <element name="desc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >(description) – Container for text that briefly describes the feature to which it is
            attached, including its intended usage, purpose, or application as
            appropriate.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.source.attributes"/>
         <ref name="mei_att.typed.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 — such as segno and coda
            symbols, fermatas over a bar line, etc., typically above, below, or between staves, but
            not on the staff — that is not encoded elsewhere in more specific elements, like
            &lt;tempo&gt; or &lt;dynam&gt;.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-dir-dir_start-type_attributes_required-constraint-23">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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: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.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.dir.log.attributes"/>
         <ref name="mei_att.dir.vis.attributes"/>
         <ref name="mei_att.dir.ges.attributes"/>
         <ref name="mei_att.dir.anl.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_distributor">
      <element name="distributor">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Person or
            agency, other than a publisher, from which access (including electronic access) to a
            bibliographic entity may be obtained.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_div">
      <element name="div">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(division) –
            Major structural division of text, such as a preface, chapter or
            section.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.headLike"/>
               <ref name="mei_model.milestoneLike.text"/>
            </choice>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.divLike"/>
               <ref name="mei_model.textcomponentLike"/>
            </choice>
            <zeroOrMore>
               <ref name="mei_model.milestoneLike.text"/>
            </zeroOrMore>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Characterizes the element in some sense, using any convenient classification
                  scheme or typology. Suggested values include: 1] abstract; 2] ack; 3] appendix; 4]
                  bibliography; 5] colophon; 6] contents; 7] dedication; 8] frontispiece; 9]
                  glossary; 10] half-title; 11] index; 12] annotations; 13]
                  preface</a:documentation>
               <choice>
                  <value>abstract</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                     summary of the content of a text as continuous prose.</a:documentation>
                  <value>ack</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                     formal declaration of acknowledgement by the author in which persons and
                     institutions are thanked for their part in the creation of a
                     text.</a:documentation>
                  <value>appendix</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">An
                     ancillary self-contained section of a work, often providing additional but in
                     some sense extra-canonical text.</a:documentation>
                  <value>bibliography</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                     list of bibliographic citations.</a:documentation>
                  <value>colophon</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                     statement appearing at the end of a book describing the conditions of its
                     physical production.</a:documentation>
                  <value>contents</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                     table of contents, specifying the structure of a work and listing its
                     constituents. The list element should be used to mark its
                     structure.</a:documentation>
                  <value>dedication</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                     formal offering or dedication of a text to one or more persons or institutions
                     by the author.</a:documentation>
                  <value>frontispiece</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                     pictorial frontispiece, possibly including some text.</a:documentation>
                  <value>glossary</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                     list of terms associated with definition texts (‘glosses’).</a:documentation>
                  <value>half-title</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                     page containing only the title of a book — as opposed to the title page, which
                     also lists subtitle, author, imprint and similar data.</a:documentation>
                  <value>index</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Any
                     form of index to the work.</a:documentation>
                  <value>annotations</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                     section in which annotations on the text are gathered
                     together.</a:documentation>
                  <value>preface</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                     foreword or preface addressed to the reader in which the author or publisher
                     explains the content, purpose, or origin of the text.</a:documentation>
                  <data type="NMTOKEN"/>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="subtype">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Provide any sub-classification for the element, additional to that given by its
                  type attribute.</a:documentation>
               <data type="NMTOKEN"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_dot">
      <element name="dot">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Dot of
            augmentation or division.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.dot.log.attributes"/>
         <ref name="mei_att.dot.vis.attributes"/>
         <ref name="mei_att.dot.ges.attributes"/>
         <ref name="mei_att.dot.anl.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"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-dynam-dynam_start-type_attributes_required-constraint-24">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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: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-25">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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: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.dynam.ges.attributes"/>
         <ref name="mei_att.dynam.anl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_edition">
      <element name="edition">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(edition
            designation) – A word or text phrase that indicates a difference in either content or
            form between the item being described and a related item previously issued by the same
            publisher/distributor (e.g. 2nd edition, version 2.0, etc.), or simultaneously issued by
            either the same publisher/distributor or another publisher/distributor (e.g. large print
            edition, British edition, etc.).</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_editor">
      <element name="editor">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The name of
            the individual(s), institution(s) or organization(s) acting in an editorial
            capacity.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.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>
            <ref name="mei_expansion"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.appLike"/>
               <ref name="mei_model.divLike"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.sectionPart"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.ending.anl.attributes"/>
         <ref name="mei_att.ending.ges.attributes"/>
         <ref name="mei_att.ending.log.attributes"/>
         <ref name="mei_att.ending.vis.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.targeteval.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_event">
      <element name="event">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a
            free-text event description.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <choice>
            <zeroOrMore>
               <choice>
                  <ref name="mei_model.eventPart"/>
                  <ref name="mei_castList"/>
                  <ref name="mei_eventList"/>
               </choice>
            </zeroOrMore>
            <zeroOrMore>
               <choice>
                  <ref name="mei_model.pLike"/>
                  <ref name="mei_model.tableLike"/>
                  <ref name="mei_list"/>
               </choice>
            </zeroOrMore>
         </choice>
         <zeroOrMore>
            <ref name="mei_biblList"/>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.calendared.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.datable.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_eventList">
      <element name="eventList">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
            historical information given as a sequence of significant past events.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <group>
               <optional>
                  <choice>
                     <ref name="mei_name"/>
                     <ref name="mei_model.addressLike"/>
                     <ref name="mei_model.dateLike"/>
                     <ref name="mei_model.nameLike.agent"/>
                     <ref name="mei_model.nameLike.geogName"/>
                  </choice>
               </optional>
               <choice>
                  <ref name="mei_event"/>
                  <ref name="mei_eventList"/>
               </choice>
            </group>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_biblList"/>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_expansion">
      <element name="expansion">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
            how a section may be programmatically expanded into its 'through-composed'
            form.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.plist.attributes"/>
         <ref name="mei_att.source.attributes"/>
         <ref name="mei_att.targeteval.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_extent">
      <element name="extent">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to
            express size in terms other than physical dimensions, such as number of pages, number of
            records in file, number of bytes, performance duration for music, audio recordings and
            visual projections, etc.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.measurement.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_funder">
      <element name="funder">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Names of
            individuals, institutions, or organizations responsible for funding. Funders provide
            financial support for a project; they are distinct from sponsors, who provide
            intellectual support and authority.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_genre">
      <element name="genre">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Term or
            terms that designate a category characterizing a particular style, form, or
            content.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_group">
      <element name="group">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a
            composite musical text, grouping together a sequence of distinct musical texts (or
            groups of such musical texts) which are regarded as a unit for some purpose, for
            example, the collected works of a composer.</a:documentation>
         <choice>
            <ref name="mei_music"/>
            <ref name="mei_group"/>
         </choice>
         <zeroOrMore>
            <choice>
               <ref name="mei_music"/>
               <ref name="mei_group"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_grpSym">
      <element name="grpSym">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(group
            symbol) – A brace or bracket used to group two or more staves of a score or
            part.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.labelLike"/>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-grpSym-check_grpSym_attributes_scoreDef-constraint-26">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:grpSym[parent::mei:scoreDef]">
               <sch:assert test="@startid and @endid and @level">In scoreDef, grpSym must have
                  startid, endid, and level attributes.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-grpSym-check_grpSym_attributes_staffDef-constraint-27">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:grpSym[parent::mei:staffGrp]">
               <sch:assert test="not(@startid or @endid or @level)">In staffGrp, grpSym must not
                  have startid, endid, or level attributes.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.grpSym.log.attributes"/>
         <ref name="mei_att.grpSym.vis.attributes"/>
         <ref name="mei_att.grpSym.ges.attributes"/>
         <ref name="mei_att.grpSym.anl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_head">
      <element name="head">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(heading) –
            Contains any heading, for example, the title of a section of text, or the heading of a
            list.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.xy.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_height">
      <element name="height">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Description
            of the vertical size of an object.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.quantity.attributes"/>
         <ref name="mei_att.measurement.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_identifier">
      <element name="identifier">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">An
            alpha-numeric string that establishes the identity of the described
            material.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_imprint">
      <element name="imprint">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Information
            relating to the publication or distribution of a bibliographic item.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.imprintPart"/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_respStmt"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_incip">
      <element name="incip">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(incipit) –
            The opening music and/or words of a composition.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <optional>
            <ref name="mei_tempo"/>
         </optional>
         <optional>
            <ref name="mei_role"/>
         </optional>
         <optional>
            <choice>
               <ref name="mei_clef"/>
               <ref name="mei_clefGrp"/>
            </choice>
         </optional>
         <optional>
            <choice>
               <ref name="mei_perfRes"/>
               <ref name="mei_perfResList"/>
            </choice>
         </optional>
         <optional>
            <ref name="mei_key"/>
         </optional>
         <optional>
            <ref name="mei_meter"/>
         </optional>
         <optional>
            <ref name="mei_mensuration"/>
         </optional>
         <zeroOrMore>
            <choice>
               <ref name="mei_incipCode"/>
               <ref name="mei_incipText"/>
               <ref name="mei_model.scoreLike"/>
               <ref name="mei_model.graphicLike"/>
               <ref name="mei_annot"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_keyAccid">
      <element name="keyAccid">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(key
            accidental) – Accidental in a key signature.</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-keyAccid-Check_keyAccidPlacement-constraint-28">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:keyAccid">
               <sch:assert test="(@x and @y) or (@pname and @oct) or @loc">One of the following is
                  required: @x and @y attribute pair, @pname and @oct attribute pair, or @loc
                  attribute.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.keyAccid.anl.attributes"/>
         <ref name="mei_att.keyAccid.ges.attributes"/>
         <ref name="mei_att.keyAccid.log.attributes"/>
         <ref name="mei_att.keyAccid.vis.attributes"/>
         <optional>
            <attribute name="form">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Specifies whether enharmonic (written) values or implicit ("perform-able") values
                  are allowed.</a:documentation>
               <choice>
                  <value>implicit</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Only performed values (sharp, flat, natural) allowed.</a:documentation>
                  <value>explicit</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">All
                     enharmonic (written) values allowed.</a:documentation>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_keySig">
      <element name="keySig">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(key
            signature) – Written key signature.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.keyAccidLike"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.keySig.anl.attributes"/>
         <ref name="mei_att.keySig.ges.attributes"/>
         <ref name="mei_att.keySig.log.attributes"/>
         <ref name="mei_att.keySig.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 text that identifies the feature to which it is attached.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.source.attributes"/>
         <ref name="mei_att.typed.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.appLike"/>
               <ref name="mei_model.divLike"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.layerPart"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.commonPart.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.layer.log.attributes"/>
         <ref name="mei_att.layer.vis.attributes"/>
         <ref name="mei_att.layer.ges.attributes"/>
         <ref name="mei_att.layer.anl.attributes"/>
         <optional>
            <attribute name="n">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                  non-negative integer value functioning as a "name".</a:documentation>
               <data type="nonNegativeInteger"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_layerDef">
      <element name="layerDef">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(layer
            definition) – Container for layer meta-information.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.labelLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_model.instrDefLike"/>
         </zeroOrMore>
         <ref name="mei_att.commonPart.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.layerDef.log.attributes"/>
         <ref name="mei_att.layerDef.vis.attributes"/>
         <ref name="mei_att.layerDef.ges.attributes"/>
         <ref name="mei_att.layerDef.anl.attributes"/>
         <optional>
            <attribute name="n">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                  non-negative integer value functioning as a "name".</a:documentation>
               <data type="nonNegativeInteger"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_lb">
      <element name="lb">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(line break)
            – An empty formatting element that forces text to begin on a new line.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.source.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <optional>
            <attribute name="func">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">States
                  whether the line break follows a single line or a line group.</a:documentation>
               <choice>
                  <value>line</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
                  <value>group</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_librettist">
      <element name="librettist">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Person or
            organization who is a writer of the text of an opera, oratorio, etc.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.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.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.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) – Contains a subdivision of the body of a musical text.</a:documentation>
         <choice>
            <group>
               <optional>
                  <ref name="mei_model.scoreLike"/>
               </optional>
               <optional>
                  <ref name="mei_model.partsLike"/>
               </optional>
            </group>
            <zeroOrMore>
               <ref name="mei_model.mdivLike"/>
            </zeroOrMore>
         </choice>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <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-29">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:*[@staff]">
               <sch:assert test="every $i in tokenize(@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.meiversion.attributes"/>
         <ref name="mei_att.id.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"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.meiversion.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_name">
      <element name="name">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Proper noun
            or noun phrase.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron" id="mei-name-nameParts-constraint-30">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:name">
               <sch:assert role="warning" test="not(mei:geogName or mei:persName or mei:corpName)"
                  >Recommended practice is to use name elements to capture sub-parts of a generic
                  name.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Characterizes the element in some sense, using any convenient classification
                  scheme or typology. Suggested values include: 1] person; 2] corporation; 3]
                  location; 4] process; 5] style; 6] time</a:documentation>
               <choice>
                  <value>person</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                     personal name.</a:documentation>
                  <value>corporation</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Name of a corporate body.</a:documentation>
                  <value>location</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Name of a location.</a:documentation>
                  <value>process</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Name of a process or software application.</a:documentation>
                  <value>style</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Name of a musical style; i.e., form, genre, technique, etc.</a:documentation>
                  <value>time</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Name of a period of time.</a:documentation>
                  <data type="NMTOKEN"/>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="subtype">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Provide any sub-classification for the element, additional to that given by its
                  type attribute.</a:documentation>
               <data type="NMTOKEN"/>
            </attribute>
         </optional>
         <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"/>
               <ref name="mei_model.appLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.note.log.attributes"/>
         <ref name="mei_att.note.vis.attributes"/>
         <ref name="mei_att.note.ges.attributes"/>
         <ref name="mei_att.note.anl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_num">
      <element name="num">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(number) –
            Numeric information in any form.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.measurement.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <optional>
            <attribute name="value">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Numeric value capturing a measurement or count. Can only be interpreted in
                  combination with the unit attribute.</a:documentation>
               <data type="decimal"/>
            </attribute>
         </optional>
         <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"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-ornam-ornam_start-type_attributes_required-constraint-31">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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: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.facsimile.attributes"/>
         <ref name="mei_att.ornam.log.attributes"/>
         <ref name="mei_att.ornam.vis.attributes"/>
         <ref name="mei_att.ornam.ges.attributes"/>
         <ref name="mei_att.ornam.anl.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_p">
      <element name="p">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(paragraph)
            – One or more text phrases that form a logical prose passage.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.paracontentPart"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.xy.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_pad">
      <element name="pad">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(padding) –
            An indication of extra visual space between notational elements.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.pad.log.attributes"/>
         <ref name="mei_att.pad.vis.attributes"/>
         <ref name="mei_att.pad.ges.attributes"/>
         <ref name="mei_att.pad.anl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_part">
      <element name="part">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">An
            alternative visual rendition of the score from the point of view of a particular
            performer (or group of performers).</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.appLike"/>
               <ref name="mei_model.divLike"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.scorePart"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.part.log.attributes"/>
         <ref name="mei_att.part.vis.attributes"/>
         <ref name="mei_att.part.ges.attributes"/>
         <ref name="mei_att.part.anl.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_parts">
      <element name="parts">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides a
            container for performers' parts.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.partLike"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.parts.log.attributes"/>
         <ref name="mei_att.parts.vis.attributes"/>
         <ref name="mei_att.parts.ges.attributes"/>
         <ref name="mei_att.parts.anl.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_pb">
      <element name="pb">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(page break)
            – 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.facsimile.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.source.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.pb.anl.attributes"/>
         <ref name="mei_att.pb.ges.attributes"/>
         <ref name="mei_att.pb.log.attributes"/>
         <ref name="mei_att.pb.vis.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_pgDesc">
      <element name="pgDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(page
            description) – Contains a brief prose description of the appearance or description of
            the content of a physical page.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.textcomponentLike"/>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.locrefLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.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 on the first page. Also, used to temporarily override a
            running footer on individual pages.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textcomponentLike"/>
               <ref name="mei_model.textphraseLike.limited"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.appLike"/>
               <ref name="mei_anchoredText"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <optional>
            <attribute name="halign">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Records horizontal alignment of the page footer.</a:documentation>
               <ref name="mei_data.HORIZONTALALIGNMENT"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_pgFoot2">
      <element name="pgFoot2">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(page footer
            2) – A running footer on the pages following the first.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textcomponentLike"/>
               <ref name="mei_model.textphraseLike.limited"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.appLike"/>
               <ref name="mei_anchoredText"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <optional>
            <attribute name="halign">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Records horizontal alignment of the page footer. Use multiple values to capture
                  an alternating pattern.</a:documentation>
               <list>
                  <oneOrMore>
                     <ref name="mei_data.HORIZONTALALIGNMENT"/>
                  </oneOrMore>
               </list>
            </attribute>
         </optional>
         <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 on the first page. Also, used to temporarily override a
            running header on individual pages.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textcomponentLike"/>
               <ref name="mei_model.textphraseLike.limited"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.appLike"/>
               <ref name="mei_anchoredText"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <optional>
            <attribute name="halign">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Records horizontal alignment of the page header.</a:documentation>
               <ref name="mei_data.HORIZONTALALIGNMENT"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_pgHead2">
      <element name="pgHead2">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(page header
            2) – A running header on the pages following the first.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textcomponentLike"/>
               <ref name="mei_model.textphraseLike.limited"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.appLike"/>
               <ref name="mei_anchoredText"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <optional>
            <attribute name="halign">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Records horizontal alignment of the page header. Use multiple values to capture
                  an alternating pattern.</a:documentation>
               <list>
                  <oneOrMore>
                     <ref name="mei_data.HORIZONTALALIGNMENT"/>
                  </oneOrMore>
               </list>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_phrase">
      <element name="phrase">
         <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>
         <zeroOrMore>
            <ref name="mei_curve"/>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-phrase-phrase_start-_and_end-type_attributes_required-constraint-32">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:phrase">
               <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-phrase-phrase_containing_curve-constraint-33">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:phrase[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 phrase (@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.facsimile.attributes"/>
         <ref name="mei_att.phrase.log.attributes"/>
         <ref name="mei_att.phrase.vis.attributes"/>
         <ref name="mei_att.phrase.ges.attributes"/>
         <ref name="mei_att.phrase.anl.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_physLoc">
      <element name="physLoc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(physical
            location) – Groups information about the current physical location of a bibliographic
            item, such as the repository in which it is located and its shelf mark(s), and its
            previous locations.</a:documentation>
         <zeroOrMore>
            <group>
               <ref name="mei_model.repositoryLike"/>
               <zeroOrMore>
                  <ref name="mei_model.identifierLike"/>
               </zeroOrMore>
            </group>
         </zeroOrMore>
         <optional>
            <ref name="mei_provenance"/>
         </optional>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_publisher">
      <element name="publisher">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Name of the
            organization responsible for the publication of a bibliographic item.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.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.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_recipient">
      <element name="recipient">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The name of
            the individual(s), institution(s) or organization(s) receiving
            correspondence.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_relatedItem">
      <element name="relatedItem">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(related
            item) – Contains or references another bibliographic item which is related to the
            present one.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.biblLike"/>
         </zeroOrMore>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.targeteval.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <attribute name="rel">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               the relationship between the &lt;relatedItem&gt; and the resource described in the
               parent element, i.e., &lt;bibl&gt;, &lt;source&gt; or &lt;relatedItem&gt;. The values
               are based on MODS version 3.4. The subject of these relations is always the
               &lt;relatedItem&gt;, and the object is always the parent of the &lt;relatedItem&gt;.
               "preceding" and "succeeding" indicate temporal order.</a:documentation>
            <choice>
               <value>preceding</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Predecessor of the resource.</a:documentation>
               <value>succeeding</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Successor to the resource.</a:documentation>
               <value>original</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Original form of the resource.</a:documentation>
               <value>host</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Parent
                  containing the resource.</a:documentation>
               <value>constituent</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Intellectual or physical component of the resource.</a:documentation>
               <value>otherVersion</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Version of the resource's intellectual content not changed enough to be a
                  different work.</a:documentation>
               <value>otherFormat</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Version of the resource in a different physical format.</a:documentation>
               <value>isReferencedBy</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Published bibliographic description, review, abstract, or index of the resource's
                  content.</a:documentation>
               <value>references</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Cited
                  or referred to in the resource.</a:documentation>
            </choice>
         </attribute>
         <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"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.color.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.horizontalalign.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typography.attributes"/>
         <ref name="mei_att.whitespace.attributes"/>
         <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>
         <optional>
            <attribute name="rend">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >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>
         <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>
         <optional>
            <attribute name="valign">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Specifies the vertical position of the element content relative to the
                  surrounding text.</a:documentation>
               <choice>
                  <value>top</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Aligns the top of the content with the top of the surrounding
                     text.</a:documentation>
                  <value>middle</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Aligns the middle of the content with the middle of the surrounding
                     text.</a:documentation>
                  <value>bottom</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Aligns the bottom of the content with the bottom of the surrounding
                     text.</a:documentation>
                  <value>baseline</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Aligns the baseline of the content with the baseline of the surrounding
                     text.</a:documentation>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_repository">
      <element name="repository">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Institution,
            agency, or individual which holds a bibliographic item.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_resp">
      <element name="resp">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >(responsibility) – A phrase describing the nature of intellectual
            responsibility.</a:documentation>
         <text/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.canonical.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_respStmt">
      <element name="respStmt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >(responsibility statement) – Names one or more individuals, groups, or in rare cases,
            mechanical processes, responsible for creation or realization of the intellectual or
            artistic content.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_resp"/>
               <ref name="mei_model.nameLike"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-respStmt-check_respStmt-constraint-34">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:*[local-name()='titleStmt' or local-name()='pubStmt' or local-name()='seriesStmt']/mei:respStmt">
               <sch:assert role="warning" test="mei:resp or (count(mei:*[@role]) = count(mei:*))">If
                  at least one resp element isn't present, all name-like elements should have a
                  @role attribute.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.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>
            <choice>
               <ref name="mei_dot"/>
               <ref name="mei_model.appLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-rest-Check_restline-constraint-35">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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: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.facsimile.attributes"/>
         <ref name="mei_att.rest.log.attributes"/>
         <ref name="mei_att.rest.vis.attributes"/>
         <ref name="mei_att.rest.ges.attributes"/>
         <ref name="mei_att.rest.anl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_role">
      <element name="role">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Name of a
            dramatic role, as given in a cast list.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_roleDesc">
      <element name="roleDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(role
            description) – Describes a character's role in a drama.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_sb">
      <element name="sb">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(system
            break) – An empty formatting element that forces musical notation to begin on a new
            line.</a:documentation>
         <optional>
            <ref name="mei_custos"/>
         </optional>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.source.attributes"/>
         <ref name="mei_att.sb.log.attributes"/>
         <ref name="mei_att.sb.vis.attributes"/>
         <ref name="mei_att.sb.ges.attributes"/>
         <ref name="mei_att.sb.anl.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.appLike"/>
               <ref name="mei_model.divLike"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.scorePart"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.score.log.attributes"/>
         <ref name="mei_att.score.vis.attributes"/>
         <ref name="mei_att.score.ges.attributes"/>
         <ref name="mei_att.score.anl.attributes"/>
         <ref name="mei_att.typed.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) – Container for score meta-information.</a:documentation>
         <optional>
            <ref name="mei_model.chordTableLike"/>
         </optional>
         <optional>
            <ref name="mei_model.symbolTableLike"/>
         </optional>
         <optional>
            <ref name="mei_model.keySigLike"/>
         </optional>
         <optional>
            <ref name="mei_model.meterSigLike"/>
         </optional>
         <optional>
            <ref name="mei_pgHead"/>
         </optional>
         <optional>
            <ref name="mei_pgHead2"/>
         </optional>
         <optional>
            <ref name="mei_pgFoot"/>
         </optional>
         <optional>
            <ref name="mei_pgFoot2"/>
         </optional>
         <optional>
            <ref name="mei_instrGrp"/>
         </optional>
         <optional>
            <ref name="mei_model.staffGrpLike"/>
         </optional>
         <zeroOrMore>
            <ref name="mei_grpSym"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.scoreDef.log.attributes"/>
         <ref name="mei_att.scoreDef.vis.attributes"/>
         <ref name="mei_att.scoreDef.ges.attributes"/>
         <ref name="mei_att.scoreDef.anl.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>
            <ref name="mei_expansion"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.appLike"/>
               <ref name="mei_model.divLike"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.sectionPart"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-section-Check_sectionexpansion-constraint-36">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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: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.declaring.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.section.log.attributes"/>
         <ref name="mei_att.section.vis.attributes"/>
         <ref name="mei_att.section.ges.attributes"/>
         <ref name="mei_att.section.anl.attributes"/>
         <ref name="mei_att.targeteval.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_series">
      <element name="series">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
            information about the serial publication in which a bibliographic item has
            appeared.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.titleLike"/>
               <ref name="mei_model.locrefLike"/>
               <ref name="mei_editor"/>
               <ref name="mei_respStmt"/>
               <ref name="mei_extent"/>
               <ref name="mei_model.identifierLike"/>
               <ref name="mei_model.pLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.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.facsimile.attributes"/>
         <ref name="mei_att.space.log.attributes"/>
         <ref name="mei_att.space.vis.attributes"/>
         <ref name="mei_att.space.ges.attributes"/>
         <ref name="mei_att.space.anl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_sponsor">
      <element name="sponsor">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Names of
            sponsoring individuals, organizations or institutions. Sponsors give their intellectual
            authority to a project; they are to be distinguished from funders, who provide the
            funding but do not necessarily take intellectual responsibility.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_stack">
      <element name="stack">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(stacked
            text) – An inline table with a single column.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <optional>
            <attribute name="delim">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Indicates the delimiter used to mark the portions of text that are to be
                  stacked.</a:documentation>
               <data type="string"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="align">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Specifies how the stacked text components should be aligned.</a:documentation>
               <choice>
                  <value>left</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Left justified.</a:documentation>
                  <value>right</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Right justified.</a:documentation>
                  <value>center</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Centered.</a:documentation>
                  <value>rightdigit</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Aligned on right-most digit.</a:documentation>
               </choice>
            </attribute>
         </optional>
         <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.appLike"/>
               <ref name="mei_model.divLike"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.staffPart"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.commonPart.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.staff.log.attributes"/>
         <ref name="mei_att.staff.vis.attributes"/>
         <ref name="mei_att.staff.ges.attributes"/>
         <ref name="mei_att.staff.anl.attributes"/>
         <optional>
            <attribute name="n">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                  non-negative integer value functioning as a "name".</a:documentation>
               <data type="nonNegativeInteger"/>
            </attribute>
         </optional>
         <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-37">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:staffDef">
               <sch:let name="thisstaff" value="@n"/>
               <sch:assert test="@n">A staffDef must have an n attribute.</sch:assert>
               <sch:assert test="@lines or preceding::mei:staffDef[@n=$thisstaff and @lines]">The
                  first occurrence of a staff must declare the number of staff lines.</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-38">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:staffDef[ancestor::mei:staff]">
               <sch:let name="thisstaff" value="@n"/>
               <sch:assert test="ancestor::mei:staff/@n eq $thisstaff">If a staffDef appears in a
                  staff, it must bear the same @n as this staff.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-staffDef-Check_clef_position_staffDef-constraint-39">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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: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-40">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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: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-41">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:staffDef[@tab.strings and @lines]">
               <sch:let name="countTokens"
                  value="count(tokenize(normalize-space(@tab.strings), '\s'))"/>
               <sch:assert test="$countTokens = 1 or $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-42">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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: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 = 1 or $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:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            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">
            <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:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            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">
            <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:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            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">
            <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.commonPart.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.staffDef.log.attributes"/>
         <ref name="mei_att.staffDef.vis.attributes"/>
         <ref name="mei_att.staffDef.ges.attributes"/>
         <ref name="mei_att.staffDef.anl.attributes"/>
         <optional>
            <attribute name="n">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                  non-negative integer value functioning as a "name".</a:documentation>
               <data type="nonNegativeInteger"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_staffGrp">
      <element name="staffGrp">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(staff
            group) – A group of bracketed or braced staves.</a:documentation>
         <zeroOrMore>
            <ref name="mei_grpSym"/>
         </zeroOrMore>
         <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>
         <zeroOrMore>
            <ref name="mei_grpSym"/>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-staffGrp-Check_staffGrp_unique_staff_n_values-constraint-47">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.staffGrp.log.attributes"/>
         <ref name="mei_att.staffGrp.vis.attributes"/>
         <ref name="mei_att.staffGrp.ges.attributes"/>
         <ref name="mei_att.staffGrp.anl.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"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.syl.log.attributes"/>
         <ref name="mei_att.syl.vis.attributes"/>
         <ref name="mei_att.syl.ges.attributes"/>
         <ref name="mei_att.syl.anl.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"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-tempo-tempo_in_header_disallow_most_attrs-constraint-48">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:tempo[ancestor::mei:meiHead]">
               <sch:assert
                  test="not(@*[name() != 'label' and name() != 'n' and name() != 'xml:base' and name() != 'xml:id' and name() != 'xml:lang'])"
                  >Only label, n, xml:base, xml:id, and xml:lang attributes allowed when this
                  element occurs in the header.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-tempo-tempo_start-type_attributes_required-constraint-49">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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: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.bibl.attributes"/>
         <ref name="mei_att.facsimile.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"/>
         <ref name="mei_att.tempo.anl.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_textLang">
      <element name="textLang">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(text
            language) – Identifies the languages and writing systems within the work described by a
            bibliographic description, not the language of the description.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <optional>
            <attribute name="mainLang">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(main
                  language) supplies a code which identifies the chief language used in the
                  bibliographic work.</a:documentation>
               <data type="language"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="otherLangs">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(other
                  languages) one or more codes identifying any other languages used in the
                  bibliographic work.</a:documentation>
               <list>
                  <oneOrMore>
                     <data type="language"/>
                  </oneOrMore>
               </list>
            </attribute>
         </optional>
         <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_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.canonical.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.filing.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <optional>
            <attribute name="level">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Indicates the bibliographic level for a 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>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 element in some sense, using any convenient classification
                  scheme or typology. Suggested values include: 1] main; 2] subordinate; 3]
                  abbreviated; 4] alternative; 5] translated; 6] uniform</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>
                  <data type="NMTOKEN"/>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="subtype">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Provide any sub-classification for the element, additional to that given by its
                  type attribute.</a:documentation>
               <data type="NMTOKEN"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_titlePage">
      <element name="titlePage">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a
            transcription of the title page of a text.</a:documentation>
         <oneOrMore>
            <choice>
               <ref name="mei_model.figureLike"/>
               <ref name="mei_model.milestoneLike.text"/>
               <ref name="mei_model.textcomponentLike"/>
               <ref name="mei_model.titlePagePart"/>
               <ref name="mei_titleStmt"/>
            </choice>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_width">
      <element name="width">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Description
            of the horizontal size of an object.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.quantity.attributes"/>
         <ref name="mei_att.measurement.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.regularmethod.attributes">
      <ref name="mei_att.regularmethod.attribute.method"/>
   </define>
   <define name="mei_att.regularmethod.attribute.method">
      <optional>
         <attribute name="method">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the method employed to mark corrections and normalizations.</a:documentation>
            <choice>
               <value>silent</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Corrections and normalizations made silently.</a:documentation>
               <value>tags</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Corrections and normalizations indicated using elements.</a:documentation>
            </choice>
         </attribute>
      </optional>
   </define>
   <define name="mei_model.editorialDeclPart">
      <choice>
         <ref name="mei_correction"/>
         <ref name="mei_interpretation"/>
         <ref name="mei_normalization"/>
         <ref name="mei_segmentation"/>
         <ref name="mei_stdVals"/>
      </choice>
   </define>
   <define name="mei_model.eventPart">
      <choice>
         <ref name="mei_model.addressLike"/>
         <ref name="mei_model.dateLike"/>
         <ref name="mei_desc"/>
         <ref name="mei_name"/>
         <ref name="mei_model.nameLike.agent"/>
         <ref name="mei_model.nameLike.geogName"/>
      </choice>
   </define>
   <define name="mei_model.frontPart">
      <choice>
         <ref name="mei_titlePage"/>
      </choice>
   </define>
   <define name="mei_model.physDescPart">
      <choice>
         <ref name="mei_extent"/>
         <ref name="mei_model.frontPart"/>
         <ref name="mei_captureMode"/>
         <ref name="mei_carrierForm"/>
         <ref name="mei_condition"/>
         <ref name="mei_dimensions"/>
         <ref name="mei_exhibHist"/>
         <ref name="mei_fileChar"/>
         <ref name="mei_fingerprint"/>
         <ref name="mei_handList"/>
         <ref name="mei_inscription"/>
         <ref name="mei_perfDuration"/>
         <ref name="mei_physMedium"/>
         <ref name="mei_plateNum"/>
         <ref name="mei_playingSpeed"/>
         <ref name="mei_scoreFormat"/>
         <ref name="mei_soundChan"/>
         <ref name="mei_specRepro"/>
         <ref name="mei_trackConfig"/>
         <ref name="mei_treatHist"/>
         <ref name="mei_treatSched"/>
         <ref name="mei_watermark"/>
      </choice>
   </define>
   <define name="mei_model.pubStmtPart">
      <choice>
         <ref name="mei_model.addressLike"/>
         <ref name="mei_model.dateLike"/>
         <ref name="mei_model.identifierLike"/>
         <ref name="mei_distributor"/>
         <ref name="mei_publisher"/>
         <ref name="mei_pubPlace"/>
         <ref name="mei_respStmt"/>
         <ref name="mei_availability"/>
      </choice>
   </define>
   <define name="mei_model.workIdent">
      <choice>
         <ref name="mei_model.incipLike"/>
         <ref name="mei_tempo"/>
         <ref name="mei_key"/>
         <ref name="mei_mensuration"/>
         <ref name="mei_meter"/>
      </choice>
   </define>
   <define name="mei_model.workLike">
      <choice>
         <ref name="mei_work"/>
      </choice>
   </define>
   <define name="mei_accessRestrict">
      <element name="accessRestrict">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(access
            restriction) – Describes the conditions that affect the accessibility of
            material.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_altId">
      <element name="altId">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(alternative
            identifier) – May contain a bibliographic identifier that does not fit within the
            meiHead element's id attribute, for example because the identifier does not fit the
            definition of an XML id or because multiple identifiers are needed.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.lbLike"/>
               <ref name="mei_model.rendLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_appInfo">
      <element name="appInfo">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(application
            information) – Groups information about applications which have acted upon the MEI
            file.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_application"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_application">
      <element name="application">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
            information about an application which has acted upon the current
            document.</a:documentation>
         <oneOrMore>
            <ref name="mei_name"/>
         </oneOrMore>
         <choice>
            <zeroOrMore>
               <ref name="mei_model.locrefLike"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="mei_model.pLike"/>
            </zeroOrMore>
         </choice>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.datable.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <optional>
            <attribute name="version">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Supplies a version number for an application, independent of its identifier or
                  display name.</a:documentation>
               <data type="NMTOKEN"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_audience">
      <element name="audience">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Defines the
            class of user for which the work is intended, as defined by age group (e.g., children,
            young adults, adults, etc.), educational level (e.g., primary, secondary, etc.), or
            other categorization.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.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.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_byline">
      <element name="byline">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains the
            primary statement of responsibility given for a work on its title
            page.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
               <ref name="mei_model.respLikePart"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_captureMode">
      <element name="captureMode">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(capture
            mode) – The means used to record notation, sound, or images in the production of a
            source/manifestation (e.g., analogue, acoustic, electric, digital, optical
            etc.).</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_carrierForm">
      <element name="carrierForm">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(carrier
            form) – The specific class of material to which the physical carrier of the
            source/manifestation belongs (e.g., sound cassette, videodisc, microfilm cartridge,
            transparency, etc.). The carrier for a manifestation comprising multiple physical
            components may include more than one form (e.g., a filmstrip with an accompanying
            booklet, a separate sound disc carrying the sound track for a film,
            etc.).</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_change">
      <element name="change">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Individual
            change within the revision description.</a:documentation>
         <optional>
            <ref name="mei_respStmt"/>
         </optional>
         <ref name="mei_changeDesc"/>
         <optional>
            <ref name="mei_model.dateLike"/>
         </optional>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-change-change_requirements-constraint-50">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:change">
               <sch:assert test="@isodate or mei:date">The date of the change must be recorded in an
                  isodate attribute or date element.</sch:assert>
               <sch:assert test="@resp or mei:respStmt">The person responsible for the change must
                  be recorded in a resp attribute or respStmt element.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.datable.attributes"/>
         <ref name="mei_att.responsibility.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_changeDesc">
      <element name="changeDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(change
            description) – Description of a revision of the MEI file.</a:documentation>
         <oneOrMore>
            <ref name="mei_model.pLike"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_classCode">
      <element name="classCode">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >(classification code) – Holds a citation to the source of controlled-vocabulary terms
            used in the &lt;termList&gt; element; for example, Library of Congress Subject Headings
            (LCSH), Library of Congress Classification (LCC), Library of Congress Name Authority
            File (LCNAF), or other thesaurus or ontology.</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.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_classification">
      <element name="classification">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Groups
            information which describes the nature or topic of an entity.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <oneOrMore>
            <choice>
               <ref name="mei_classCode"/>
               <ref name="mei_termList"/>
            </choice>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_condition">
      <element name="condition">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The physical
            condition of an item, particularly any variances between the physical make-up of the
            item and that of other copies of the same item (e.g., missing pages or plates,
            brittleness, faded images, etc.).</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_contentItem">
      <element name="contentItem">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a
            single entry within a content description element.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_contents">
      <element name="contents">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Description
            of the material contained within a resource.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <choice>
            <optional>
               <ref name="mei_model.pLike"/>
            </optional>
            <oneOrMore>
               <optional>
                  <ref name="mei_model.labelLike"/>
               </optional>
               <ref name="mei_contentItem"/>
            </oneOrMore>
         </choice>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_context">
      <element name="context">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The
            historical, social, intellectual, artistic, or other context within which the work was
            originally conceived (e.g., the 17th century restoration of the monarchy in England, the
            aesthetic movement of the late 19th century, etc.) or the historical, social,
            intellectual, artistic, or other context within which the expression was
            realized.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_correction">
      <element name="correction">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">States how
            and under what circumstances corrections have been made in the text.</a:documentation>
         <oneOrMore>
            <ref name="mei_model.pLike"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.regularmethod.attributes"/>
         <optional>
            <attribute name="corrlevel">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Indicates the degree of correction applied to the text.</a:documentation>
               <choice>
                  <value>high</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The
                     text has been thoroughly checked and proofread.</a:documentation>
                  <value>medium</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The
                     text has been checked at least once.</a:documentation>
                  <value>low</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The
                     text has not been checked.</a:documentation>
                  <value>unknown</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The
                     correction status of the text is unknown.</a:documentation>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_dimensions">
      <element name="dimensions">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Information
            about the physical size of a bibliographic source; usually includes numerical
            data.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
               <ref name="mei_model.dimLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.measurement.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_editionStmt">
      <element name="editionStmt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(edition
            statement) – Container for meta-data pertaining to a particular edition of the material
            being described.</a:documentation>
         <oneOrMore>
            <ref name="mei_model.editionLike"/>
            <zeroOrMore>
               <ref name="mei_respStmt"/>
            </zeroOrMore>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_editorialDecl">
      <element name="editorialDecl">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(editorial
            declaration) – Used to provide details of editorial principles and practices applied
            during the encoding of musical text.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <choice>
            <oneOrMore>
               <ref name="mei_model.pLike"/>
            </oneOrMore>
            <group>
               <oneOrMore>
                  <ref name="mei_model.editorialDeclPart"/>
               </oneOrMore>
               <zeroOrMore>
                  <ref name="mei_model.pLike"/>
               </zeroOrMore>
            </group>
         </choice>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_encodingDesc">
      <element name="encodingDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(encoding
            description) – Documents the relationship between an electronic file and the source or
            sources from which it was derived as well as applications used in the encoding/editing
            process.</a:documentation>
         <optional>
            <ref name="mei_appInfo"/>
         </optional>
         <optional>
            <ref name="mei_editorialDecl"/>
         </optional>
         <optional>
            <ref name="mei_projectDesc"/>
         </optional>
         <optional>
            <ref name="mei_samplingDecl"/>
         </optional>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_exhibHist">
      <element name="exhibHist">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(exhibition
            history) – A record of public exhibitions, including dates, venues,
            etc.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_extMeta">
      <element name="extMeta">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(extended
            metadata) – Provides a container element for non-MEI metadata formats.</a:documentation>
         <zeroOrMore>
            <group>
               <choice>
                  <text/>
                  <ref name="mei_macro.anyXML"/>
               </choice>
            </group>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.whitespace.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_fileChar">
      <element name="fileChar">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(file
            characteristics) – Standards or schemes used to encode the file (e.g., ASCII, SGML,
            etc.), physical characteristics of the file (e.g., recording density, parity, blocking,
            etc.), and other characteristics that have a bearing on how the file can be
            processed.</a:documentation>
         <text/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.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) – Contains a full bibliographic description of the MEI
            file.</a:documentation>
         <ref name="mei_titleStmt"/>
         <optional>
            <ref name="mei_editionStmt"/>
         </optional>
         <optional>
            <ref name="mei_extent"/>
         </optional>
         <ref name="mei_pubStmt"/>
         <optional>
            <ref name="mei_seriesStmt"/>
         </optional>
         <optional>
            <ref name="mei_notesStmt"/>
         </optional>
         <optional>
            <ref name="mei_sourceDesc"/>
         </optional>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_fingerprint">
      <element name="fingerprint">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a
            string that uniquely identifies an item, such as those constructed by combining groups
            of characters transcribed from specified pages of a printed item or a file's
            checksum.</a:documentation>
         <text/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_hand">
      <element name="hand">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Defines a
            distinct scribe or handwriting style.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.medium.attributes"/>
         <ref name="mei_att.responsibility.attributes"/>
         <optional>
            <attribute name="initial">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Marks
                  this hand as the first one of the document.</a:documentation>
               <ref name="mei_data.BOOLEAN"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_handList">
      <element name="handList">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Container
            for one or more hand elements.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <optional>
               <ref name="mei_model.labelLike"/>
            </optional>
            <ref name="mei_hand"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_history">
      <element name="history">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides a
            container for information about the history of a resource. To facilitate efficient data
            interchange, basic information about the circumstances surrounding the creation of
            bibliographic resources should be recorded within the creation
            element.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.divLike"/>
               <ref name="mei_model.textcomponentLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_incipCode">
      <element name="incipCode">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Incipit
            coded in a non-XML, plain text format, such as Plaine &amp; Easie
            Code.</a:documentation>
         <text/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-incipCode-Check_incipCode_form_mimetype-constraint-51">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:incipCode">
               <sch:assert test="@form or @mimetype">incipCode must have a form or mimetype
                  attribute.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.internetmedia.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.whitespace.attributes"/>
         <optional>
            <attribute name="form">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Form
                  of the encoded incipit. Suggested values include: 1] plaineAndEasie; 2]
                  humdrumKern; 3] parsons</a:documentation>
               <choice>
                  <value>plaineAndEasie</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Plaine &amp; Easie Code.</a:documentation>
                  <value>humdrumKern</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Humdrum Kern format.</a:documentation>
                  <value>parsons</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Parsons code.</a:documentation>
                  <data type="NMTOKEN"/>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_incipText">
      <element name="incipText">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Opening
            words of a musical composition.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.pLike"/>
               <ref name="mei_model.lgLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.internetmedia.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_inscription">
      <element name="inscription">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">An
            inscription added to an item, such as a bookplate, a note designating the item as a
            gift, and/or the author's signature.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_interpretation">
      <element name="interpretation">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
            the scope of any analytic or interpretive information added to the transcription of the
            music.</a:documentation>
         <oneOrMore>
            <ref name="mei_model.pLike"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_key">
      <element name="key">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Key captures
            information about tonal center and mode.</a:documentation>
         <text/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.keySig.log.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_language">
      <element name="language">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Description
            of a language used in the document.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_langUsage">
      <element name="langUsage">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(language
            usage) – Groups elements describing the languages, sub-languages, dialects, etc.,
            represented within the encoded resource.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <oneOrMore>
            <ref name="mei_language"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_meiHead">
      <element name="meiHead">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(MEI header)
            – Supplies the descriptive and declarative metadata prefixed to every MEI-conformant
            text.</a:documentation>
         <zeroOrMore>
            <ref name="mei_altId"/>
         </zeroOrMore>
         <ref name="mei_fileDesc"/>
         <optional>
            <ref name="mei_encodingDesc"/>
         </optional>
         <optional>
            <ref name="mei_workDesc"/>
         </optional>
         <zeroOrMore>
            <ref name="mei_extMeta"/>
         </zeroOrMore>
         <optional>
            <ref name="mei_revisionDesc"/>
         </optional>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.meiversion.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>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_mensuration">
      <element name="mensuration">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures
            information about mensuration within bibliographic descriptions.</a:documentation>
         <text/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.mensur.log.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_meter">
      <element name="meter">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures
            information about the time signature within bibliographic
            descriptions.</a:documentation>
         <text/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.meterSig.log.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_normalization">
      <element name="normalization">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
            the extent of normalization or regularization of the original source carried out in
            converting it to electronic form.</a:documentation>
         <oneOrMore>
            <ref name="mei_model.pLike"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.regularmethod.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_notesStmt">
      <element name="notesStmt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(notes
            statement)– Collects any notes providing information about a text additional to that
            recorded in other parts of the bibliographic description.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <oneOrMore>
            <ref name="mei_model.annotLike"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_otherChar">
      <element name="otherChar">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(other
            distinguishing characteristic) – Any characteristic that serves to differentiate a work
            or expression from another.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_perfDuration">
      <element name="perfDuration">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(performance
            duration) – Used to express the duration of performance of printed or manuscript music
            or the playing time for a sound recording, videorecording, etc.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <optional>
            <attribute name="isodur">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds
                  a W3C duration value, e.g., "PT2H34M45.67S".</a:documentation>
               <data type="duration"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_perfMedium">
      <element name="perfMedium">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(performance
            medium) – Indicates the number and character of the performing forces used in a musical
            composition.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <optional>
            <ref name="mei_castList"/>
         </optional>
         <optional>
            <ref name="mei_perfResList"/>
         </optional>
         <zeroOrMore>
            <ref name="mei_model.annotLike"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_perfRes">
      <element name="perfRes">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(performance
            resource) – Name of an instrument on which a performer plays, a performer's voice range,
            or a standard performing ensemble designation.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_perfRes"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.canonical.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <optional>
            <attribute name="count">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Indicates the number of performers.</a:documentation>
               <data type="positiveInteger"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="solo">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Marks
                  this instrument or vocal part as a soloist. Do not use this attribute for a solo
                  instrument which is not accompanied.</a:documentation>
               <ref name="mei_data.BOOLEAN"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_perfResList">
      <element name="perfResList">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Several
            instrumental or vocal resources treated as a group.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="mei_perfRes"/>
               <ref name="mei_perfResList"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.canonical.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <optional>
            <attribute name="count">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Indicates the number of performers.</a:documentation>
               <data type="positiveInteger"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_physDesc">
      <element name="physDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(physical
            description) – Container for information about the appearance, construction, or handling
            of physical materials, such as their dimension, quantity, color, style, and technique of
            creation.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.pLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_model.physDescPart"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_physMedium">
      <element name="physMedium">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(physical
            medium) – Records the physical materials used in the source, such as ink and
            paper.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_plateNum">
      <element name="plateNum">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(plate
            number) – Designation assigned to a resource by a music publisher, usually printed at
            the bottom of each page, and sometimes appearing also on the title
            page.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_playingSpeed">
      <element name="playingSpeed">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Playing
            speed for a sound recording is the speed at which the carrier must be operated to
            produce the sound intended (e.g., 33 1/3 rpm, 19 cm/s, etc.).</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_price">
      <element name="price">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The cost of
            access to a bibliographic item.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <optional>
            <attribute name="amount">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Numeric value capturing a cost. Can only be interpreted in combination with the
                  currency attribute.</a:documentation>
               <data type="decimal">
                  <param name="pattern">[0-9]+\.[0-9]{2}</param>
               </data>
            </attribute>
         </optional>
         <optional>
            <attribute name="currency">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Monetary unit.</a:documentation>
               <data type="NMTOKEN"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_projectDesc">
      <element name="projectDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(project
            description) – Project-level meta-data describing the aim or purpose for which the
            electronic file was encoded, funding agencies, etc. together with any other relevant
            information concerning the process by which it was assembled or
            collected.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <oneOrMore>
            <ref name="mei_model.pLike"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_provenance">
      <element name="provenance">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The record
            of ownership or custodianship of an item.</a:documentation>
         <choice>
            <optional>
               <ref name="mei_eventList"/>
            </optional>
            <zeroOrMore>
               <choice>
                  <text/>
                  <ref name="mei_model.textphraseLike.limited"/>
               </choice>
            </zeroOrMore>
         </choice>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_pubStmt">
      <element name="pubStmt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(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>
         <choice>
            <optional>
               <ref name="mei_unpub"/>
            </optional>
            <zeroOrMore>
               <ref name="mei_model.pubStmtPart"/>
            </zeroOrMore>
         </choice>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_revisionDesc">
      <element name="revisionDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(revision
            description) – Container for information about alterations that have been made to an MEI
            file.</a:documentation>
         <oneOrMore>
            <ref name="mei_change"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_samplingDecl">
      <element name="samplingDecl">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(sampling
            declaration) – Contains a prose description of the rationale and methods used in
            sampling texts in the creation of a corpus or collection.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <oneOrMore>
            <ref name="mei_model.pLike"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_scoreFormat">
      <element name="scoreFormat">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
            the type of score used to represent a musical composition (e.g., short score, full
            score, condensed score, close score, etc.).</a:documentation>
         <text/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_segmentation">
      <element name="segmentation">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
            the principles according to which the musical text has been segmented, for example into
            movements, sections, etc.</a:documentation>
         <oneOrMore>
            <ref name="mei_model.pLike"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_seriesStmt">
      <element name="seriesStmt">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(series
            statement) – Groups information about the series, if any, to which a publication
            belongs.</a:documentation>
         <oneOrMore>
            <ref name="mei_model.titleLike"/>
         </oneOrMore>
         <zeroOrMore>
            <choice>
               <ref name="mei_editor"/>
               <ref name="mei_respStmt"/>
            </choice>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.identifierLike"/>
               <ref name="mei_biblScope"/>
               <ref name="mei_contents"/>
               <ref name="mei_seriesStmt"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_soundChan">
      <element name="soundChan">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(sound
            channels) – Reflects the number of apparent sound channels in the playback of a
            recording (monaural, stereophonic, quadraphonic, etc.).</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <optional>
            <attribute name="num">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Records the channel configuration in numeric form.</a:documentation>
               <data type="positiveInteger"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_source">
      <element name="source">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
            bibliographic description of a source used in the creation of the electronic
            file.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.identifierLike"/>
         </zeroOrMore>
         <optional>
            <ref name="mei_titleStmt"/>
         </optional>
         <ref name="mei_macro.bibldescPart"/>
         <optional>
            <ref name="mei_history"/>
         </optional>
         <optional>
            <ref name="mei_langUsage"/>
         </optional>
         <optional>
            <ref name="mei_contents"/>
         </optional>
         <zeroOrMore>
            <ref name="mei_biblList"/>
         </zeroOrMore>
         <optional>
            <ref name="mei_notesStmt"/>
         </optional>
         <optional>
            <ref name="mei_classification"/>
         </optional>
         <optional>
            <ref name="mei_itemList"/>
         </optional>
         <optional>
            <ref name="mei_componentGrp"/>
         </optional>
         <optional>
            <ref name="mei_relationList"/>
         </optional>
         <zeroOrMore>
            <ref name="mei_extMeta"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.targeteval.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_sourceDesc">
      <element name="sourceDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(source
            description) – A container for the descriptions of the source(s) used in the creation of
            the electronic file.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <oneOrMore>
            <ref name="mei_source"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_specRepro">
      <element name="specRepro">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(special
            reproduction characteristic) – The equalization system, noise reduction system, etc.
            used in making the recording (e.g., NAB, DBX, Dolby, etc.).</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_stdVals">
      <element name="stdVals">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(standard
            values) – Specifies the format used when standardized date or number values are
            supplied.</a:documentation>
         <oneOrMore>
            <ref name="mei_model.pLike"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_sysReq">
      <element name="sysReq">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(system
            requirements) – System requirements for using the electronic item.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_term">
      <element name="term">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Keyword or
            phrase which describes a resource.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_term"/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.classcodeident.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_termList">
      <element name="termList">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Collection
            of text phrases which describe a resource.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <optional>
               <ref name="mei_model.labelLike"/>
            </optional>
            <ref name="mei_term"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.classcodeident.attributes"/>
         <ref name="mei_att.typed.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>
         <oneOrMore>
            <ref name="mei_model.titleLike"/>
         </oneOrMore>
         <zeroOrMore>
            <ref name="mei_model.respLike"/>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_trackConfig">
      <element name="trackConfig">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(track
            configuration) – Number of physical/input tracks on a sound medium (e.g., eight track,
            twelve track).</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <optional>
            <attribute name="num">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Records the track configuration in numeric form.</a:documentation>
               <data type="positiveInteger"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_treatHist">
      <element name="treatHist">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(treatment
            history) – A record of the treatment the item has undergone (e.g., de-acidification,
            restoration, etc.).</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_treatSched">
      <element name="treatSched">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(treatment
            scheduled) – Scheduled treatment, e.g. de-acidification, restoration, etc., for an
            item.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_unpub">
      <element name="unpub">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >(unpublished) – Used to explicitly indicate that a bibliographic resource is
            unpublished.</a:documentation>
         <text/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_useRestrict">
      <element name="useRestrict">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(usage
            restrictions) – Container for information about the conditions that affect use of a
            bibliographic item after access has been granted.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_watermark">
      <element name="watermark">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a
            description of a watermark or similar device.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_work">
      <element name="work">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides a
            detailed description of a work, specifically its history, language use, and high-level
            musical attributes: key, tempo, meter, medium of performance, and intended
            duration.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.identifierLike"/>
         </zeroOrMore>
         <optional>
            <ref name="mei_titleStmt"/>
         </optional>
         <zeroOrMore>
            <ref name="mei_model.workIdent"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_otherChar"/>
         </zeroOrMore>
         <optional>
            <ref name="mei_creation"/>
         </optional>
         <optional>
            <ref name="mei_history"/>
         </optional>
         <optional>
            <ref name="mei_langUsage"/>
         </optional>
         <optional>
            <ref name="mei_perfMedium"/>
         </optional>
         <optional>
            <ref name="mei_perfDuration"/>
         </optional>
         <optional>
            <ref name="mei_audience"/>
         </optional>
         <optional>
            <ref name="mei_contents"/>
         </optional>
         <optional>
            <ref name="mei_context"/>
         </optional>
         <zeroOrMore>
            <ref name="mei_biblList"/>
         </zeroOrMore>
         <optional>
            <ref name="mei_notesStmt"/>
         </optional>
         <optional>
            <ref name="mei_classification"/>
         </optional>
         <optional>
            <ref name="mei_expressionList"/>
         </optional>
         <optional>
            <ref name="mei_componentGrp"/>
         </optional>
         <optional>
            <ref name="mei_relationList"/>
         </optional>
         <zeroOrMore>
            <ref name="mei_extMeta"/>
         </zeroOrMore>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_workDesc">
      <element name="workDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(work
            description) – Grouping mechanism for information describing non-bibliographic aspects
            of a text.</a:documentation>
         <oneOrMore>
            <ref name="mei_work"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.ineume.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.ineume.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.ineume.log.attributes">
      <ref name="mei_att.ineume.log.attribute.form"/>
      <ref name="mei_att.ineume.log.attribute.name"/>
   </define>
   <define name="mei_att.ineume.log.attribute.form">
      <optional>
         <attribute name="form">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a subclass or functional label for the neume.</a:documentation>
            <ref name="mei_data.INEUMEFORM"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.ineume.log.attribute.name">
      <optional>
         <attribute name="name">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the name of the neume.</a:documentation>
            <ref name="mei_data.INEUMENAME"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.ineume.vis.attributes">
      <ref name="mei_att.altsym.attributes"/>
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extsym.attributes"/>
      <ref name="mei_att.staffloc.attributes"/>
      <ref name="mei_att.typography.attributes"/>
   </define>
   <define name="mei_att.uneume.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
      <ref name="mei_att.harmonicfunction.attributes"/>
      <ref name="mei_att.intervalmelodic.attributes"/>
      <ref name="mei_att.melodicfunction.attributes"/>
      <ref name="mei_att.solfa.attributes"/>
   </define>
   <define name="mei_att.uneume.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.uneume.log.attributes">
      <ref name="mei_att.event.attributes"/>
      <ref name="mei_att.syltext.attributes"/>
      <ref name="mei_att.uneume.log.attribute.form"/>
      <ref name="mei_att.uneume.log.attribute.name"/>
   </define>
   <define name="mei_att.uneume.log.attribute.form">
      <optional>
         <attribute name="form">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a subclass or functional label for the neume.</a:documentation>
            <ref name="mei_data.UNEUMEFORM"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.uneume.log.attribute.name">
      <optional>
         <attribute name="name">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the name of the neume.</a:documentation>
            <ref name="mei_data.UNEUMENAME"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.uneume.vis.attributes">
      <ref name="mei_att.altsym.attributes"/>
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.extsym.attributes"/>
      <ref name="mei_att.relativesize.attributes"/>
      <ref name="mei_att.staffloc.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visibility.attributes"/>
      <ref name="mei_att.visualoffset.ho.attributes"/>
      <ref name="mei_att.xy.attributes"/>
   </define>
   <define name="mei_model.eventLike.neumes">
      <choice>
         <ref name="mei_ineume"/>
         <ref name="mei_uneume"/>
      </choice>
   </define>
   <define name="mei_model.layerPart.neumes">
      <choice>
         <ref name="mei_model.syllableLike"/>
      </choice>
   </define>
   <define name="mei_model.layerPart.neumes_alternation">
      <choice>
         <ref name="mei_model.syllableLike_alternation"/>
      </choice>
   </define>
   <define name="mei_model.layerPart.neumes_sequence">
      <ref name="mei_model.syllableLike_sequence"/>
   </define>
   <define name="mei_model.layerPart.neumes_sequenceOptional">
      <optional>
         <ref name="mei_model.syllableLike_sequenceOptional"/>
      </optional>
   </define>
   <define name="mei_model.layerPart.neumes_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_model.syllableLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.layerPart.neumes_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_model.syllableLike_sequenceRepeatable"/>
      </oneOrMore>
   </define>
   <define name="mei_model.sectionPart.neumes">
      <notAllowed/>
   </define>
   <define name="mei_model.sectionPart.neumes_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.sectionPart.neumes_sequence">
      <empty/>
   </define>
   <define name="mei_model.sectionPart.neumes_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.sectionPart.neumes_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.sectionPart.neumes_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.staffPart.neumes">
      <notAllowed/>
   </define>
   <define name="mei_model.staffPart.neumes_alternation">
      <notAllowed/>
   </define>
   <define name="mei_model.staffPart.neumes_sequence">
      <empty/>
   </define>
   <define name="mei_model.staffPart.neumes_sequenceOptional">
      <empty/>
   </define>
   <define name="mei_model.staffPart.neumes_sequenceOptionalRepeatable">
      <empty/>
   </define>
   <define name="mei_model.staffPart.neumes_sequenceRepeatable">
      <notAllowed/>
   </define>
   <define name="mei_model.syllableLike">
      <choice>
         <ref name="mei_syllable"/>
      </choice>
   </define>
   <define name="mei_model.syllableLike_alternation">
      <choice>
         <ref name="mei_syllable"/>
      </choice>
   </define>
   <define name="mei_model.syllableLike_sequence">
      <ref name="mei_syllable"/>
   </define>
   <define name="mei_model.syllableLike_sequenceOptional">
      <optional>
         <ref name="mei_syllable"/>
      </optional>
   </define>
   <define name="mei_model.syllableLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_syllable"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.syllableLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_syllable"/>
      </oneOrMore>
   </define>
   <define name="mei_model.syllablePart">
      <choice>
         <ref name="mei_model.controleventLike"/>
         <ref name="mei_model.eventLike"/>
         <ref name="mei_model.noteModifierLike"/>
         <ref name="mei_model.eventLike.neumes"/>
         <ref name="mei_model.lyricsLike"/>
         <ref name="mei_model.sylLike"/>
         <ref name="mei_model.verseLike"/>
         <ref name="mei_model.midiLike"/>
      </choice>
   </define>
   <define name="mei_ineume">
      <element name="ineume">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(interrupted
            neume) – A graphically interrupted neume; that is, a neume which is logically a single
            entity but is written using multiple signs.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.neumes"/>
               <ref name="mei_macro.neumeModifierLike"/>
               <ref name="mei_model.appLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.verseLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.ineume.log.attributes"/>
         <ref name="mei_att.ineume.vis.attributes"/>
         <ref name="mei_att.ineume.ges.attributes"/>
         <ref name="mei_att.ineume.anl.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_syllable">
      <element name="syllable">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Neume
            notation can be thought of as "neumed text". Therefore, the syllable element provides
            high-level organization in this repertoire.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.appLike"/>
               <ref name="mei_model.divLike"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.scoreDefLike"/>
               <ref name="mei_model.staffDefLike"/>
               <ref name="mei_model.staffGrpLike"/>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.syllablePart"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_uneume">
      <element name="uneume">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >(uninterrupted neume) – A graphically-uninterrupted neume sign.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_macro.neumeModifierLike"/>
               <ref name="mei_model.appLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.verseLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.uneume.log.attributes"/>
         <ref name="mei_att.uneume.vis.attributes"/>
         <ref name="mei_att.uneume.ges.attributes"/>
         <ref name="mei_att.uneume.anl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.common.anl.attributes">
      <ref name="mei_att.alignment.attributes"/>
      <ref name="mei_att.common.anl.attribute.copyof"/>
      <ref name="mei_att.common.anl.attribute.corresp"/>
      <ref name="mei_att.common.anl.attribute.next"/>
      <ref name="mei_att.common.anl.attribute.prev"/>
      <ref name="mei_att.common.anl.attribute.sameas"/>
      <ref name="mei_att.common.anl.attribute.synch"/>
   </define>
   <define name="mei_att.common.anl.attribute.copyof">
      <optional>
         <attribute name="copyof">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Points to
               an element of which the current element is a copy.</a:documentation>
            <ref name="mei_data.URI"/>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
      id="mei-att.common.anl-copyof-When_copyof_element_empty-constraint-52">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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:*[@copyof]">
         <sch:assert test="count(child::node()) = 0">An element with a copyof attribute cannot have
            content.</sch:assert>
      </sch:rule>
   </pattern>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
      id="mei-att.common.anl-copyof-check_copyofTarget-constraint-53">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@copyof">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@copyof 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 @copyof should correspond to the @xml:id attribute of an element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.common.anl.attribute.corresp">
      <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>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
      id="mei-att.common.anl-corresp-check_correspTarget-constraint-54">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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:assert role="warning"
            test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*/@xml:id">Each
            value in @corresp should correspond to the @xml:id attribute of an element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.common.anl.attribute.next">
      <optional>
         <attribute name="next">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to
               point to the next event(s) in a user-defined collection.</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.common.anl-next-check_nextTarget-constraint-55">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@next">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@next 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 @next should correspond to the @xml:id attribute of an element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.common.anl.attribute.prev">
      <optional>
         <attribute name="prev">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Points to
               the previous event(s) in a user-defined collection.</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.common.anl-prev-check_prevTarget-constraint-56">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@prev">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@prev 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 @prev should correspond to the @xml:id attribute of an element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.common.anl.attribute.sameas">
      <optional>
         <attribute name="sameas">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Points to
               an element that is the same as the current element but is not a literal copy of the
               current element.</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.common.anl-sameas-check_sameasTarget-constraint-57">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@sameas">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@sameas 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 @sameas should correspond to the @xml:id attribute of an element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.common.anl.attribute.synch">
      <optional>
         <attribute name="synch">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Points to
               elements that are synchronous with the current element.</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.common.anl-synch-check_synchTarget-constraint-58">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@synch">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@synch 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 @synch should correspond to the @xml:id attribute of an element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.harmonicfunction.attributes">
      <ref name="mei_att.harmonicfunction.attribute.deg"/>
   </define>
   <define name="mei_att.harmonicfunction.attribute.deg">
      <optional>
         <attribute name="deg">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Captures
               relative scale degree information using Humdrum **deg syntax -- an optional indicator
               of melodic approach (^ = ascending approach, v = descending approach), a scale degree
               value (1 = tonic ... 7 = leading tone), and an optional indication of chromatic
               alteration. The amount of chromatic alternation is not indicated.</a:documentation>
            <ref name="mei_data.SCALEDEGREE"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.intervalharmonic.attributes">
      <ref name="mei_att.intervalharmonic.attribute.inth"/>
   </define>
   <define name="mei_att.intervalharmonic.attribute.inth">
      <optional>
         <attribute name="inth">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes
               the harmonic interval between pitches occurring at the same time.</a:documentation>
            <list>
               <oneOrMore>
                  <ref name="mei_data.INTERVAL.HARMONIC"/>
               </oneOrMore>
            </list>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.intervalmelodic.attributes">
      <ref name="mei_att.intervalmelodic.attribute.intm"/>
   </define>
   <define name="mei_att.intervalmelodic.attribute.intm">
      <optional>
         <attribute name="intm">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Encodes
               the melodic interval from the previous pitch. The value may be a general directional
               indication (u, d, s), an indication of diatonic interval direction, quality, and
               size, or a precise numeric value in half steps.</a:documentation>
            <ref name="mei_data.INTERVAL.MELODIC"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.melodicfunction.attributes">
      <ref name="mei_att.melodicfunction.attribute.mfunc"/>
   </define>
   <define name="mei_att.melodicfunction.attribute.mfunc">
      <optional>
         <attribute name="mfunc">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
               melodic function using Humdrum **embel syntax.</a:documentation>
            <ref name="mei_data.MELODICFUNCTION"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.pitchclass.attributes">
      <ref name="mei_att.pitchclass.attribute.pclass"/>
   </define>
   <define name="mei_att.pitchclass.attribute.pclass">
      <optional>
         <attribute name="pclass">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds
               pitch class information.</a:documentation>
            <ref name="mei_data.PITCHCLASS"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.solfa.attributes">
      <ref name="mei_att.solfa.attribute.psolfa"/>
   </define>
   <define name="mei_att.solfa.attribute.psolfa">
      <optional>
         <attribute name="psolfa">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
               sol-fa designation, e.g., do, re, mi, etc., in either a fixed or movable Do
               system.</a:documentation>
            <data type="NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_meiCorpus">
      <element name="meiCorpus">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(MEI corpus)
            – A group of related MEI documents, consisting of a header for the group, and one or
            more &lt;mei&gt; elements, each with its own complete header.</a:documentation>
         <ref name="mei_meiHead"/>
         <zeroOrMore>
            <ref name="mei_mei"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.meiversion.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.crit.attributes">
      <ref name="mei_att.handident.attributes"/>
      <ref name="mei_att.responsibility.attributes"/>
      <ref name="mei_att.sequence.attributes"/>
      <ref name="mei_att.source.attributes"/>
      <ref name="mei_att.crit.attribute.cause"/>
   </define>
   <define name="mei_att.crit.attribute.cause">
      <optional>
         <attribute name="cause">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Classifies the cause for the variant reading, according to any appropriate typology
               of possible origins.</a:documentation>
            <data type="NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.rdg.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.rdg.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.rdg.log.attributes">
      <empty/>
   </define>
   <define name="mei_att.rdg.vis.attributes">
      <empty/>
   </define>
   <define name="mei_att.source.attributes">
      <ref name="mei_att.source.attribute.source"/>
   </define>
   <define name="mei_att.source.attribute.source">
      <optional>
         <attribute name="source">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
               a list of one or more pointers indicating the sources which attest to a given
               reading. Each value should correspond to the ID of a &lt;source&gt; element located
               in the document header.</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.source-source-check_sourceTarget-constraint-59">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@source">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@source attribute should
            have content.</sch:assert>
         <sch:assert role="warning"
            test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:source/@xml:id"
            >Each value in @source should correspond to the @xml:id attribute of a source
            element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_model.appLike">
      <choice>
         <ref name="mei_app"/>
      </choice>
   </define>
   <define name="mei_model.rdgPart.critapp">
      <choice>
         <ref name="mei_model.controleventLike"/>
         <ref name="mei_model.eventLike"/>
         <ref name="mei_model.layerLike"/>
         <ref name="mei_model.noteModifierLike"/>
         <ref name="mei_model.eventLike.neumes"/>
         <ref name="mei_model.syllableLike"/>
         <ref name="mei_model.lyricsLike"/>
         <ref name="mei_model.sylLike"/>
         <ref name="mei_model.verseLike"/>
         <ref name="mei_model.midiLike"/>
      </choice>
   </define>
   <define name="mei_app">
      <element name="app">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(apparatus)
            – Contains one or more alternative encodings.</a:documentation>
         <optional>
            <ref name="mei_lem"/>
         </optional>
         <ref name="mei_rdg"/>
         <zeroOrMore>
            <ref name="mei_rdg"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_lem">
      <element name="lem">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(lemma) –
            Contains the lemma, or base text, of a textual variation.</a:documentation>
         <zeroOrMore>
            <ref name="mei_expansion"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.appLike"/>
               <ref name="mei_model.divLike"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.staffGrpLike"/>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.rdgPart.critapp"/>
               <ref name="mei_model.sectionPart"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.crit.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.rdg.anl.attributes"/>
         <ref name="mei_att.rdg.ges.attributes"/>
         <ref name="mei_att.rdg.log.attributes"/>
         <ref name="mei_att.rdg.vis.attributes"/>
         <ref name="mei_att.targeteval.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_rdg">
      <element name="rdg">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(reading) –
            Contains a single reading within a textual variation.</a:documentation>
         <zeroOrMore>
            <ref name="mei_expansion"/>
         </zeroOrMore>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.appLike"/>
               <ref name="mei_model.divLike"/>
               <ref name="mei_model.milestoneLike.music"/>
               <ref name="mei_model.staffGrpLike"/>
               <ref name="mei_model.annotLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.rdgPart.critapp"/>
               <ref name="mei_model.sectionPart"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.crit.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.rdg.anl.attributes"/>
         <ref name="mei_att.rdg.ges.attributes"/>
         <ref name="mei_att.rdg.log.attributes"/>
         <ref name="mei_att.rdg.vis.attributes"/>
         <ref name="mei_att.targeteval.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.agentident.attributes">
      <ref name="mei_att.agentident.attribute.agent"/>
   </define>
   <define name="mei_att.agentident.attribute.agent">
      <optional>
         <attribute name="agent">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Signifies
               the causative agent of damage, illegibility, or other loss of original
               text.</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.edit.attributes">
      <ref name="mei_att.responsibility.attributes"/>
      <ref name="mei_att.source.attributes"/>
      <ref name="mei_att.evidence.attributes"/>
   </define>
   <define name="mei_att.evidence.attributes">
      <ref name="mei_att.evidence.attribute.cert"/>
      <ref name="mei_att.evidence.attribute.evidence"/>
   </define>
   <define name="mei_att.evidence.attribute.cert">
      <optional>
         <attribute name="cert">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Signifies
               the degree of certainty or precision associated with a feature.</a:documentation>
            <ref name="mei_data.CERTAINTY"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.evidence.attribute.evidence">
      <optional>
         <attribute name="evidence">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the nature of the evidence supporting the reliability or accuracy of the intervention
               or interpretation. Suggested values include: 'internal', 'external',
               'conjecture'.</a:documentation>
            <data type="NMTOKEN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.extent.attributes">
      <ref name="mei_att.extent.attribute.extent"/>
   </define>
   <define name="mei_att.extent.attribute.extent">
      <optional>
         <attribute name="extent">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the extent of damage or omission.</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.reasonident.attributes">
      <ref name="mei_att.reasonident.attribute.reason"/>
   </define>
   <define name="mei_att.reasonident.attribute.reason">
      <optional>
         <attribute name="reason">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Holds a
               short phrase describing the reason for missing textual material (gap), why material
               is supplied (supplied), or why transcription is difficult
               (unclear).</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.trans.attributes">
      <ref name="mei_att.handident.attributes"/>
      <ref name="mei_att.sequence.attributes"/>
   </define>
   <define name="mei_model.choicePart">
      <choice>
         <ref name="mei_model.editorialLike"/>
         <ref name="mei_model.editLike"/>
         <ref name="mei_corr"/>
         <ref name="mei_orig"/>
         <ref name="mei_reg"/>
         <ref name="mei_sic"/>
         <ref name="mei_unclear"/>
      </choice>
   </define>
   <define name="mei_model.editLike">
      <choice>
         <ref name="mei_choice"/>
         <ref name="mei_subst"/>
      </choice>
   </define>
   <define name="mei_model.transcriptionLike">
      <choice>
         <ref name="mei_add"/>
         <ref name="mei_corr"/>
         <ref name="mei_damage"/>
         <ref name="mei_del"/>
         <ref name="mei_gap"/>
         <ref name="mei_handShift"/>
         <ref name="mei_orig"/>
         <ref name="mei_reg"/>
         <ref name="mei_restore"/>
         <ref name="mei_sic"/>
         <ref name="mei_supplied"/>
         <ref name="mei_unclear"/>
      </choice>
   </define>
   <define name="mei_abbr">
      <element name="abbr" ns="http://www.music-encoding.org/ns/mei">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >(abbreviation) – A generic element for 1) a shortened form of a word, including an
            acronym or 2) a shorthand notation.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.neumes"/>
               <ref name="mei_model.controleventLike"/>
               <ref name="mei_model.lyricsLike"/>
               <ref name="mei_model.midiLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.noteModifierLike"/>
               <ref name="mei_model.sectionLike"/>
               <ref name="mei_model.staffLike"/>
               <ref name="mei_model.layerLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.fLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.trans.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <optional>
            <attribute name="expan">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Records the expansion of a text abbreviation.</a:documentation>
               <data type="string"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_add">
      <element name="add">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(addition) –
            Marks an addition to the text.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.neumes"/>
               <ref name="mei_model.controleventLike"/>
               <ref name="mei_model.lyricsLike"/>
               <ref name="mei_model.midiLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.noteModifierLike"/>
               <ref name="mei_model.sectionLike"/>
               <ref name="mei_model.staffLike"/>
               <ref name="mei_model.layerLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.fLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.trans.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <optional>
            <attribute name="method">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Contains an indication of how the addition was accomplished. Suggested values
                  include: 1] interline; 2] intraline; 3] overstrike</a:documentation>
               <choice>
                  <value>interline</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">New
                     material added to the existing text.</a:documentation>
                  <value>intraline</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">New
                     material added above or below original text.</a:documentation>
                  <value>overstrike</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">New
                     text obscures original.</a:documentation>
                  <data type="NMTOKEN"/>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_choice">
      <element name="choice">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Groups a
            number of alternative encodings for the same point in a text.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.choicePart"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_corr">
      <element name="corr">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(correction)
            – Contains the correct form of an apparent erroneous passage.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.neumes"/>
               <ref name="mei_model.controleventLike"/>
               <ref name="mei_model.lyricsLike"/>
               <ref name="mei_model.midiLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.noteModifierLike"/>
               <ref name="mei_model.sectionLike"/>
               <ref name="mei_model.staffLike"/>
               <ref name="mei_model.layerLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.fLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.trans.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_damage">
      <element name="damage">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains an
            area of damage to the physical medium.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.neumes"/>
               <ref name="mei_model.controleventLike"/>
               <ref name="mei_model.lyricsLike"/>
               <ref name="mei_model.midiLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.noteModifierLike"/>
               <ref name="mei_model.sectionLike"/>
               <ref name="mei_model.staffLike"/>
               <ref name="mei_model.layerLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.fLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.agentident.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.extent.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.handident.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <optional>
            <attribute name="degree">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Records the degree of damage.</a:documentation>
               <data type="string"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_del">
      <element name="del">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(deletion) –
            Contains information deleted, marked as deleted, or otherwise indicated as superfluous
            or spurious in the copy text by an author, scribe, annotator, or
            corrector.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.neumes"/>
               <ref name="mei_model.controleventLike"/>
               <ref name="mei_model.lyricsLike"/>
               <ref name="mei_model.midiLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.noteModifierLike"/>
               <ref name="mei_model.sectionLike"/>
               <ref name="mei_model.staffLike"/>
               <ref name="mei_model.layerLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.fLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.trans.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <optional>
            <attribute name="rend">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Captures the appearance of the source material using MEI-defined
                  descriptors.</a:documentation>
               <list>
                  <oneOrMore>
                     <ref name="mei_data.TEXTRENDITION"/>
                  </oneOrMore>
               </list>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_expan">
      <element name="expan">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(expansion)
            – Contains the expansion of an abbreviation.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.neumes"/>
               <ref name="mei_model.controleventLike"/>
               <ref name="mei_model.lyricsLike"/>
               <ref name="mei_model.midiLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.noteModifierLike"/>
               <ref name="mei_model.sectionLike"/>
               <ref name="mei_model.staffLike"/>
               <ref name="mei_model.layerLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.fLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.trans.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <optional>
            <attribute name="abbr">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Captures the abbreviated form of the text.</a:documentation>
               <data type="string"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_gap">
      <element name="gap">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates a
            point where material has been omitted in a transcription, whether as part of sampling
            practice or for editorial reasons described in the MEI header.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.extent.attributes"/>
         <ref name="mei_att.handident.attributes"/>
         <ref name="mei_att.reasonident.attributes"/>
         <ref name="mei_att.measurement.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_handShift">
      <element name="handShift">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Marks the
            beginning of a passage written in a new hand, or of a change in the scribe, writing
            style, ink or character of the document hand.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.medium.attributes"/>
         <optional>
            <attribute name="character">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Describes the character of the new hand.</a:documentation>
               <text/>
            </attribute>
         </optional>
         <optional>
            <attribute name="new">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Identifies the new hand. The value must contain the ID of a hand element given
                  elsewhere in the document.</a:documentation>
               <ref name="mei_data.URI"/>
            </attribute>
         </optional>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-handShift-new-check_newTarget-constraint-61">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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="@new">
               <sch:assert role="warning" test="not(normalize-space(.) eq '')">@new attribute should
                  have content.</sch:assert>
               <sch:assert role="warning"
                  test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:hand/@xml:id"
                  >The value in @new should correspond to the @xml:id attribute of a hand
                  element.</sch:assert>
            </sch:rule>
         </pattern>
         <optional>
            <attribute name="old">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Identifies the old hand. The value must contain the ID of a hand element given
                  elsewhere in the document.</a:documentation>
               <ref name="mei_data.URI"/>
            </attribute>
         </optional>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-handShift-old-check_oldTarget-constraint-62">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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="@old">
               <sch:assert role="warning" test="not(normalize-space(.) eq '')">@old attribute should
                  have content.</sch:assert>
               <sch:assert role="warning"
                  test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:hand/@xml:id"
                  >The value in @old should correspond to the @xml:id attribute of a hand
                  element.</sch:assert>
            </sch:rule>
         </pattern>
         <empty/>
      </element>
   </define>
   <define name="mei_orig">
      <element name="orig">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(original) –
            Contains material which is marked as following the original, rather than being
            normalized or corrected.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.neumes"/>
               <ref name="mei_model.controleventLike"/>
               <ref name="mei_model.lyricsLike"/>
               <ref name="mei_model.midiLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.noteModifierLike"/>
               <ref name="mei_model.sectionLike"/>
               <ref name="mei_model.staffLike"/>
               <ref name="mei_model.layerLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.fLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_reg">
      <element name="reg">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >(regularization) – Contains material which has been regularized or normalized in some
            sense.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.neumes"/>
               <ref name="mei_model.controleventLike"/>
               <ref name="mei_model.lyricsLike"/>
               <ref name="mei_model.midiLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.noteModifierLike"/>
               <ref name="mei_model.sectionLike"/>
               <ref name="mei_model.staffLike"/>
               <ref name="mei_model.layerLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.fLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_restore">
      <element name="restore">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
            restoration of material to an earlier state by cancellation of an editorial or authorial
            marking or instruction.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.neumes"/>
               <ref name="mei_model.controleventLike"/>
               <ref name="mei_model.lyricsLike"/>
               <ref name="mei_model.midiLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.noteModifierLike"/>
               <ref name="mei_model.sectionLike"/>
               <ref name="mei_model.staffLike"/>
               <ref name="mei_model.layerLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.fLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.trans.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <optional>
            <attribute name="desc">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Provides a description of the means of restoration, 'stet' or 'strike-down', for
                  example.</a:documentation>
               <data type="string"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_sic">
      <element name="sic">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
            apparently incorrect or inaccurate material.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.neumes"/>
               <ref name="mei_model.controleventLike"/>
               <ref name="mei_model.lyricsLike"/>
               <ref name="mei_model.midiLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.noteModifierLike"/>
               <ref name="mei_model.sectionLike"/>
               <ref name="mei_model.staffLike"/>
               <ref name="mei_model.layerLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.fLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_subst">
      <element name="subst">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >(substitution) – Groups transcriptional elements when the combination is to be regarded
            as a single intervention in the text.</a:documentation>
         <ref name="mei_model.transcriptionLike"/>
         <oneOrMore>
            <ref name="mei_model.transcriptionLike"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.trans.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_supplied">
      <element name="supplied">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
            material supplied by the transcriber or editor for any reason.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.controleventLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.neumes"/>
               <ref name="mei_model.fLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.layerLike"/>
               <ref name="mei_model.lyricsLike"/>
               <ref name="mei_model.midiLike"/>
               <ref name="mei_model.noteModifierLike"/>
               <ref name="mei_model.sectionLike"/>
               <ref name="mei_model.staffLike"/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.verseLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.agentident.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.reasonident.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_unclear">
      <element name="unclear">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
            material that cannot be transcribed with certainty because it is illegible or inaudible
            in the source.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.eventLike"/>
               <ref name="mei_model.eventLike.neumes"/>
               <ref name="mei_model.controleventLike"/>
               <ref name="mei_model.lyricsLike"/>
               <ref name="mei_model.midiLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.noteModifierLike"/>
               <ref name="mei_model.sectionLike"/>
               <ref name="mei_model.staffLike"/>
               <ref name="mei_model.layerLike"/>
               <ref name="mei_model.graphicprimitiveLike"/>
               <ref name="mei_model.fLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.agentident.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.handident.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.reasonident.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.extsym.attributes">
      <ref name="mei_att.extsym.attribute.glyphname"/>
      <ref name="mei_att.extsym.attribute.glyphnum"/>
   </define>
   <define name="mei_att.extsym.attribute.glyphname">
      <optional>
         <attribute name="glyphname">
            <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-glyphname-check_glyphnameTarget-constraint-63">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@glyphname">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@glyphname attribute should
            have content.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.extsym.attribute.glyphnum">
      <optional>
         <attribute name="glyphnum">
            <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>
            <data type="string">
               <param name="pattern">(#x|U\+)[A-F0-9]+</param>
            </data>
         </attribute>
      </optional>
   </define>
   <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
      id="mei-att.extsym-glyphnum-check_glyphnum-constraint-64">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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:*[starts-with(@glyphnum, 'U+')]">
         <sch:assert role="warning" test="string-length(@glyphnum) = 6">SMuFL version 1.18 uses the
            range U+E000 - U+ECBF.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_att.facsimile.attributes">
      <ref name="mei_att.facsimile.attribute.facs"/>
   </define>
   <define name="mei_att.facsimile.attribute.facs">
      <optional>
         <attribute name="facs">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Permits
               the current element to reference a facsimile surface or image zone which corresponds
               to it.</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.facsimile-facs-check_facsTarget-constraint-65">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@facs">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@facs attribute should have
            content.</sch:assert>
         <sch:assert role="warning"
            test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*[local-name() eq 'surface' or local-name() eq 'zone']/@xml:id"
            >Each value in @facs should correspond to the @xml:id attribute of a surface or zone
            element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_facsimile">
      <element name="facsimile">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a
            representation of some written source in the form of a set of images rather than as
            transcribed or encoded text.</a:documentation>
         <zeroOrMore>
            <ref name="mei_surface"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_surface">
      <element name="surface">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Defines a
            writing surface in terms of a rectangular coordinate space, optionally grouping one or
            more graphic representations of that space, and rectangular zones of interest within
            it.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.figDescLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_model.graphicLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_zone"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.coordinated.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.startid.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_zone">
      <element name="zone">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Defines an
            area of interest within a surface or graphic file.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.figDescLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_model.graphicLike"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.coordinated.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.tabular.attributes">
      <ref name="mei_att.tabular.attribute.colspan"/>
      <ref name="mei_att.tabular.attribute.rowspan"/>
   </define>
   <define name="mei_att.tabular.attribute.colspan">
      <optional>
         <attribute name="colspan">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The
               number of columns spanned by this cell.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.tabular.attribute.rowspan">
      <optional>
         <attribute name="rowspan">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">The
               number of rows spanned by this cell.</a:documentation>
            <data type="positiveInteger"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_model.figDescLike">
      <choice>
         <ref name="mei_figDesc"/>
      </choice>
   </define>
   <define name="mei_model.figureLike">
      <choice>
         <ref name="mei_fig"/>
      </choice>
   </define>
   <define name="mei_model.figureLike_alternation">
      <choice>
         <ref name="mei_fig"/>
      </choice>
   </define>
   <define name="mei_model.figureLike_sequence">
      <ref name="mei_fig"/>
   </define>
   <define name="mei_model.figureLike_sequenceOptional">
      <optional>
         <ref name="mei_fig"/>
      </optional>
   </define>
   <define name="mei_model.figureLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_fig"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.figureLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_fig"/>
      </oneOrMore>
   </define>
   <define name="mei_model.graphicLike">
      <choice>
         <ref name="mei_graphic"/>
      </choice>
   </define>
   <define name="mei_model.tableLike">
      <choice>
         <ref name="mei_table"/>
      </choice>
   </define>
   <define name="mei_fig">
      <element name="fig">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(figure) –
            Groups elements representing or containing graphic information such as an illustration
            or figure.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.captionLike"/>
               <ref name="mei_figDesc"/>
               <ref name="mei_model.graphicLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.xy.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_figDesc">
      <element name="figDesc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(figure
            description) – Contains a brief prose description of the appearance or content of a
            graphic figure, for use when documenting an image without displaying
            it.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textcomponentLike"/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-figDesc-figDesc_content_constraint-constraint-66">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:figDesc[mei:lg or mei:p or mei:quote or mei:table]">
               <sch:assert test="not(*[../text()[normalize-space()]])">Mixed content is not allowed
                  when lg, p, quote, or table is used.</sch:assert>
               <sch:assert
                  test="not(*[not(local-name() eq 'biblList' or local-name() eq 'castList' or                local-name() eq 'lg' or local-name() eq 'list' or local-name() eq 'p' or                local-name() eq 'quote' or local-name() eq 'table')])"
                  >Unstructured text not allowed when lg, p, quote, or table elements are
                  used.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_graphic">
      <element name="graphic">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
            the location of an inline graphic.</a:documentation>
         <zeroOrMore>
            <ref name="mei_zone"/>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-graphic-graphic_attributes-constraint-67">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:zone/mei:graphic">
               <sch:assert role="warning" test="count(mei:*) = 0">Graphic child of zone should not
                  have children.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-graphic-graphic_attributes-constraint-68">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:symbolDef/mei:graphic">
               <sch:assert role="warning" test="@startid or (@ulx and @uly)">Graphic should have
                  either a startid attribute or ulx and uly attributes.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-graphic-graphic_attributes-constraint-69">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:graphic[not(ancestor::mei:symbolDef or ancestor::mei:zone)]">
               <sch:assert role="warning" test="not(@ulx or @uly)">Graphic should not have @ulx or
                  @uly attributes.</sch:assert>
               <sch:assert role="warning" test="not(@ho or @vo)">Graphic should not have @ho or @vo
                  attributes.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.dimensions.attributes"/>
         <ref name="mei_att.internetmedia.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.measurement.attributes"/>
         <ref name="mei_att.startid.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.visualoffset.attributes"/>
         <optional>
            <attribute name="ulx">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Indicates the upper-left corner x coordinate.</a:documentation>
               <data type="nonNegativeInteger"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="uly">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Indicates the upper-left corner y coordinate.</a:documentation>
               <data type="nonNegativeInteger"/>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_table">
      <element name="table">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains
            text displayed in tabular form.</a:documentation>
         <optional>
            <ref name="mei_model.captionLike"/>
         </optional>
         <oneOrMore>
            <ref name="mei_tr"/>
         </oneOrMore>
         <optional>
            <ref name="mei_model.captionLike"/>
         </optional>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.xy.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_td">
      <element name="td">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(table data)
            – Designates a table cell that contains data as opposed to a cell that contains column
            or row heading information.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textcomponentLike"/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.xy.attributes"/>
         <ref name="mei_att.tabular.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_th">
      <element name="th">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(table
            header) – Designates a table cell containing column or row heading information as
            opposed to one containing data.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textcomponentLike"/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.xy.attributes"/>
         <ref name="mei_att.tabular.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_tr">
      <element name="tr">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(table row)
            – A formatting element that contains one or more cells (intersection of a row and a
            column) in a &lt;table&gt;.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_th"/>
               <ref name="mei_td"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.xy.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.rel.attributes">
      <ref name="mei_att.rel.attribute.rel"/>
   </define>
   <define name="mei_att.rel.attribute.rel">
      <attribute name="rel">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Describes
            the relationship between the current entity and the target entity.</a:documentation>
         <ref name="mei_data.FRBRRELATIONSHIP"/>
      </attribute>
   </define>
   <define name="mei_model.expressionLike">
      <choice>
         <ref name="mei_expression"/>
      </choice>
   </define>
   <define name="mei_model.itemLike">
      <choice>
         <ref name="mei_item"/>
      </choice>
   </define>
   <define name="mei_model.manifestationLike">
      <choice>
         <ref name="mei_source"/>
      </choice>
   </define>
   <define name="mei_model.relationLike">
      <choice>
         <ref name="mei_relation"/>
      </choice>
   </define>
   <define name="mei_componentGrp">
      <element name="componentGrp">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(component
            group) – Container for components of a bibliographic entity.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <choice>
            <zeroOrMore>
               <ref name="mei_model.workLike"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="mei_model.expressionLike"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="mei_model.manifestationLike"/>
            </zeroOrMore>
            <zeroOrMore>
               <ref name="mei_model.itemLike"/>
            </zeroOrMore>
         </choice>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-componentGrp-checkComponentGrp-constraint-70">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:componentGrp">
               <sch:assert
                  test="every $i in ./child::mei:*[not(local-name()='head')] satisfies $i/local-name() eq ./parent::mei:*/local-name()"
                  >Only child elements of the same name as the parent of the componentGrp are
                  allowed.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_expression">
      <element name="expression">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Intellectual
            or artistic realization of a work.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.identifierLike"/>
         </zeroOrMore>
         <optional>
            <ref name="mei_titleStmt"/>
         </optional>
         <zeroOrMore>
            <ref name="mei_model.workIdent"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_otherChar"/>
         </zeroOrMore>
         <optional>
            <ref name="mei_creation"/>
         </optional>
         <optional>
            <ref name="mei_history"/>
         </optional>
         <optional>
            <ref name="mei_langUsage"/>
         </optional>
         <optional>
            <ref name="mei_perfMedium"/>
         </optional>
         <optional>
            <ref name="mei_perfDuration"/>
         </optional>
         <optional>
            <ref name="mei_extent"/>
         </optional>
         <optional>
            <ref name="mei_scoreFormat"/>
         </optional>
         <optional>
            <ref name="mei_contents"/>
         </optional>
         <optional>
            <ref name="mei_context"/>
         </optional>
         <zeroOrMore>
            <ref name="mei_biblList"/>
         </zeroOrMore>
         <optional>
            <ref name="mei_notesStmt"/>
         </optional>
         <optional>
            <ref name="mei_classification"/>
         </optional>
         <optional>
            <ref name="mei_componentGrp"/>
         </optional>
         <optional>
            <ref name="mei_relationList"/>
         </optional>
         <zeroOrMore>
            <ref name="mei_extMeta"/>
         </zeroOrMore>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_expressionList">
      <element name="expressionList">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Gathers
            bibliographic expression entities.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_model.expressionLike"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_item">
      <element name="item">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Single
            instance or exemplar of a source/manifestation.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.identifierLike"/>
         </zeroOrMore>
         <optional>
            <ref name="mei_availability"/>
         </optional>
         <optional>
            <ref name="mei_physDesc"/>
         </optional>
         <optional>
            <ref name="mei_physLoc"/>
         </optional>
         <optional>
            <ref name="mei_history"/>
         </optional>
         <optional>
            <ref name="mei_notesStmt"/>
         </optional>
         <optional>
            <ref name="mei_classification"/>
         </optional>
         <optional>
            <ref name="mei_componentGrp"/>
         </optional>
         <optional>
            <ref name="mei_relationList"/>
         </optional>
         <zeroOrMore>
            <ref name="mei_extMeta"/>
         </zeroOrMore>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.targeteval.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_itemList">
      <element name="itemList">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Gathers
            bibliographic item entities.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_model.itemLike"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_relation">
      <element name="relation">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A relation
            element describes the relationship between its parent and the object referenced by the
            relation element's target attribute.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.rel.attributes"/>
         <ref name="mei_att.targeteval.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_relationList">
      <element name="relationList">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Gathers
            bibliographic relation elements.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_model.relationLike"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.fretlocation.attributes">
      <ref name="mei_att.fretlocation.attribute.fret"/>
   </define>
   <define name="mei_att.fretlocation.attribute.fret">
      <optional>
         <attribute name="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.FRET"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.harm.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
      <ref name="mei_att.intervalharmonic.attributes"/>
   </define>
   <define name="mei_att.harm.ges.attributes">
      <ref name="mei_att.duration.performed.attributes"/>
   </define>
   <define name="mei_att.harm.log.attributes">
      <ref name="mei_att.controlevent.attributes"/>
      <ref name="mei_att.startendid.attributes"/>
      <ref name="mei_att.timestamp2.musical.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">Contains
               a reference to a &lt;chordDef&gt; 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-71">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@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_att.harm.vis.attributes">
      <ref name="mei_att.extender.attributes"/>
      <ref name="mei_att.placement.attributes"/>
      <ref name="mei_att.visualoffset.attributes"/>
      <ref name="mei_att.visualoffset2.ho.attributes"/>
      <ref name="mei_att.visualoffset2.to.attributes"/>
      <ref name="mei_att.xy.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_model.chordTableLike">
      <choice>
         <ref name="mei_chordTable"/>
      </choice>
   </define>
   <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_barre">
      <element name="barre">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">An
            indication of fingering in a chord tablature grid.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.fretlocation.attributes"/>
         <ref name="mei_att.startendid.attributes"/>
         <empty/>
      </element>
   </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"/>
         <optional>
            <attribute name="pos">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Records the fret position at which the chord tablature is to be
                  played.</a:documentation>
               <data type="positiveInteger"/>
            </attribute>
         </optional>
         <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 &lt;chordDef&gt; element.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.accidental.performed.attributes"/>
         <ref name="mei_att.fretlocation.attributes"/>
         <ref name="mei_att.intervalharmonic.attributes"/>
         <ref name="mei_att.pitched.attributes"/>
         <optional>
            <attribute name="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>
         <empty/>
      </element>
   </define>
   <define name="mei_chordTable">
      <element name="chordTable">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >Chord/tablature look-up table.</a:documentation>
         <oneOrMore>
            <ref name="mei_chordDef"/>
         </oneOrMore>
         <ref name="mei_att.common.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"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.f.anl.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"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.facsimile.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.graphicprimitiveLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.figbassLike"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-harm-harm_start-type_attributes_required-constraint-72">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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: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.facsimile.attributes"/>
         <ref name="mei_att.harm.log.attributes"/>
         <ref name="mei_att.harm.vis.attributes"/>
         <ref name="mei_att.harm.ges.attributes"/>
         <ref name="mei_att.harm.anl.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.lyrics.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.lyrics.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.lyrics.log.attributes">
      <ref name="mei_att.staffident.attributes"/>
      <ref name="mei_att.layerident.attributes"/>
   </define>
   <define name="mei_att.lyrics.vis.attributes">
      <ref name="mei_att.placement.attributes"/>
      <ref name="mei_att.typography.attributes"/>
   </define>
   <define name="mei_att.verse.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.verse.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.verse.log.attributes">
      <ref name="mei_att.verse.log.attribute.refrain"/>
      <ref name="mei_att.verse.log.attribute.rhythm"/>
   </define>
   <define name="mei_att.verse.log.attribute.refrain">
      <optional>
         <attribute name="refrain">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to
               indicate a common, usually centered, refrain.</a:documentation>
            <ref name="mei_data.BOOLEAN"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.verse.log.attribute.rhythm">
      <optional>
         <attribute name="rhythm">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used to
               specify a rhythm for the lyric syllables that differs from that of the notes on the
               staff, e.g. '4,4,4,4' when the rhythm of the notes is '4.,8,4.,8'.</a:documentation>
            <data type="string"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.verse.vis.attributes">
      <ref name="mei_att.color.attributes"/>
      <ref name="mei_att.typography.attributes"/>
      <ref name="mei_att.visualoffset.to.attributes"/>
      <ref name="mei_att.visualoffset.vo.attributes"/>
      <ref name="mei_att.xy.attributes"/>
   </define>
   <define name="mei_model.lyricsLike">
      <choice>
         <ref name="mei_lyrics"/>
      </choice>
   </define>
   <define name="mei_model.sylLike">
      <choice>
         <ref name="mei_syl"/>
      </choice>
   </define>
   <define name="mei_model.verseLike">
      <choice>
         <ref name="mei_verse"/>
      </choice>
   </define>
   <define name="mei_lyrics">
      <element name="lyrics">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Vocally
            performed 'text' of a musical composition, such as a song or opera.</a:documentation>
         <oneOrMore>
            <ref name="mei_model.verseLike"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.lyrics.log.attributes"/>
         <ref name="mei_att.lyrics.vis.attributes"/>
         <ref name="mei_att.lyrics.ges.attributes"/>
         <ref name="mei_att.lyrics.anl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_verse">
      <element name="verse">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Lyric
            verse.</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"/>
               <ref name="mei_model.appLike"/>
            </choice>
         </oneOrMore>
         <zeroOrMore>
            <ref name="mei_model.lbLike"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.verse.log.attributes"/>
         <ref name="mei_att.verse.vis.attributes"/>
         <ref name="mei_att.verse.ges.attributes"/>
         <ref name="mei_att.verse.anl.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"/>
         </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"/>
         </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.midi.anl.attributes">
      <ref name="mei_att.common.anl.attributes"/>
   </define>
   <define name="mei_att.midi.event.attributes">
      <ref name="mei_att.staffident.attributes"/>
      <ref name="mei_att.layerident.attributes"/>
      <ref name="mei_att.timestamp.musical.attributes"/>
   </define>
   <define name="mei_att.midi.ges.attributes">
      <empty/>
   </define>
   <define name="mei_att.midi.log.attributes">
      <ref name="mei_att.staffident.attributes"/>
      <ref name="mei_att.layerident.attributes"/>
   </define>
   <define name="mei_att.midi.vis.attributes">
      <empty/>
   </define>
   <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.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">Sets the
               MIDI instrument number.</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. Values of 0 and 1 both pan left, 127 pans
               right, and 64 pans to the center.</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"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.midinumber.attributes">
      <ref name="mei_att.midinumber.attribute.num"/>
   </define>
   <define name="mei_att.midinumber.attribute.num">
      <attribute name="num">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI number
            in the range set by data.MIDIVALUE.</a:documentation>
         <ref name="mei_data.MIDIVALUE"/>
      </attribute>
   </define>
   <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">
      <choice>
         <ref name="mei_midi"/>
      </choice>
   </define>
   <define name="mei_model.midiLike_alternation">
      <choice>
         <ref name="mei_midi"/>
      </choice>
   </define>
   <define name="mei_model.midiLike_sequence">
      <ref name="mei_midi"/>
   </define>
   <define name="mei_model.midiLike_sequenceOptional">
      <optional>
         <ref name="mei_midi"/>
      </optional>
   </define>
   <define name="mei_model.midiLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_midi"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.midiLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_midi"/>
      </oneOrMore>
   </define>
   <define name="mei_cc">
      <element name="cc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(control
            change) – MIDI parameter/control change.</a:documentation>
         <empty/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <ref name="mei_att.midinumber.attributes"/>
         <ref name="mei_att.midivalue.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_chan">
      <element name="chan">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(channel) –
            MIDI channel assignment.</a:documentation>
         <empty/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <attribute name="num">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI
               number in the range set by data.MIDICHANNEL.</a:documentation>
            <ref name="mei_data.MIDICHANNEL"/>
         </attribute>
         <empty/>
      </element>
   </define>
   <define name="mei_chanPr">
      <element name="chanPr">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(channel
            pressure) – MIDI channel pressure/after touch.</a:documentation>
         <empty/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <ref name="mei_att.midinumber.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_cue">
      <element name="cue">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI cue
            point.</a:documentation>
         <text/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_hex">
      <element name="hex">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Arbitrary
            MIDI data in hexadecimal form.</a:documentation>
         <text/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <empty/>
      </element>
   </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.common.attributes"/>
         <ref name="mei_att.channelized.attributes"/>
         <ref name="mei_att.midiinstrument.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_instrGrp">
      <element name="instrGrp">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(instrument
            group) – Collects MIDI instrument definitions.</a:documentation>
         <oneOrMore>
            <ref name="mei_model.instrDefLike"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_marker">
      <element name="marker">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI marker
            meta-event.</a:documentation>
         <text/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_metaText">
      <element name="metaText">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI text
            meta-event.</a:documentation>
         <text/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_midi">
      <element name="midi">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Container
            for elements that contain information useful when generating MIDI
            output.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_cc"/>
               <ref name="mei_chan"/>
               <ref name="mei_chanPr"/>
               <ref name="mei_cue"/>
               <ref name="mei_hex"/>
               <ref name="mei_marker"/>
               <ref name="mei_metaText"/>
               <ref name="mei_noteOff"/>
               <ref name="mei_noteOn"/>
               <ref name="mei_port"/>
               <ref name="mei_prog"/>
               <ref name="mei_seqNum"/>
               <ref name="mei_trkName"/>
               <ref name="mei_vel"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.midi.log.attributes"/>
         <ref name="mei_att.midi.vis.attributes"/>
         <ref name="mei_att.midi.ges.attributes"/>
         <ref name="mei_att.midi.anl.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_noteOff">
      <element name="noteOff">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI
            note-off event.</a:documentation>
         <empty/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <ref name="mei_att.midinumber.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_noteOn">
      <element name="noteOn">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI note-on
            event.</a:documentation>
         <empty/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <ref name="mei_att.midinumber.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_port">
      <element name="port">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">MIDI
            port.</a:documentation>
         <empty/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <ref name="mei_att.midinumber.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_prog">
      <element name="prog">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(program) –
            MIDI program change.</a:documentation>
         <empty/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <ref name="mei_att.midinumber.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_seqNum">
      <element name="seqNum">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(sequence
            number) – MIDI sequence number.</a:documentation>
         <empty/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <attribute name="num">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Number in
               the range 0-65535.</a:documentation>
            <data type="nonNegativeInteger">
               <param name="maxInclusive">65535</param>
            </data>
         </attribute>
         <empty/>
      </element>
   </define>
   <define name="mei_trkName">
      <element name="trkName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(track name)
            – MIDI track/sequence name.</a:documentation>
         <text/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_vel">
      <element name="vel">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(velocity) –
            MIDI Note-on/off velocity.</a:documentation>
         <empty/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.midi.event.attributes"/>
         <ref name="mei_att.midinumber.attributes"/>
         <attribute name="form">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               whether this is note-on or note-off velocity data.</a:documentation>
            <choice>
               <value>on</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
               <value>off</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"/>
            </choice>
         </attribute>
         <empty/>
      </element>
   </define>
   <define name="mei_model.addressPart">
      <choice>
         <ref name="mei_model.geogNamePart"/>
         <ref name="mei_postBox"/>
         <ref name="mei_postCode"/>
         <ref name="mei_street"/>
      </choice>
   </define>
   <define name="mei_model.addressPart_alternation">
      <choice>
         <ref name="mei_model.geogNamePart_alternation"/>
         <ref name="mei_postBox"/>
         <ref name="mei_postCode"/>
         <ref name="mei_street"/>
      </choice>
   </define>
   <define name="mei_model.addressPart_sequence">
      <ref name="mei_model.geogNamePart_sequence"/>
      <ref name="mei_postBox"/>
      <ref name="mei_postCode"/>
      <ref name="mei_street"/>
   </define>
   <define name="mei_model.addressPart_sequenceOptional">
      <optional>
         <ref name="mei_model.geogNamePart_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_postBox"/>
      </optional>
      <optional>
         <ref name="mei_postCode"/>
      </optional>
      <optional>
         <ref name="mei_street"/>
      </optional>
   </define>
   <define name="mei_model.addressPart_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_model.geogNamePart_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_postBox"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_postCode"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_street"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.addressPart_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_model.geogNamePart_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_postBox"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_postCode"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_street"/>
      </oneOrMore>
   </define>
   <define name="mei_model.geogNamePart">
      <choice>
         <ref name="mei_bloc"/>
         <ref name="mei_country"/>
         <ref name="mei_district"/>
         <ref name="mei_geogFeat"/>
         <ref name="mei_region"/>
         <ref name="mei_settlement"/>
      </choice>
   </define>
   <define name="mei_model.geogNamePart_alternation">
      <choice>
         <ref name="mei_bloc"/>
         <ref name="mei_country"/>
         <ref name="mei_district"/>
         <ref name="mei_geogFeat"/>
         <ref name="mei_region"/>
         <ref name="mei_settlement"/>
      </choice>
   </define>
   <define name="mei_model.geogNamePart_sequence">
      <ref name="mei_bloc"/>
      <ref name="mei_country"/>
      <ref name="mei_district"/>
      <ref name="mei_geogFeat"/>
      <ref name="mei_region"/>
      <ref name="mei_settlement"/>
   </define>
   <define name="mei_model.geogNamePart_sequenceOptional">
      <optional>
         <ref name="mei_bloc"/>
      </optional>
      <optional>
         <ref name="mei_country"/>
      </optional>
      <optional>
         <ref name="mei_district"/>
      </optional>
      <optional>
         <ref name="mei_geogFeat"/>
      </optional>
      <optional>
         <ref name="mei_region"/>
      </optional>
      <optional>
         <ref name="mei_settlement"/>
      </optional>
   </define>
   <define name="mei_model.geogNamePart_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_bloc"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_country"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_district"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_geogFeat"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_region"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_settlement"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.geogNamePart_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_bloc"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_country"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_district"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_geogFeat"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_region"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_settlement"/>
      </oneOrMore>
   </define>
   <define name="mei_model.nameLike.agent">
      <choice>
         <ref name="mei_corpName"/>
         <ref name="mei_persName"/>
      </choice>
   </define>
   <define name="mei_model.nameLike.agent_alternation">
      <choice>
         <ref name="mei_corpName"/>
         <ref name="mei_persName"/>
      </choice>
   </define>
   <define name="mei_model.nameLike.agent_sequence">
      <ref name="mei_corpName"/>
      <ref name="mei_persName"/>
   </define>
   <define name="mei_model.nameLike.agent_sequenceOptional">
      <optional>
         <ref name="mei_corpName"/>
      </optional>
      <optional>
         <ref name="mei_persName"/>
      </optional>
   </define>
   <define name="mei_model.nameLike.agent_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_corpName"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_persName"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.nameLike.agent_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_corpName"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_persName"/>
      </oneOrMore>
   </define>
   <define name="mei_model.nameLike.geogName">
      <choice>
         <ref name="mei_geogName"/>
      </choice>
   </define>
   <define name="mei_model.nameLike.geogName_alternation">
      <choice>
         <ref name="mei_geogName"/>
      </choice>
   </define>
   <define name="mei_model.nameLike.geogName_sequence">
      <ref name="mei_geogName"/>
   </define>
   <define name="mei_model.nameLike.geogName_sequenceOptional">
      <optional>
         <ref name="mei_geogName"/>
      </optional>
   </define>
   <define name="mei_model.nameLike.geogName_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_geogName"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.nameLike.geogName_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_geogName"/>
      </oneOrMore>
   </define>
   <define name="mei_model.nameLike.label">
      <choice>
         <ref name="mei_periodName"/>
         <ref name="mei_styleName"/>
      </choice>
   </define>
   <define name="mei_model.nameLike.label_alternation">
      <choice>
         <ref name="mei_periodName"/>
         <ref name="mei_styleName"/>
      </choice>
   </define>
   <define name="mei_model.nameLike.label_sequence">
      <ref name="mei_periodName"/>
      <ref name="mei_styleName"/>
   </define>
   <define name="mei_model.nameLike.label_sequenceOptional">
      <optional>
         <ref name="mei_periodName"/>
      </optional>
      <optional>
         <ref name="mei_styleName"/>
      </optional>
   </define>
   <define name="mei_model.nameLike.label_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_periodName"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_styleName"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.nameLike.label_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_periodName"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_styleName"/>
      </oneOrMore>
   </define>
   <define name="mei_model.nameLike.place">
      <choice>
         <ref name="mei_model.repositoryLike"/>
         <ref name="mei_model.nameLike.geogName"/>
      </choice>
   </define>
   <define name="mei_model.nameLike.place_alternation">
      <choice>
         <ref name="mei_model.repositoryLike_alternation"/>
         <ref name="mei_model.nameLike.geogName_alternation"/>
      </choice>
   </define>
   <define name="mei_model.nameLike.place_sequence">
      <ref name="mei_model.repositoryLike_sequence"/>
      <ref name="mei_model.nameLike.geogName_sequence"/>
   </define>
   <define name="mei_model.nameLike.place_sequenceOptional">
      <optional>
         <ref name="mei_model.repositoryLike_sequenceOptional"/>
      </optional>
      <optional>
         <ref name="mei_model.nameLike.geogName_sequenceOptional"/>
      </optional>
   </define>
   <define name="mei_model.nameLike.place_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_model.repositoryLike_sequenceOptionalRepeatable"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_model.nameLike.geogName_sequenceOptionalRepeatable"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.nameLike.place_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_model.repositoryLike_sequenceRepeatable"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_model.nameLike.geogName_sequenceRepeatable"/>
      </oneOrMore>
   </define>
   <define name="mei_model.persNamePart">
      <choice>
         <ref name="mei_addName"/>
         <ref name="mei_famName"/>
         <ref name="mei_foreName"/>
         <ref name="mei_genName"/>
         <ref name="mei_nameLink"/>
         <ref name="mei_roleName"/>
      </choice>
   </define>
   <define name="mei_addName">
      <element name="addName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(additional
            name) – Contains an additional name component, such as a nickname, epithet, or alias, or
            any other descriptive phrase used within a personal name.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_bloc">
      <element name="bloc">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains the
            name of a geo-political unit consisting of two or more nation states or
            countries.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_corpName">
      <element name="corpName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(corporate
            name) – Identifies an organization or group of people that acts as a single
            entity.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_country">
      <element name="country">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains the
            name of a geo-political unit, such as a nation, country, colony, or commonwealth, larger
            than or administratively superior to a region and smaller than a bloc.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_district">
      <element name="district">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains the
            name of any kind of subdivision of a settlement, such as a parish, ward, or other
            administrative or geographic unit.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_famName">
      <element name="famName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(family
            name) – Contains a family (inherited) name, as opposed to a given, baptismal, or nick
            name.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_foreName">
      <element name="foreName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a
            forename, given or baptismal name.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_genName">
      <element name="genName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >(generational name component) – Contains a name component used to distinguish otherwise
            similar names on the basis of the relative ages or generations of the persons
            named.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_geogFeat">
      <element name="geogFeat">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
            >(geographical feature name) – Contains a common noun identifying a geographical
            feature.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_geogName">
      <element name="geogName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(geographic
            name) – The proper noun designation for a place, natural feature, or political
            jurisdiction.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_nameLink">
      <element name="nameLink">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(name link)
            – Contains a connecting phrase or link used within a name but not regarded as part of
            it, such as "van der" or "of", "from", etc.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_periodName">
      <element name="periodName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(period
            name) – A label that describes a period of time, such as 'Baroque' or '3rd Style
            period'.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </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.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
               <ref name="mei_model.persNamePart"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_postBox">
      <element name="postBox">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(postal box
            or post office box) contains a number or other identifier for some postal delivery point
            other than a street address.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_postCode">
      <element name="postCode">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(postal
            code) contains a numerical or alphanumeric code used as part of a postal address to
            simplify sorting or delivery of mail.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_region">
      <element name="region">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains the
            name of an administrative unit such as a state, province, or county, larger than a
            settlement, but smaller than a country.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_roleName">
      <element name="roleName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(role name)
            – Contains a name component which indicates that the referent has a particular role or
            position in society, such as an official title or rank.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_settlement">
      <element name="settlement">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains the
            name of a settlement such as a city, town, or village identified as a single
            geo-political or administrative unit.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_street">
      <element name="street">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">full street
            address including any name or number identifying a building as well as the name of the
            street or route on which it is located.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_styleName">
      <element name="styleName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(style name)
            – A label for a characteristic style of writing or performance, such as 'bebop' or
            'rock-n-roll'.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.edit.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.name.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.alignment.attributes">
      <ref name="mei_att.alignment.attribute.when"/>
   </define>
   <define name="mei_att.alignment.attribute.when">
      <optional>
         <attribute name="when">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates
               the point of occurrence of this feature along a time line. Its value must be the ID
               of a when 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.alignment-check_whenTarget-constraint-73">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@when">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@when attribute should have
            content.</sch:assert>
         <sch:assert role="warning"
            test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:when/@xml:id">A
            value in @when should correspond to the @xml:id attribute of a when
            element.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_avFile">
      <element name="avFile">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(audio/video
            file) – References an external digital audio or video file.</a:documentation>
         <zeroOrMore>
            <ref name="mei_clip"/>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-avFile-avFile_child_of_clip-constraint-74">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:clip/mei:avFile">
               <sch:assert test="count(mei:*) = 0">An avFile child of clip cannot have
                  children.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.bibl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.internetmedia.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_clip">
      <element name="clip">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Defines a
            time segment of interest within a recording or within a digital audio or video
            file.</a:documentation>
         <zeroOrMore>
            <ref name="mei_avFile"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_when"/>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-clip-betype_required_when_begin_or_end-constraint-75">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:clip[@begin or @end]">
               <sch:assert role="warning" test="@betype or ancestor::mei:*[@betype]">When @begin or
                  @end is used, @betype should appear on clip or one of its ancestors.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.mediabounds.attributes"/>
         <ref name="mei_att.startid.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_performance">
      <element name="performance">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
            presentation of one or more musical works.</a:documentation>
         <zeroOrMore>
            <ref name="mei_recording"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_recording">
      <element name="recording">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A recorded
            performance.</a:documentation>
         <zeroOrMore>
            <ref name="mei_avFile"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_when"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_clip"/>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-recording-betype_required_when_begin_or_end-constraint-76">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:recording[@begin or @end]">
               <sch:assert role="warning" test="@betype">When @begin or @end is used, @betype should
                  be present.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.mediabounds.attributes"/>
         <ref name="mei_att.startid.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_when">
      <element name="when">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Indicates a
            point in time either absolutely (using the absolute attribute), or relative to another
            when element (using the since, interval and inttype attributes).</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-when-check_when_interval-constraint-77">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:when[@interval]">
               <sch:assert role="warning" test="@since">@since should be present when @interval is
                  used.</sch:assert>
               <sch:assert role="warning"
                  test="every $i in tokenize(@since, '\s+') satisfies substring($i,2)=//mei:when/@xml:id"
                  >The value in @since should correspond to the @xml:id attribute of a when
                  element.</sch:assert>
               <sch:assert role="warning" test="@inttype">@inttype should be present when @interval
                  is used.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-when-check_when_interval-constraint-78">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:when[matches(@interval, '^[0-9]+$')]">
               <sch:assert test="not(@inttype eq 'time')">When @interval contains an integer value,
                  @inttype cannot be 'time'.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-when-check_when_interval-constraint-79">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:when[matches(@interval, ':')]">
               <sch:assert test="@inttype eq 'time'">When @interval contains a time value, @inttype
                  must be 'time'.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-when-check_when_absolute-constraint-80">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:when[@absolute]">
               <sch:assert role="warning" test="@abstype or ancestor::mei:*[@betype]">When @absolute
                  is present, @abstype should be present or @betype should be present on an
                  ancestor.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.datapointing.attributes"/>
         <optional>
            <attribute name="absolute">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Provides an absolute value for the time point.</a:documentation>
               <text/>
            </attribute>
         </optional>
         <optional>
            <attribute name="interval">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Specifies the time interval between this time point and the one designated by the
                  since attribute. This attribute can only be interpreted meaningfully in
                  conjunction with the inttype attribute.</a:documentation>
               <choice>
                  <data type="decimal">
                     <param name="minInclusive">1</param>
                  </data>
                  <data type="time"/>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="abstype">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Specifies the kind of values used in the absolute attribute.</a:documentation>
               <ref name="mei_data.BETYPE"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="inttype">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Specifies the kind of values used in the interval attribute.</a:documentation>
               <ref name="mei_data.BETYPE"/>
            </attribute>
         </optional>
         <optional>
            <attribute name="since">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Identifies the reference point for determining the time of the current when
                  element, which is obtained by adding the interval to the time of the reference
                  point. The value should be the ID of another when element within the same parent
                  element. If the since attribute is omitted and the absolute attribute is not
                  specified, then the reference point is understood to be the immediately preceding
                  when element.</a:documentation>
               <ref name="mei_data.URI"/>
            </attribute>
         </optional>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-when-since-check_sinceTarget-constraint-81">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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="@since">
               <sch:assert role="warning" test="not(normalize-space(.) eq '')">@since attribute
                  should have content.</sch:assert>
               <sch:assert role="warning"
                  test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:when/@xml:id"
                  >The value in @since should correspond to the @xml:id attribute of a when
                  element.</sch:assert>
            </sch:rule>
         </pattern>
         <empty/>
      </element>
   </define>
   <define name="mei_model.locrefLike">
      <choice>
         <ref name="mei_ptr"/>
         <ref name="mei_ref"/>
      </choice>
   </define>
   <define name="mei_model.locrefLike_alternation">
      <choice>
         <ref name="mei_ptr"/>
         <ref name="mei_ref"/>
      </choice>
   </define>
   <define name="mei_model.locrefLike_sequence">
      <ref name="mei_ptr"/>
      <ref name="mei_ref"/>
   </define>
   <define name="mei_model.locrefLike_sequenceOptional">
      <optional>
         <ref name="mei_ptr"/>
      </optional>
      <optional>
         <ref name="mei_ref"/>
      </optional>
   </define>
   <define name="mei_model.locrefLike_sequenceOptionalRepeatable">
      <zeroOrMore>
         <ref name="mei_ptr"/>
      </zeroOrMore>
      <zeroOrMore>
         <ref name="mei_ref"/>
      </zeroOrMore>
   </define>
   <define name="mei_model.locrefLike_sequenceRepeatable">
      <oneOrMore>
         <ref name="mei_ptr"/>
      </oneOrMore>
      <oneOrMore>
         <ref name="mei_ref"/>
      </oneOrMore>
   </define>
   <define name="mei_ptr">
      <element name="ptr">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(pointer) –
            Defines a pointer to another location, using only attributes to describe the
            destination.</a:documentation>
         <empty/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.internetmedia.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.targeteval.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_ref">
      <element name="ref">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(reference)
            – Defines a reference to another location that may contain text and sub-elements to
            describe the destination.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.internetmedia.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.pointing.attributes"/>
         <ref name="mei_att.targeteval.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.note.ges.tablature.attributes">
      <ref name="mei_att.note.ges.tablature.attribute.tab.fret"/>
      <ref name="mei_att.note.ges.tablature.attribute.tab.string"/>
   </define>
   <define name="mei_att.note.ges.tablature.attribute.tab.fret">
      <optional>
         <attribute name="tab.fret">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Records
               the fret at which a string should be stopped.</a:documentation>
            <ref name="mei_data.FRETNUMBER"/>
         </attribute>
      </optional>
   </define>
   <define name="mei_att.note.ges.tablature.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.staffDef.ges.tablature.attributes">
      <ref name="mei_att.staffDef.ges.tablature.attribute.tab.strings"/>
   </define>
   <define name="mei_att.staffDef.ges.tablature.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_model.backLike">
      <choice>
         <ref name="mei_back"/>
      </choice>
   </define>
   <define name="mei_model.divLike">
      <choice>
         <ref name="mei_div"/>
      </choice>
   </define>
   <define name="mei_model.frontLike">
      <choice>
         <ref name="mei_front"/>
      </choice>
   </define>
   <define name="mei_model.lgLike">
      <choice>
         <ref name="mei_lg"/>
      </choice>
   </define>
   <define name="mei_model.listLike">
      <choice>
         <ref name="mei_biblList"/>
         <ref name="mei_castList"/>
         <ref name="mei_eventList"/>
         <ref name="mei_list"/>
      </choice>
   </define>
   <define name="mei_model.lLike">
      <choice>
         <ref name="mei_l"/>
      </choice>
   </define>
   <define name="mei_model.quoteLike">
      <choice>
         <ref name="mei_quote"/>
      </choice>
   </define>
   <define name="mei_back">
      <element name="back">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(back
            matter) – Contains any appendixes, advertisements, indexes, etc. following the main body
            of a musical text.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.divLike"/>
               <ref name="mei_model.frontPart"/>
               <ref name="mei_model.milestoneLike.text"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_front">
      <element name="front">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(front
            matter) – Bundles prefatory text found before the start of the musical
            text.</a:documentation>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.divLike"/>
               <ref name="mei_model.frontPart"/>
               <ref name="mei_model.milestoneLike.text"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_l">
      <element name="l">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(line of
            text) – Contains a single line of text within a line group.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_lg">
      <element name="lg">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(line group)
            – May be used for any section of text that is organized as a group of lines; however, it
            is most often used for a group of verse lines functioning as a formal unit, e.g. a
            stanza, refrain, verse paragraph, etc.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <choice>
            <ref name="mei_model.lLike"/>
            <ref name="mei_model.lgLike"/>
         </choice>
         <zeroOrMore>
            <choice>
               <ref name="mei_model.lLike"/>
               <ref name="mei_model.lgLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.declaring.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.xy.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_li">
      <element name="li">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(list item)
            – Single item in a &lt;list&gt;.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textcomponentLike"/>
               <ref name="mei_model.textphraseLike"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_list">
      <element name="list">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A formatting
            element that contains a series of items separated from one another and arranged in a
            linear, often vertical, sequence.</a:documentation>
         <zeroOrMore>
            <ref name="mei_model.headLike"/>
         </zeroOrMore>
         <zeroOrMore>
            <optional>
               <ref name="mei_model.labelLike"/>
            </optional>
            <ref name="mei_li"/>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-list-list_type_constraint-constraint-82">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:list[@type='gloss']">
               <sch:assert test="count(mei:label) = count(mei:li)">In a list of type "gloss" all
                  items must be immediately preceded by a label.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.xy.attributes"/>
         <optional>
            <attribute name="form">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Used
                  to indicate the format of a list. In a "simple" list, li elements are not numbered
                  or bulleted. In a "marked" list, the sequence of the list items is not critical,
                  and a bullet, box, dash, or other character is displayed at the start of each
                  item. In an "ordered" list, the sequence of the items is important, and each li is
                  lettered or numbered. Style sheet functions should be used to specify the mark or
                  numeration system for each li.</a:documentation>
               <choice>
                  <value>simple</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Items are not numbered or bulleted.</a:documentation>
                  <value>marked</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Bullet, box, dash, or other character is displayed before each
                     item.</a:documentation>
                  <value>ordered</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Each item is numbered or lettered.</a:documentation>
               </choice>
            </attribute>
         </optional>
         <optional>
            <attribute name="type">
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                  >Captures the nature of the content of a list. Suggested values include: 1] gloss;
                  2] index; 3] instructions; 4] litany; 5] syllogism</a:documentation>
               <choice>
                  <value>gloss</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Each list item glosses some term or concept, which is given by a label element
                     preceding the list item.</a:documentation>
                  <value>index</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Each list item is an entry in an index such as the alphabetical topical index
                     at the back of a print volume.</a:documentation>
                  <value>instructions</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Each list item is a step in a sequence of instructions, as in a
                     recipe.</a:documentation>
                  <value>litany</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Each list item is one of a sequence of petitions, supplications or
                     invocations, typically in a religious ritual.</a:documentation>
                  <value>syllogism</value>
                  <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
                     >Each list item is part of an argument consisting of two or more propositions
                     and a final conclusion derived from them.</a:documentation>
                  <data type="NMTOKEN"/>
               </choice>
            </attribute>
         </optional>
         <empty/>
      </element>
   </define>
   <define name="mei_quote">
      <element name="quote">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(block
            quote) – A formatting element that designates an extended quotation; that is, a passage
            attributed to a source external to the text and normally set off from the text by
            spacing or other typographic distinction.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.paracontentPart"/>
               <ref name="mei_p"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.xy.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_att.altsym.attributes">
      <ref name="mei_att.altsym.attribute.altsym"/>
   </define>
   <define name="mei_att.altsym.attribute.altsym">
      <optional>
         <attribute name="altsym">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Provides
               a way of pointing to a user-defined symbol. It must contain an ID of a
               &lt;symbolDef&gt; 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.altsym-altsym-check_altsymTarget-constraint-83">
      <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         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="@altsym">
         <sch:assert role="warning" test="not(normalize-space(.) eq '')">@altsym attribute should
            have content.</sch:assert>
         <sch:assert role="warning"
            test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:symbolDef/@xml:id"
            >The value in @altsym should correspond to the @xml:id attribute of a symbolDef
            element.</sch:assert>
         <sch:assert test="not(substring(., 2) eq ancestor::mei:symbolDef/@xml:id)">The value in
            @altsym must not correspond to the @xml:id attribute of a symbolDef
            ancestor.</sch:assert>
      </sch:rule>
   </pattern>
   <define name="mei_model.graphicprimitiveLike">
      <choice>
         <ref name="mei_anchoredText"/>
         <ref name="mei_curve"/>
         <ref name="mei_line"/>
      </choice>
   </define>
   <define name="mei_model.symbolTableLike">
      <choice>
         <ref name="mei_symbolTable"/>
      </choice>
   </define>
   <define name="mei_anchoredText">
      <element name="anchoredText">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Container
            for text that is fixed to a particular page location, regardless of changes made to the
            layout of the measures around it.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
               <ref name="mei_model.editLike"/>
               <ref name="mei_model.transcriptionLike"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.lang.attributes"/>
         <ref name="mei_att.startid.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.visualoffset.attributes"/>
         <ref name="mei_att.xy.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_curve">
      <element name="curve">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A curved
            line that cannot be represented by a more specific element, such as a
            slur.</a:documentation>
         <empty/>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-curve-symbolDef_curve_attributes_required-constraint-84">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:curve[ancestor::mei:symbolDef]">
               <sch:assert test="@startid or (@x and @y)">In the symbolDef context, curve must have
                  either a startid attribute or x and y attributes.</sch:assert>
               <sch:assert test="@endid or (@x2 and @y2)">In the symbolDef context, curve must have
                  either an endid attribute or both x2 and y2 attributes.</sch:assert>
               <sch:assert test="@bezier or @bulge">In the symbolDef context, curve must have either
                  a bezier or bulge attribute.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.color.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.curvature.attributes"/>
         <ref name="mei_att.curverend.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.startendid.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.visualoffset.attributes"/>
         <ref name="mei_att.visualoffset2.attributes"/>
         <ref name="mei_att.xy.attributes"/>
         <ref name="mei_att.xy2.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_line">
      <element name="line">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A visual
            line that cannot be represented by a more specific; i.e., semantic,
            element.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_model.textphraseLike.limited"/>
            </choice>
         </zeroOrMore>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-line-line_start-_and_end-type_attributes_required-constraint-85">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:line[ancestor::mei:symbolDef]">
               <sch:assert test="@startid or (@x and @y)">When used in the symbolDef context, must
                  have either a startid attribute or x and y attributes.</sch:assert>
               <sch:assert test="@endid or (@x2 and @y2)">When used in the symbolDef context, must
                  have either an endid attribute or both x2 and y2 attributes.</sch:assert>
            </sch:rule>
         </pattern>
         <pattern xmlns="http://purl.oclc.org/dsdl/schematron"
            id="mei-line-line_start-_and_end-type_attributes_required-constraint-86">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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:line[not(ancestor::mei:symbolDef)]">
               <sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real or (@x and @y)"
                  >When used in the score context, must have a startid, tstamp, tstamp.ges or
                  tstamp.real attribute or both x and y attributes.</sch:assert>
               <sch:assert test="@dur or @dur.ges or @endid or @tstamp2 or (@x2 and @y2)">When used
                  in the score context, must have an endid, dur, dur.ges, or tstamp2 attribute or
                  both x2 and y2 attributes.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.line.anl.attributes"/>
         <ref name="mei_att.line.ges.attributes"/>
         <ref name="mei_att.line.log.attributes"/>
         <ref name="mei_att.line.vis.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_mapping">
      <element name="mapping">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">One or more
            characters which are related to the parent symbol in some respect, as specified by the
            type attribute.</a:documentation>
         <zeroOrMore>
            <choice>
               <text/>
               <ref name="mei_symbol"/>
            </choice>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.responsibility.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_propName">
      <element name="propName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(property
            name) – Name of a property of the symbol.</a:documentation>
         <text/>
         <ref name="mei_att.common.attributes"/>
         <attribute name="type">
            <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               >Characterizes the property name.</a:documentation>
            <choice>
               <value>unicode</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                  registered Unicode normative or informative property name.</a:documentation>
               <value>local</value>
               <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">A
                  locally defined name.</a:documentation>
            </choice>
         </attribute>
         <empty/>
      </element>
   </define>
   <define name="mei_propValue">
      <element name="propValue">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(property
            value) – A single property value.</a:documentation>
         <text/>
         <ref name="mei_att.common.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-87">
            <sch:rule xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
               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: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 @glyphname or @glyphnum">In the symbolDef context,
                  symbol must have one of the following attributes: altsym, glyphname, or
                  glyphnum.</sch:assert>
            </sch:rule>
         </pattern>
         <ref name="mei_att.altsym.attributes"/>
         <ref name="mei_att.authorized.attributes"/>
         <ref name="mei_att.color.attributes"/>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.common.anl.attributes"/>
         <ref name="mei_att.extsym.attributes"/>
         <ref name="mei_att.facsimile.attributes"/>
         <ref name="mei_att.scalable.attributes"/>
         <ref name="mei_att.startid.attributes"/>
         <ref name="mei_att.typed.attributes"/>
         <ref name="mei_att.typography.attributes"/>
         <ref name="mei_att.visualoffset.attributes"/>
         <ref name="mei_att.xy.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_symbolDef">
      <element name="symbolDef">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(symbol
            definition) – Declaration of an individual symbol in a symbolTable.</a:documentation>
         <optional>
            <ref name="mei_symName"/>
         </optional>
         <zeroOrMore>
            <ref name="mei_symProp"/>
         </zeroOrMore>
         <zeroOrMore>
            <ref name="mei_mapping"/>
         </zeroOrMore>
         <choice>
            <optional>
               <ref name="svg_svg"/>
            </optional>
            <zeroOrMore>
               <choice>
                  <ref name="mei_model.graphicprimitiveLike"/>
                  <ref name="mei_symbol"/>
                  <ref name="mei_graphic"/>
               </choice>
            </zeroOrMore>
         </choice>
         <zeroOrMore>
            <ref name="mei_model.annotLike"/>
         </zeroOrMore>
         <ref name="mei_att.common.attributes"/>
         <ref name="mei_att.coordinated.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_symName">
      <element name="symName">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(symbol
            name) – Contains the name of a symbol, expressed following Unicode
            conventions.</a:documentation>
         <text/>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_symProp">
      <element name="symProp">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">(symbol
            property) – Provides a name and value for some property of the parent
            symbol.</a:documentation>
         <ref name="mei_propName"/>
         <ref name="mei_propValue"/>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <define name="mei_symbolTable">
      <element name="symbolTable">
         <a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">Contains a
            set of user-defined symbols.</a:documentation>
         <oneOrMore>
            <ref name="mei_symbolDef"/>
         </oneOrMore>
         <ref name="mei_att.common.attributes"/>
         <empty/>
      </element>
   </define>
   <start>
      <choice>
         <ref name="mei_mei"/>
         <ref name="mei_meiHead"/>
         <ref name="mei_meiCorpus"/>
         <ref name="mei_music"/>
      </choice>
   </start>
   <ns xmlns="http://purl.oclc.org/dsdl/schematron" prefix="mei"
      uri="http://www.music-encoding.org/ns/mei"/>
   <ns xmlns="http://purl.oclc.org/dsdl/schematron" prefix="xlink"
      uri="http://www.w3.org/1999/xlink"/>
</grammar>
