It is a semantic error not to provide one of the following: the x and y pair of attributes, the pname and oct pair of attributes, or the loc attribute.
<elementSpec ident="keyAccid" module="MEI.shared">
<gloss versionDate="2022-05-18" xml:lang="en">key accidental</gloss>
<desc xml:lang="en">Accidental in a key signature.</desc>
<classes>
<memberOf key="att.common"/>
<memberOf key="att.facsimile"/>
<memberOf key="att.keyAccid.anl"/>
<memberOf key="att.keyAccid.ges"/>
<memberOf key="att.keyAccid.log"/>
<memberOf key="att.keyAccid.vis"/>
<memberOf key="model.keyAccidLike"/>
</classes>
<content>
<rng:empty/>
</content>
<constraintSpec ident="Check_keyAccidPlacement" scheme="schematron">
<constraint>
<sch:rule context="mei:keyAccid">
<sch:assert test="(@x and @y) or @pname or @loc">One of the following is required: @x and
@y attribute pair, @pname attribute, or @loc attribute. </sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
<attList>
<attDef ident="form" usage="opt">
<desc xml:lang="en">Specifies whether enharmonic (written) values or implicit ("perform-able") values
are
allowed.</desc>
<valList type="closed">
<valItem ident="implicit">
<desc xml:lang="en">Only performed values (sharp, flat, natural) allowed.</desc>
</valItem>
<valItem ident="explicit">
<desc xml:lang="en">All enharmonic (written) values allowed.</desc>
</valItem>
</valList>
</attDef>
</attList>
<remarks xml:lang="en">
<p>It is a semantic error not to provide one of the following: the <att>x</att> and
<att>y</att> pair of attributes, the <att>pname</att> and <att>oct</att> pair of attributes,
or the <att>loc</att> attribute.</p>
</remarks>
</elementSpec>