<classSpec ident="att.harm.log" module="MEI.harmony" type="atts">
<desc xml:lang="en">Logical domain attributes.</desc>
<classes>
<memberOf key="att.controlEvent"/>
<memberOf key="att.duration.additive"/>
<memberOf key="att.startEndId"/>
<memberOf key="att.timestamp2.log"/>
</classes>
<attList>
<attDef ident="chordref" usage="opt">
<gloss versionDate="2022-10-30" xml:lang="en">chord reference</gloss>
<desc xml:lang="en">Contains a reference to a
<gi scheme="MEI">chordDef</gi> element elsewhere in the
document.</desc>
<constraintSpec ident="check_chordrefTarget" scheme="schematron">
<constraint>
<sch:rule 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>
</constraint>
</constraintSpec>
</attDef>
</attList>
</classSpec>