<elementSpec ident="tempo" module="MEI.shared">
<desc xml:lang="en">Text and symbols descriptive of tempo, mood, or style,
<abbr>e.g.</abbr>, "allarg.", "a tempo",
"cantabile", "Moderato", "♩=60", "Moderato ♩ =60").</desc>
<classes>
<memberOf key="att.common"/>
<memberOf key="att.bibl"/>
<memberOf key="att.facsimile"/>
<memberOf key="att.lang"/>
<memberOf key="att.tempo.anl"/>
<memberOf key="att.tempo.ges"/>
<memberOf key="att.tempo.log"/>
<memberOf key="att.tempo.vis"/>
<memberOf key="model.controlEventLike"/>
<memberOf key="model.workIdent"/>
</classes>
<content>
<rng:zeroOrMore>
<rng:choice>
<rng:text/>
<rng:ref name="model.textPhraseLike.limited"/>
<rng:ref name="model.graphicPrimitiveLike"/>
<rng:ref name="model.editLike"/>
<rng:ref name="model.transcriptionLike"/>
</rng:choice>
</rng:zeroOrMore>
</content>
<constraintSpec ident="tempo_in_header_disallow_most_attrs" scheme="schematron">
<constraint>
<sch:rule context="mei:tempo[not(ancestor::mei:score or ancestor::mei:part)]">
<sch:assert test="not(@*[name() != 'analog' and name() != 'class' and name() != 'label' and name()
!= 'mm' and name() != 'mm.dots' and name() != 'translit' and name() != 'type' and
name() != 'mm.unit' and name() != 'n' and name() != 'xml:base' and name() != 'xml:id'
and name() != 'xml:lang'])">Only analog, class, label, mm, mm.dots, mm.unit, n, translit, type, xml:base, xml:id,
and xml:lang attributes are allowed when tempo is not a descendant of a score or
part.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
<constraintSpec ident="tempo_start-type_attributes_required" scheme="schematron">
<constraint>
<sch:rule context="mei:tempo[not(ancestor::mei:syllable) and not(ancestor::mei:work) and not(ancestor::mei:expression)
and not(count(ancestor::mei:*) = 0)]">
<sch:assert test="@startid or @tstamp or @tstamp.ges or @tstamp.real">Must have one of the
attributes: startid, tstamp, tstamp.ges or tstamp.real.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
</elementSpec>