Mensural notes can have multiple stems and these may have various forms, directions, and types of flags. Multiple stem elements can be encoded as children of a single note. The attributes pos, length, form, and dir allow to encode different positions, lengths, forms, and directions for each these stems. The attributes flag.pos and flag.form also allow to encode different types of flags for each of the stems.
<elementSpec ident="stem" module="MEI.mensural">
<desc xml:lang="en">A stem element.</desc>
<classes>
<memberOf key="att.common"/>
<memberOf key="att.facsimile"/>
<memberOf key="att.stem.log"/>
<memberOf key="att.stem.vis"/>
<memberOf key="att.stem.ges"/>
<memberOf key="att.stem.anl"/>
</classes>
<content>
<rng:empty/>
</content>
<constraintSpec ident="Check_stem" scheme="schematron">
<constraint>
<sch:rule context="mei:stem">
<sch:assert test="not(ancestor::mei:note/@*[starts-with(local-name(),'stem.')])">A note with nested stem elements must not have @stem.* attributes.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
<remarks xml:lang="en">
<p>Mensural notes can have multiple stems and these may have various forms, directions,
and types of flags.
Multiple stem elements can be encoded as children of a single note. The attributes
<att>pos</att>,
<att>length</att>, <att>form</att>, and <att>dir</att> allow to encode different positions, lengths,
forms, and directions for each these stems. The attributes <att>flag.pos</att> and <att>flag.form</att>
also allow to encode different types of flags for each of the stems.</p>
</remarks>
</elementSpec>