<elementSpec ident="fingGrp" module="MEI.fingering">
<gloss xml:lang="en">finger group</gloss>
<desc xml:lang="en">A group of individual fingers in a fingering indication.</desc>
<classes>
<memberOf key="att.common"/>
<memberOf key="att.facsimile"/>
<memberOf key="att.fingGrp.anl"/>
<memberOf key="att.fingGrp.ges"/>
<memberOf key="att.fingGrp.log"/>
<memberOf key="att.fingGrp.vis"/>
<memberOf key="model.fingeringLike"/>
</classes>
<content>
<rng:zeroOrMore>
<rng:choice>
<rng:ref name="model.fingeringLike"/>
<rng:ref name="model.editLike"/>
<rng:ref name="model.transcriptionLike"/>
</rng:choice>
</rng:zeroOrMore>
</content>
<constraintSpec ident="require_fingeringLike_children" scheme="schematron">
<constraint>
<sch:rule context="mei:fingGrp">
<sch:assert test="count(mei:fing) + count(mei:fingGrp) > 1">At least 2 fing or fingGrp
elements are required.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
<constraintSpec ident="check_fingGrp_start-type_attributes" scheme="schematron">
<constraint>
<sch:pattern>
<sch:rule context="mei:fingGrp[not(ancestor::mei:fingGrp)][@tstamp or @startid]">
<sch:assert test="not(child::mei:*[@tstamp or @startid])">When @tstamp or @startid is
present on fingGrp, its child elements cannot have a @tstamp or @startid
attribute.</sch:assert>
</sch:rule>
<sch:rule context="mei:fingGrp[not(ancestor::mei:fingGrp)][not(@tstamp or @startid)]">
<sch:assert test="count(descendant::mei:*[@tstamp or @startid]) = count(child::mei:*[local-name()='fing'
or local-name()='fingGrp'])">When @tstamp or @startid is not present on fingGrp, each of its child elements must
have a @tstamp or @startid attribute.</sch:assert>
</sch:rule>
</sch:pattern>
</constraint>
</constraintSpec>
</elementSpec>