<sch:rule context="@head.altsym">
<sch:assert role="warning" test="not(normalize-space(.) eq '')">@head.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 @head.altsym should correspond to the @xml:id attribute of a symbolDef
element.</sch:assert>
</sch:rule>
<sch:rule context="mei:*[lower-case(@head.auth) eq 'smufl']">
<sch:assert test="matches(@head.shape, '^#x') or matches(@head.shape, '^U+')">When
@head.auth matches 'smufl', @head.shape must contain a numeric glyph reference in
hexadecimal notation, e.g. "#xE000" or "U+E000".</sch:assert>
</sch:rule>
<sch:rule context="mei:*[(matches(@head.shape, '#x') or matches(@head.shape, 'U+')) and (lower-case(@head.auth)
eq 'smufl')]">
<sch:assert role="warning" test="matches(normalize-space(@head.shape), '^(#x|U\+)E([0-9AB][0-9A-F][0-9A-F]|C[0-9A][0-9A-F]|CB[0-9A-F])$')">SMuFL version 1.18 uses the range U+E000 - U+ECBF.</sch:assert>
</sch:rule>
<classSpec ident="att.noteHeads" module="MEI.shared" type="atts">
<desc>Attributes pertaining to the notehead part of a note.</desc>
<attList org="group">
<attDef ident="head.altsym" usage="opt">
<desc>Provides a way of pointing to a user-defined symbol. It must contain a reference to
an
ID of a
<gi scheme="MEI">symbolDef</gi> element elsewhere in the document.</desc>
<constraintSpec ident="check_head.altsymTarget" scheme="isoschematron">
<constraint>
<sch:rule context="@head.altsym">
<sch:assert role="warning" test="not(normalize-space(.) eq '')">@head.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 @head.altsym should correspond to the @xml:id attribute of a symbolDef
element.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
</attDef>
<attDef ident="head.auth" usage="opt">
<desc>A name or label associated with the controlled vocabulary from which a numerical value
of
<att scheme="TEI">head.shape</att> is taken.</desc>
<datatype maxOccurs="1" minOccurs="1">
<rng:data type="NMTOKEN"/>
</datatype>
<constraintSpec ident="check_head.auth" scheme="isoschematron">
<constraint>
<sch:rule context="mei:*[lower-case(@head.auth) eq 'smufl']">
<sch:assert test="matches(@head.shape, '^#x') or matches(@head.shape, '^U+')">When
@head.auth matches 'smufl', @head.shape must contain a numeric glyph reference in
hexadecimal notation, e.g. "#xE000" or "U+E000".</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
<valList type="semi">
<valItem ident="smufl">
<desc>Standard Music Font Layout.</desc>
</valItem>
</valList>
</attDef>
<attDef ident="head.color" usage="opt">
<desc>Captures the overall color of a notehead.</desc>
</attDef>
<attDef ident="head.fill" usage="opt">
<desc>Describes how/if the notehead is filled.</desc>
</attDef>
<attDef ident="head.fillcolor" usage="opt">
<desc>Captures the fill color of a notehead if different from the overall note color.</desc>
</attDef>
<attDef ident="head.mod" usage="opt">
<desc>Records any additional symbols applied to the notehead.</desc>
</attDef>
<attDef ident="head.rotation" usage="opt">
<desc>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.</desc>
</attDef>
<attDef ident="head.shape" usage="opt">
<desc>Used to override the head shape normally used for the given duration.</desc>
<constraintSpec ident="check_headshape_num" scheme="isoschematron">
<constraint>
<sch:rule context="mei:*[(matches(@head.shape, '#x') or matches(@head.shape, 'U+')) and (lower-case(@head.auth)
eq 'smufl')]">
<sch:assert role="warning" test="matches(normalize-space(@head.shape), '^(#x|U\+)E([0-9AB][0-9A-F][0-9A-F]|C[0-9A][0-9A-F]|CB[0-9A-F])$')">SMuFL version 1.18 uses the range U+E000 - U+ECBF.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
</attDef>
<attDef ident="head.visible" usage="opt">
<desc>Indicates if a feature should be rendered when the notation is presented graphically
or sounded when it is presented in an aural form.</desc>
</attDef>
</attList>
</classSpec>