<elementSpec ident="tabGrp" module="MEI.stringtab">
<desc xml:lang="en">A group of simultaneous tab notes, comparable to a
<gi scheme="MEI">chord</gi> in CMN. Rarely, may also contain rests, as in some "German" lute tablatures.</desc>
<classes>
<memberOf key="att.common"/>
<memberOf key="att.facsimile"/>
<memberOf key="att.tabGrp.log"/>
<memberOf key="att.tabGrp.vis"/>
<memberOf key="att.tabGrp.ges"/>
<memberOf key="att.tabGrp.anl"/>
<memberOf key="model.eventLike"/>
</classes>
<content>
<rng:interleave>
<rng:choice>
</rng:choice>
<rng:zeroOrMore>
<rng:choice>
<!-- alternative: model.chordPart – This would give note and artic -->
<rng:ref name="model.transcriptionLike"/>
<rng:ref name="model.editLike"/>
<rng:ref name="model.appLike"/>
</rng:choice>
</rng:zeroOrMore>
</rng:interleave>
</content>
<constraintSpec ident="check_tabGrp_in_beam" scheme="schematron">
<constraint>
<sch:rule context="mei:tabGrp[ancestor::mei:beam]">
<sch:assert test="count(mei:tabDurSym) = 1" role="warning">A tabGrp inside of a beam must contain one tabDurSym.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
</elementSpec>