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>
<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>