aboveorder(optional)Describes vertical order of items printed above a staff, from closest to farthest
away
from the staff.
One or more values from data.STAFFITEM, separated by spaces.
bar.len(optional)States the length of bar lines in virtual units. The value must be greater than 0
and
is typically equal to 2 times (the number of staff lines - 1); e.g., a value of 8 for a
5-line staff.
Value is a decimal number.
bar.place(optional)Denotes the staff location of bar lines, if the length is non-standard; that is, not
equal to 2 times (the number of staff lines - 1).
Value conforms to data.STAFFLOC.
beam.rend(optional)Encodes whether a beam is "feathered" and in which direction. Allowed values are: "acc" (Beam lines grow farther apart from left to right.), "rit" (Beam lines grow closer together from left to right.), "norm" (Beam lines are equally-spaced over the entire length of the beam.)
beam.rests(optional)Indicates whether automatically-drawn beams should include rests shorter than a
quarter note duration.
Value conforms to data.BOOLEAN.
beloworder(optional)Describes vertical order of items printed below a staff, from closest to farthest
away
from the staff.
One or more values from data.STAFFITEM, separated by spaces.
betweenorder(optional)Describes vertical order of items printed between staves, from top to bottom.
One or more values from data.STAFFITEM, separated by spaces.
class(optional)Contains one or more URIs which denote classification terms that apply to the entity
bearing this attribute.
One or more values from data.URI, separated by spaces.
clef.line(optional)Contains a default value for the position of the clef. The value must be in the range
between 1 and the number of lines on the staff. The numbering of lines starts with
the
lowest line of the staff.
Value conforms to data.CLEFLINE.
corresp(optional)Used to point to other elements that correspond to this one in a generic
fashion.
One or more values from data.URI, separated by spaces.
decls(optional)Identifies one or more metadata elements (other than classification terms) within
the
header, which are understood to apply to the element bearing this attribute and its
content.
One or more values from data.URI, separated by spaces.
dur.default(optional)Contains a default duration in those situations when the first note, rest, chord,
etc.
in a measure does not have a duration specified.
Value conforms to data.DURATION.
follows(optional)points to one or more events in a user-defined collection that are known to be
predecessors of the current element.
One or more values from data.URI, separated by spaces.
harm.dist(optional)Records the default distance from the staff of harmonic indications, such as guitar
chord grids or functional labels.
Value conforms to data.MEASUREMENTSIGNED.
instr(optional)Provides a way of pointing to a MIDI instrument definition. It must contain the ID
of
an instrDef element elsewhere in the document.
Value conforms to data.URI.
key.accid(optional)Contains an accidental for the tonic key, if one is required, e.g., if key.pname
equals c and key.accid equals s, then a tonic of C# is indicated.
Value conforms to data.ACCIDENTAL.GESTURAL.
label(optional)Captures text to be used to generate a label for the element to which it’s attached,
a
"tool tip" or prefatory text, for example. Should not be used to record document
content.
Value is plain text.
mensur.color(optional)Records the color of the mensuration sign. Do not confuse this with the musical term
'color' as used in pre-CMN notation.
Value conforms to data.COLOR.
mensur.form(optional)Indicates whether the base symbol is written vertically or horizontally. Allowed values are: "horizontal" (Horizontally oriented.), "vertical" (Vertically oriented.)
mensur.slash(optional)Indicates the number lines added to the mensuration sign. For example, one slash is
added for what we now call 'alla breve'.
Value is a positive integer.
meter.count(optional)Captures the number of beats in a measure, that is, the top number of the meter
signature. It must contain a decimal number or an expression that evaluates to a
decimal number, such as 2+3 or 3*2.
Value is plain text.
meter.showchange(optional)Determines whether the old meter signature should be displayed when the meter
signature changes.
Value conforms to data.BOOLEAN.
meter.sym(optional)Indicates the use of a meter symbol instead of a numeric meter signature, that is,
'C'
for common time or 'C' with a slash for cut time.
Value conforms to data.METERSIGN.
multi.number(optional)Indicates whether programmatically calculated counts of multiple measures of rest
(mRest) and whole measure repeats (mRpt) in parts should be rendered.
Value conforms to data.BOOLEAN.
n(optional)Provides a numeric designation that indicates an element’s position in a sequence
of
similar elements. Its value must be a non-negative integer.
Value is a positive integer, including 0.
notationsubtype(optional)Provides any sub-classification of the notation contained or described by the element,
additional to that given by its notationtype attribute.
Value is a NMTOKEN.
notationtype(optional)Contains classification of the notation contained or described by the element bearing
this attribute.
Value conforms to data.NOTATIONTYPE.
num.default(optional)Along with numbase.default, describes the default duration as a ratio. num.default
is
the first value in the ratio.
Value is a positive integer.
numbase.default(optional)Along with num.default, describes the default duration as a ratio. numbase.default
is
the second value in the ratio.
Value is a positive integer.
oct.default(optional)Contains a default octave specification for use when the first note, rest, chord,
etc.
in a measure does not have an octave value specified.
Value conforms to data.OCTAVE.
ontheline(optional)Determines the placement of notes on a 1-line staff. A value of true places all
notes on the line, while a value of false places stems-up notes above the line and
stems-down notes below the line.
Value conforms to data.BOOLEAN.
ppq(optional)Indicates the number of pulses (sometimes referred to as ticks or divisions) per
quarter note. Unlike MIDI, MEI permits different values for a score and individual
staves.
Value is a positive integer.
precedes(optional)Points to one or more events in a user-defined collection that are known to be
successors of the current element.
One or more values from data.URI, separated by spaces.
proport.num(optional)Together, proport.num and proport.numbase specify a proportional change as a ratio,
e.g., 1:3. Proport.num is for the first value in the ratio.
Value is a positive integer.
proport.numbase(optional)Together, proport.num and proport.numbase specify a proportional change as a ratio,
e.g., 1:3. Proport.numbase is for the second value in the ratio.
Value is a positive integer.
reh.enclose(optional)Describes the enclosing shape for rehearsal marks. Allowed values are: "box" (Enclosed by box.), "circle" (Enclosed by circle.), "none" (No enclosing shape.)
resp(optional)Indicates the agent(s) responsible for some aspect of the text’s transcription,
editing, or encoding. Its value must point to one or more identifiers declared in
the
document header.
One or more values from data.URI, separated by spaces.
sameas(optional)Points to an element that is the same as the current element but is not a literal
copy
of the current element.
One or more values from data.URI, separated by spaces.
spacing(optional)Records the absolute distance (as opposed to the relative distances recorded in scoreDef elements) between this staff and the preceding one in the same
system. This value is meaningless for the first staff in a system since the spacing.system
attribute indicates the spacing between systems.
Value conforms to data.MEASUREMENTSIGNED.
tab.align(optional)Attribute that describes the vertical alignment of tablature symbols. Only applicable
in cases where the symbols' vertical position does not communicate other information,
such as courses (i.e., only in German lute tablature). Typical values are top and bottom.
Value conforms to data.VERTICALALIGNMENT.
tab.anchorline(optional)Used in German lute tablature where the vertical alignment of tab notes is consistent
but cannot be identified using a typical value of tab.align (i.e., top or bottom). Specifies the horizontal strand corresponding to the lines attribute on staffDef that anchors the vertical position of tab notes. This anchorline is used as the vertical
starting position when stacking tab notes into chords. Single tab notes simply occupy
this position. Chords "grow upwards" from this position. If the chord extends further
than the number of available horizontal strands ("lines") above the anchorline, the
entire chord is shifted downward until its top tab note is positioned on the top-most
line. (Note that in German lute tablature, the lines are conceptual rather than visible).
Value conforms to data.CLEFLINE.
tab.courses(optional)This attribute is deprecated in favor of the new tuning element and will be removed in a future version. Provides a *written* pitch and octave
for each open string or course of strings.
One or more values conforming to the pattern "
[a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?([a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?)*".
tab.strings(optional)This attribute is deprecated in favor of the new tuning element and will be removed in a future version. Provides a *written* pitch and octave
for each open string or course of
strings.
One or more values conforming to the pattern "
[a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?([a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?)*".
text.fam(optional)Provides a default value for the font family name of text (other than lyrics) when
this information is not provided on the individual elements.
Value conforms to data.FONTFAMILY.
text.name(optional)Provides a default value for the font name of text (other than lyrics) when this
information is not provided on the individual elements.
Value conforms to data.FONTNAME.
text.size(optional)Provides a default value for the font size of text (other than lyrics) when this
information is not provided on the individual elements.
Value conforms to data.FONTSIZE.
text.style(optional)Provides a default value for the font style of text (other than lyrics) when this
information is not provided on the individual elements.
Value conforms to data.FONTSTYLE.
text.weight(optional)Provides a default value for the font weight for text (other than lyrics) when this
information is not provided on the individual elements.
Value conforms to data.FONTWEIGHT.
trans.diat(optional)Records the amount of diatonic pitch shift, e.g., C to C♯ = 0, C to D♭ = 1, necessary
to calculate the sounded pitch from the written one.
Value is an integer.
trans.semi(optional)Records the amount of pitch shift in semitones, e.g., C to C♯ = 1, C to D♭ = 1,
necessary to calculate the sounded pitch from the written one.
Value is an integer.
type(optional)Designation which characterizes the element in some sense, using any convenient
classification scheme or typology that employs single-token labels.
One or more values of datatype NMTOKEN, separated by spaces.
visible(optional)Indicates if a feature should be rendered when the notation is presented graphically
or sounded when it is presented in an aural form.
Value conforms to data.BOOLEAN.
xml:base(optional)Provides a base URI reference with which applications can resolve relative URI
references into absolute URI references.
Value conforms to data.URI.
xml:id(optional)Regularizes the naming of an element and thus facilitates building links between it
and other resources. Each id attribute within a document must have a unique value.
Value is a valid xml:id.
(MEI.shared) Attributes that form the basis of the att.common class.
xml:base(optional)Provides a base URI reference with which applications can resolve relative URI
references into absolute URI references.
Value conforms to data.URI.
(MEI.shared) Attributes that uniquely identify an element.
xml:id(optional)Regularizes the naming of an element and thus facilitates building links between it
and other resources. Each id attribute within a document must have a unique value.
Value is a valid xml:id.
(MEI.shared)
label(optional)Captures text to be used to generate a label for the element to which it’s attached,
a
"tool tip" or prefatory text, for example. Should not be used to record document
content.
Value is plain text.
(MEI.shared) Attributes that specify element-to-element relationships.
copyof(optional)Points to an element of which the current element is a copy.
Value conforms to data.URI.
corresp(optional)Used to point to other elements that correspond to this one in a generic
fashion.
One or more values from data.URI, separated by spaces.
follows(optional)points to one or more events in a user-defined collection that are known to be
predecessors of the current element.
One or more values from data.URI, separated by spaces.
next(optional)Used to point to the next event(s) in a user-defined collection.
One or more values from data.URI, separated by spaces.
precedes(optional)Points to one or more events in a user-defined collection that are known to be
successors of the current element.
One or more values from data.URI, separated by spaces.
prev(optional)Points to the previous event(s) in a user-defined collection.
One or more values from data.URI, separated by spaces.
sameas(optional)Points to an element that is the same as the current element but is not a literal
copy
of the current element.
One or more values from data.URI, separated by spaces.
synch(optional)Points to elements that are synchronous with the current element.
One or more values from data.URI, separated by spaces.
(MEI.shared) Provides attributes for elements which may be associated with particular
contextual elements within the header.
decls(optional)Identifies one or more metadata elements (other than classification terms) within
the
header, which are understood to apply to the element bearing this attribute and its
content.
One or more values from data.URI, separated by spaces.
(MEI.shared) Attributes used to supply an integer number designation for an element.
n(optional)Provides a numeric designation that indicates an element’s position in a sequence
of
similar elements. Its value must be a non-negative integer.
Value is a positive integer, including 0.
(MEI.shared) Attributes capturing information regarding responsibility for some aspect
of the text's creation, transcription, editing, or encoding.
resp(optional)Indicates the agent(s) responsible for some aspect of the text’s transcription,
editing, or encoding. Its value must point to one or more identifiers declared in
the
document header.
One or more values from data.URI, separated by spaces.
(MEI.shared) Attributes which can be used to classify features.
type(optional)Designation which characterizes the element in some sense, using any convenient
classification scheme or typology that employs single-token labels.
One or more values of datatype NMTOKEN, separated by spaces.
(MEI.shared) Attributes which can be used to classify features.
class(optional)Contains one or more URIs which denote classification terms that apply to the entity
bearing this attribute.
One or more values from data.URI, separated by spaces.
(MEI.analytical) Analytical domain attributes.
(MEI.analytical) Used by staffDef and scoreDef to provide default values for attributes
in the analytical domain that are related to key signatures.
key.accid(optional)Contains an accidental for the tonic key, if one is required, e.g., if key.pname
equals c and key.accid equals s, then a tonic of C# is indicated.
Value conforms to data.ACCIDENTAL.GESTURAL.
key.mode(optional)Indicates major, minor, or other tonality.
Value conforms to data.MODE.
key.pname(optional)Holds the pitch name of the tonic key, e.g., c for the key of C.
Value conforms to data.PITCHNAME.
(MEI.gestural) Gestural domain attributes for staffDef in the CMN repertoire.
(MEI.midi) Attributes which identify a MIDI instrument.
instr(optional)Provides a way of pointing to a MIDI instrument definition. It must contain the ID
of
an instrDef element elsewhere in the document.
Value conforms to data.URI.
(MEI.stringtab) This collection of attributes is deprecated in favor of the new element
and will be removed in a future version. String tablature tuning information.
tab.strings(optional)This attribute is deprecated in favor of the new tuning element and will be removed in a future version. Provides a *written* pitch and octave
for each open string or course of
strings.
One or more values conforming to the pattern "
[a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?([a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?)*".
tab.courses(optional)This attribute is deprecated in favor of the new tuning element and will be removed in a future version. Provides a *written* pitch and octave
for each open string or course of strings.
One or more values conforming to the pattern "
[a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?([a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?)*".
(MEI.midi) Attributes that record time-base information.
ppq(optional)Indicates the number of pulses (sometimes referred to as ticks or divisions) per
quarter note. Unlike MIDI, MEI permits different values for a score and individual
staves.
Value is a positive integer.
(MEI.shared) Attributes that describe tuning.
tune.Hz(optional)Holds a value for cycles per second, i.e., Hertz, for a tuning reference pitch.
Value is a decimal number.
tune.pname(optional)Holds the pitch name of a tuning reference pitch, i.e., the central tone of a tuning system.
Value conforms to data.PITCHNAME.
tune.temper(optional)Provides an indication of the tuning system, just, for example.
Value conforms to data.TEMPERAMENT.
(MEI.shared) Logical domain attributes for staffDef.
lines(optional)Indicates the number of staff lines.
Value is a positive integer.
(MEI.shared) Used by staffDef and scoreDef to provide default values for attributes
in the logical domain related to clefs.
clef.shape(optional)Encodes a value for the clef symbol.
Value conforms to data.CLEFSHAPE.
clef.line(optional)Contains a default value for the position of the clef. The value must be in the range
between 1 and the number of lines on the staff. The numbering of lines starts with
the
lowest line of the staff.
Value conforms to data.CLEFLINE.
clef.dis(optional)Records the amount of octave displacement to be applied to the clef.
Value conforms to data.OCTAVE.DIS.
clef.dis.place(optional)Records the direction of octave displacement to be applied to the clef.
Value conforms to data.STAFFREL.basic.
(MEI.shared) Attributes that provide a durational default value.
dur.default(optional)Contains a default duration in those situations when the first note, rest, chord,
etc.
in a measure does not have a duration specified.
Value conforms to data.DURATION.
num.default(optional)Along with numbase.default, describes the default duration as a ratio. num.default
is
the first value in the ratio.
Value is a positive integer.
numbase.default(optional)Along with num.default, describes the default duration as a ratio. numbase.default
is
the second value in the ratio.
Value is a positive integer.
(MEI.shared) Used by staffDef and scoreDef to provide default values for attributes
in the logical domain that are related to key signatures.
keysig(optional)Written key signature.
One or more values from data.KEYFIFTHS, separated by spaces.
(MEI.shared) Used by staffDef and scoreDef to provide default values for attributes
in the logical domain related to meter signature.
meter.count(optional)Captures the number of beats in a measure, that is, the top number of the meter
signature. It must contain a decimal number or an expression that evaluates to a
decimal number, such as 2+3 or 3*2.
Value is plain text.
meter.unit(optional)Contains the number indicating the beat unit, that is, the bottom number of the meter
signature.
Value is a decimal number.
meter.sym(optional)Indicates the use of a meter symbol instead of a numeric meter signature, that is,
'C'
for common time or 'C' with a slash for cut time.
Value conforms to data.METERSIGN.
(MEI) Attributes that provide for classification of notation.
notationtype(optional)Contains classification of the notation contained or described by the element bearing
this attribute.
Value conforms to data.NOTATIONTYPE.
notationsubtype(optional)Provides any sub-classification of the notation contained or described by the element,
additional to that given by its notationtype attribute.
Value is a NMTOKEN.
(MEI.shared) Attributes that record a default value for octave.
oct.default(optional)Contains a default octave specification for use when the first note, rest, chord,
etc.
in a measure does not have an octave value specified.
Value conforms to data.OCTAVE.
(MEI.shared) Attributes that describe transposition.
trans.diat(optional)Records the amount of diatonic pitch shift, e.g., C to C♯ = 0, C to D♭ = 1, necessary
to calculate the sounded pitch from the written one.
Value is an integer.
trans.semi(optional)Records the amount of pitch shift in semitones, e.g., C to C♯ = 1, C to D♭ = 1,
necessary to calculate the sounded pitch from the written one.
Value is an integer.
(MEI.cmn) Logical domain attributes for staffDef in the CMN repertoire.
(MEI.cmn) Used by layerDef, staffDef, and scoreDef to provide default values for attributes
in the logical domain related to beaming.
beam.group(optional)Provides an example of how automated beaming (including secondary beams) is to be
performed.
Value is plain text.
beam.rests(optional)Indicates whether automatically-drawn beams should include rests shorter than a
quarter note duration.
Value conforms to data.BOOLEAN.
(MEI.mensural) Logical domain attributes for staffDef in the mensural repertoire.
(MEI.mensural) Used by staffDef and scoreDef to provide default values for attributes
in the logical domain related to mensuration. The tempus, prolatio, modusmaior, and
modusminor attributes (from the att.mensural.shared class) specify the relationship
between the four principle levels of note value, , the long, breve, semibreve and
minim, in mensural notation. Modusminor describes the long-breve relationship, while
tempus describes the breve-semibreve, and prolatio the semibreve-minim relationship,
respectively. Modusmaior is for the maxima-long relationship. The proport.* attributes
describe augmentation or diminution of the normal value of the notes in mensural notation.
proport.num(optional)Together, proport.num and proport.numbase specify a proportional change as a ratio,
e.g., 1:3. Proport.num is for the first value in the ratio.
Value is a positive integer.
proport.numbase(optional)Together, proport.num and proport.numbase specify a proportional change as a ratio,
e.g., 1:3. Proport.numbase is for the second value in the ratio.
Value is a positive integer.
(MEI.mensural) Shared attributes in the mensural repertoire.
modusmaior(optional)Describes the maxima-long relationship.
Value conforms to data.MODUSMAIOR.
modusminor(optional)Describes the long-breve relationship.
Value conforms to data.MODUSMINOR.
prolatio(optional)Describes the semibreve-minim relationship.
Value conforms to data.PROLATIO.
tempus(optional)Describes the breve-semibreve relationship.
Value conforms to data.TEMPUS.
divisio(optional)Describes the divisions of the breve in use in 14th-century Italy.
Value conforms to data.DIVISIO.
(MEI.visual) Visual domain attributes for staffDef.
layerscheme(optional)Indicates the number of layers and their stem directions.
Value conforms to data.LAYERSCHEME.
lines.color(optional)Captures the colors of the staff lines.
One or more values from data.COLOR, separated by spaces.
lines.visible(optional)Records whether all staff lines are visible.
Value conforms to data.BOOLEAN.
spacing(optional)Records the absolute distance (as opposed to the relative distances recorded in scoreDef elements) between this staff and the preceding one in the same
system. This value is meaningless for the first staff in a system since the spacing.system
attribute indicates the spacing between systems.
Value conforms to data.MEASUREMENTSIGNED.
(MEI.shared) Attributes that capture the placement of bar lines.
bar.len(optional)States the length of bar lines in virtual units. The value must be greater than 0
and
is typically equal to 2 times (the number of staff lines - 1); e.g., a value of 8 for a
5-line staff.
Value is a decimal number.
bar.method(optional)Records the method of barring.
Value conforms to data.BARMETHOD.
bar.place(optional)Denotes the staff location of bar lines, if the length is non-standard; that is, not
equal to 2 times (the number of staff lines - 1).
Value conforms to data.STAFFLOC.
(MEI.visual) Used by staffDef and scoreDef to provide default values for attributes
in the visual domain related to clefs.
clef.color(optional)Describes the color of the clef.
Value conforms to data.COLOR.
clef.visible(optional)Determines whether the clef is to be displayed.
Value conforms to data.BOOLEAN.
(MEI.shared) Attributes that describe distance from the staff.
dir.dist(optional)Records the default distance from the staff for directives.
Value conforms to data.MEASUREMENTSIGNED.
dynam.dist(optional)Records the default distance from the staff for dynamic marks.
Value conforms to data.MEASUREMENTSIGNED.
harm.dist(optional)Records the default distance from the staff of harmonic indications, such as guitar
chord grids or functional labels.
Value conforms to data.MEASUREMENTSIGNED.
reh.dist(optional)Records the default distance from the staff for rehearsal marks.
Value conforms to data.MEASUREMENTSIGNED.
tempo.dist(optional)Records the default distance from the staff for tempo marks.
Value conforms to data.MEASUREMENTSIGNED.
(MEI.visual) Visual domain attributes
grid.show(optional)Determines whether to display guitar chord grids.
Value conforms to data.BOOLEAN.
(MEI.visual) Used by staffDef and scoreDef to provide default values for attributes
in the visual domain related to key signatures.
keysig.cancelaccid(optional)Determines where cautionary accidentals should be displayed at a key change.
Value conforms to data.CANCELACCID.
keysig.visible(optional)Determines whether the key signature is to be displayed.
Value conforms to data.BOOLEAN.
(MEI.shared) Attributes that describe default typography of lyrics.
lyric.align(optional)Describes the alignment of lyric syllables associated with a note or chord.
Value conforms to data.MEASUREMENTSIGNED.
lyric.fam(optional)Sets the font family default value for lyrics.
Value conforms to data.FONTFAMILY.
lyric.name(optional)Sets the font name default value for lyrics.
Value conforms to data.FONTNAME.
lyric.size(optional)Sets the default font size value for lyrics.
Value conforms to data.FONTSIZE.
lyric.style(optional)Sets the default font style value for lyrics.
Value conforms to data.FONTSTYLE.
lyric.weight(optional)Sets the default font weight value for lyrics.
Value conforms to data.FONTWEIGHT.
(MEI.visual) Used by staffDef and scoreDef to provide default values for attributes
in the visual domain related to meter signature.
meter.form(optional)Contains an indication of how the meter signature should be rendered.
Value conforms to data.METERFORM.
meter.showchange(optional)Determines whether the old meter signature should be displayed when the meter
signature changes.
Value conforms to data.BOOLEAN.
meter.visible(optional)Determines whether the meter signature is to be displayed.
Value conforms to data.BOOLEAN.
(MEI.shared) Attributes that indicate programmatic numbering.
multi.number(optional)Indicates whether programmatically calculated counts of multiple measures of rest
(mRest) and whole measure repeats (mRpt) in parts should be rendered.
Value conforms to data.BOOLEAN.
(MEI.shared) Attributes that capture music font name and size.
music.name(optional)Sets the default music font name.
Value conforms to data.MUSICFONT.
music.size(optional)Sets the default music font size.
Value conforms to data.FONTSIZE.
(MEI.shared) Attributes that record placement of notes on a single-line staff.
ontheline(optional)Determines the placement of notes on a 1-line staff. A value of true places all
notes on the line, while a value of false places stems-up notes above the line and
stems-down notes below the line.
Value conforms to data.BOOLEAN.
(MEI.shared) Attributes that describe relative size.
scale(optional)Scale factor to be applied to the feature to make it the desired display size.
Value conforms to data.PERCENT.
(MEI.shared) Attributes that describe items printed near (above, below, or between)
staves
aboveorder(optional)Describes vertical order of items printed above a staff, from closest to farthest
away
from the staff.
One or more values from data.STAFFITEM, separated by spaces.
beloworder(optional)Describes vertical order of items printed below a staff, from closest to farthest
away
from the staff.
One or more values from data.STAFFITEM, separated by spaces.
betweenorder(optional)Describes vertical order of items printed between staves, from top to bottom.
One or more values from data.STAFFITEM, separated by spaces.
(MEI.shared) Attributes that describe default text typography.
text.fam(optional)Provides a default value for the font family name of text (other than lyrics) when
this information is not provided on the individual elements.
Value conforms to data.FONTFAMILY.
text.name(optional)Provides a default value for the font name of text (other than lyrics) when this
information is not provided on the individual elements.
Value conforms to data.FONTNAME.
text.size(optional)Provides a default value for the font size of text (other than lyrics) when this
information is not provided on the individual elements.
Value conforms to data.FONTSIZE.
text.style(optional)Provides a default value for the font style of text (other than lyrics) when this
information is not provided on the individual elements.
Value conforms to data.FONTSTYLE.
text.weight(optional)Provides a default value for the font weight for text (other than lyrics) when this
information is not provided on the individual elements.
Value conforms to data.FONTWEIGHT.
(MEI.shared) Attributes describing whether a feature should be displayed.
visible(optional)Indicates if a feature should be rendered when the notation is presented graphically
or sounded when it is presented in an aural form.
Value conforms to data.BOOLEAN.
(MEI.cmn) Visual domain attributes for staffDef in the CMN repertoire.
(MEI.visual) Used by layerDef, staffDef, and scoreDef to provide default values for
attributes in the visual domain related to beaming.
beam.color(optional)Color of beams, including those associated with tuplets.
Value conforms to data.COLOR.
beam.rend(optional)Encodes whether a beam is "feathered" and in which direction. Allowed values are: "acc" (Beam lines grow farther apart from left to right.), "rit" (Beam lines grow closer together from left to right.), "norm" (Beam lines are equally-spaced over the entire length of the beam.)
beam.slope(optional)Captures beam slope.
Value is a decimal number.
(MEI.cmn) Used by scoreDef and staffDef to provide default description of piano pedal
rendition.
pedal.style(optional)Determines whether piano pedal marks should be rendered as lines or as terms.
Value conforms to data.PEDALSTYLE.
(MEI.cmn) Attributes used by scoreDef and staffDef to provide default information
about rehearsal numbers/letters.
reh.enclose(optional)Describes the enclosing shape for rehearsal marks. Allowed values are: "box" (Enclosed by box.), "circle" (Enclosed by circle.), "none" (No enclosing shape.)
(MEI.cmn) Attributes that describe the rendition of slurs.
(MEI.mensural) Visual domain attributes for the mensural repertoire.
(MEI.visual) Used by staffDef and scoreDef to provide default values for attributes
in the visual domain related to mensuration.
mensur.color(optional)Records the color of the mensuration sign. Do not confuse this with the musical term
'color' as used in pre-CMN notation.
Value conforms to data.COLOR.
mensur.dot(optional)Determines if a dot is to be added to the base symbol.
Value conforms to data.BOOLEAN.
mensur.form(optional)Indicates whether the base symbol is written vertically or horizontally. Allowed values are: "horizontal" (Horizontally oriented.), "vertical" (Vertically oriented.)
mensur.loc(optional)Holds the staff location of the mensuration sign.
Value conforms to data.STAFFLOC.
mensur.orient(optional)Describes the rotation or reflection of the base symbol.
Value conforms to data.ORIENTATION.
mensur.sign(optional)The base symbol in the mensuration sign/time signature of mensural notation.
Value conforms to data.MENSURATIONSIGN.
mensur.size(optional)Describes the relative size of the mensuration sign.
Value conforms to data.FONTSIZE.
mensur.slash(optional)Indicates the number lines added to the mensuration sign. For example, one slash is
added for what we now call 'alla breve'.
Value is a positive integer.
(MEI.stringtab) Visual domain attributes for staffDef in the tablature repertoire.
tab.align(optional)Attribute that describes the vertical alignment of tablature symbols. Only applicable
in cases where the symbols' vertical position does not communicate other information,
such as courses (i.e., only in German lute tablature). Typical values are top and bottom.
Value conforms to data.VERTICALALIGNMENT.
tab.anchorline(optional)Used in German lute tablature where the vertical alignment of tab notes is consistent
but cannot be identified using a typical value of tab.align (i.e., top or bottom). Specifies the horizontal strand corresponding to the lines attribute on staffDef that anchors the vertical position of tab notes. This anchorline is used as the vertical
starting position when stacking tab notes into chords. Single tab notes simply occupy
this position. Chords "grow upwards" from this position. If the chord extends further
than the number of available horizontal strands ("lines") above the anchorline, the
entire chord is shifted downward until its top tab note is positioned on the top-most
line. (Note that in German lute tablature, the lines are conceptual rather than visible).
Value conforms to data.CLEFLINE.
Data type definitions.
notationsubtype(optional)Provides any sub-classification of the notation contained or described by the element,
additional to that given by its notationtype attribute.
Value is a NMTOKEN.
notationtype(optional)Contains classification of the notation contained or described by the element bearing
this attribute.
Value conforms to data.NOTATIONTYPE.
Analytical component declarations.
key.accid(optional)Contains an accidental for the tonic key, if one is required, e.g., if key.pname
equals c and key.accid equals s, then a tonic of C# is indicated.
Value conforms to data.ACCIDENTAL.GESTURAL.
key.mode(optional)Indicates major, minor, or other tonality.
Value conforms to data.MODE.
key.pname(optional)Holds the pitch name of the tonic key, e.g., c for the key of C.
Value conforms to data.PITCHNAME.
Common Music Notation (CMN) repertoire component declarations.
beam.group(optional)Provides an example of how automated beaming (including secondary beams) is to be
performed.
Value is plain text.
beam.rests(optional)Indicates whether automatically-drawn beams should include rests shorter than a
quarter note duration.
Value conforms to data.BOOLEAN.
pedal.style(optional)Determines whether piano pedal marks should be rendered as lines or as terms.
Value conforms to data.PEDALSTYLE.
reh.enclose(optional)Describes the enclosing shape for rehearsal marks. Allowed values are: "box" (Enclosed by box.), "circle" (Enclosed by circle.), "none" (No enclosing shape.)
divisio(optional)Describes the divisions of the breve in use in 14th-century Italy.
Value conforms to data.DIVISIO.
modusmaior(optional)Describes the maxima-long relationship.
Value conforms to data.MODUSMAIOR.
modusminor(optional)Describes the long-breve relationship.
Value conforms to data.MODUSMINOR.
prolatio(optional)Describes the semibreve-minim relationship.
Value conforms to data.PROLATIO.
proport.num(optional)Together, proport.num and proport.numbase specify a proportional change as a ratio,
e.g., 1:3. Proport.num is for the first value in the ratio.
Value is a positive integer.
proport.numbase(optional)Together, proport.num and proport.numbase specify a proportional change as a ratio,
e.g., 1:3. Proport.numbase is for the second value in the ratio.
Value is a positive integer.
tempus(optional)Describes the breve-semibreve relationship.
Value conforms to data.TEMPUS.
MIDI component declarations.
instr(optional)Provides a way of pointing to a MIDI instrument definition. It must contain the ID
of
an instrDef element elsewhere in the document.
Value conforms to data.URI.
ppq(optional)Indicates the number of pulses (sometimes referred to as ticks or divisions) per
quarter note. Unlike MIDI, MEI permits different values for a score and individual
staves.
Value is a positive integer.
Component declarations that are shared between two or more modules.
aboveorder(optional)Describes vertical order of items printed above a staff, from closest to farthest
away
from the staff.
One or more values from data.STAFFITEM, separated by spaces.
bar.len(optional)States the length of bar lines in virtual units. The value must be greater than 0
and
is typically equal to 2 times (the number of staff lines - 1); e.g., a value of 8 for a
5-line staff.
Value is a decimal number.
bar.method(optional)Records the method of barring.
Value conforms to data.BARMETHOD.
bar.place(optional)Denotes the staff location of bar lines, if the length is non-standard; that is, not
equal to 2 times (the number of staff lines - 1).
Value conforms to data.STAFFLOC.
beloworder(optional)Describes vertical order of items printed below a staff, from closest to farthest
away
from the staff.
One or more values from data.STAFFITEM, separated by spaces.
betweenorder(optional)Describes vertical order of items printed between staves, from top to bottom.
One or more values from data.STAFFITEM, separated by spaces.
class(optional)Contains one or more URIs which denote classification terms that apply to the entity
bearing this attribute.
One or more values from data.URI, separated by spaces.
clef.dis(optional)Records the amount of octave displacement to be applied to the clef.
Value conforms to data.OCTAVE.DIS.
clef.dis.place(optional)Records the direction of octave displacement to be applied to the clef.
Value conforms to data.STAFFREL.basic.
clef.line(optional)Contains a default value for the position of the clef. The value must be in the range
between 1 and the number of lines on the staff. The numbering of lines starts with
the
lowest line of the staff.
Value conforms to data.CLEFLINE.
clef.shape(optional)Encodes a value for the clef symbol.
Value conforms to data.CLEFSHAPE.
copyof(optional)Points to an element of which the current element is a copy.
Value conforms to data.URI.
corresp(optional)Used to point to other elements that correspond to this one in a generic
fashion.
One or more values from data.URI, separated by spaces.
decls(optional)Identifies one or more metadata elements (other than classification terms) within
the
header, which are understood to apply to the element bearing this attribute and its
content.
One or more values from data.URI, separated by spaces.
dir.dist(optional)Records the default distance from the staff for directives.
Value conforms to data.MEASUREMENTSIGNED.
dur.default(optional)Contains a default duration in those situations when the first note, rest, chord,
etc.
in a measure does not have a duration specified.
Value conforms to data.DURATION.
dynam.dist(optional)Records the default distance from the staff for dynamic marks.
Value conforms to data.MEASUREMENTSIGNED.
follows(optional)points to one or more events in a user-defined collection that are known to be
predecessors of the current element.
One or more values from data.URI, separated by spaces.
harm.dist(optional)Records the default distance from the staff of harmonic indications, such as guitar
chord grids or functional labels.
Value conforms to data.MEASUREMENTSIGNED.
keysig(optional)Written key signature.
One or more values from data.KEYFIFTHS, separated by spaces.
label(optional)Captures text to be used to generate a label for the element to which it’s attached,
a
"tool tip" or prefatory text, for example. Should not be used to record document
content.
Value is plain text.
lines(optional)Indicates the number of staff lines.
Value is a positive integer.
lyric.align(optional)Describes the alignment of lyric syllables associated with a note or chord.
Value conforms to data.MEASUREMENTSIGNED.
lyric.fam(optional)Sets the font family default value for lyrics.
Value conforms to data.FONTFAMILY.
lyric.name(optional)Sets the font name default value for lyrics.
Value conforms to data.FONTNAME.
lyric.size(optional)Sets the default font size value for lyrics.
Value conforms to data.FONTSIZE.
lyric.style(optional)Sets the default font style value for lyrics.
Value conforms to data.FONTSTYLE.
lyric.weight(optional)Sets the default font weight value for lyrics.
Value conforms to data.FONTWEIGHT.
meter.count(optional)Captures the number of beats in a measure, that is, the top number of the meter
signature. It must contain a decimal number or an expression that evaluates to a
decimal number, such as 2+3 or 3*2.
Value is plain text.
meter.sym(optional)Indicates the use of a meter symbol instead of a numeric meter signature, that is,
'C'
for common time or 'C' with a slash for cut time.
Value conforms to data.METERSIGN.
meter.unit(optional)Contains the number indicating the beat unit, that is, the bottom number of the meter
signature.
Value is a decimal number.
multi.number(optional)Indicates whether programmatically calculated counts of multiple measures of rest
(mRest) and whole measure repeats (mRpt) in parts should be rendered.
Value conforms to data.BOOLEAN.
music.name(optional)Sets the default music font name.
Value conforms to data.MUSICFONT.
music.size(optional)Sets the default music font size.
Value conforms to data.FONTSIZE.
n(optional)Provides a numeric designation that indicates an element’s position in a sequence
of
similar elements. Its value must be a non-negative integer.
Value is a positive integer, including 0.
next(optional)Used to point to the next event(s) in a user-defined collection.
One or more values from data.URI, separated by spaces.
num.default(optional)Along with numbase.default, describes the default duration as a ratio. num.default
is
the first value in the ratio.
Value is a positive integer.
numbase.default(optional)Along with num.default, describes the default duration as a ratio. numbase.default
is
the second value in the ratio.
Value is a positive integer.
oct.default(optional)Contains a default octave specification for use when the first note, rest, chord,
etc.
in a measure does not have an octave value specified.
Value conforms to data.OCTAVE.
ontheline(optional)Determines the placement of notes on a 1-line staff. A value of true places all
notes on the line, while a value of false places stems-up notes above the line and
stems-down notes below the line.
Value conforms to data.BOOLEAN.
precedes(optional)Points to one or more events in a user-defined collection that are known to be
successors of the current element.
One or more values from data.URI, separated by spaces.
prev(optional)Points to the previous event(s) in a user-defined collection.
One or more values from data.URI, separated by spaces.
reh.dist(optional)Records the default distance from the staff for rehearsal marks.
Value conforms to data.MEASUREMENTSIGNED.
resp(optional)Indicates the agent(s) responsible for some aspect of the text’s transcription,
editing, or encoding. Its value must point to one or more identifiers declared in
the
document header.
One or more values from data.URI, separated by spaces.
sameas(optional)Points to an element that is the same as the current element but is not a literal
copy
of the current element.
One or more values from data.URI, separated by spaces.
scale(optional)Scale factor to be applied to the feature to make it the desired display size.
Value conforms to data.PERCENT.
synch(optional)Points to elements that are synchronous with the current element.
One or more values from data.URI, separated by spaces.
tempo.dist(optional)Records the default distance from the staff for tempo marks.
Value conforms to data.MEASUREMENTSIGNED.
text.fam(optional)Provides a default value for the font family name of text (other than lyrics) when
this information is not provided on the individual elements.
Value conforms to data.FONTFAMILY.
text.name(optional)Provides a default value for the font name of text (other than lyrics) when this
information is not provided on the individual elements.
Value conforms to data.FONTNAME.
text.size(optional)Provides a default value for the font size of text (other than lyrics) when this
information is not provided on the individual elements.
Value conforms to data.FONTSIZE.
text.style(optional)Provides a default value for the font style of text (other than lyrics) when this
information is not provided on the individual elements.
Value conforms to data.FONTSTYLE.
text.weight(optional)Provides a default value for the font weight for text (other than lyrics) when this
information is not provided on the individual elements.
Value conforms to data.FONTWEIGHT.
trans.diat(optional)Records the amount of diatonic pitch shift, e.g., C to C♯ = 0, C to D♭ = 1, necessary
to calculate the sounded pitch from the written one.
Value is an integer.
trans.semi(optional)Records the amount of pitch shift in semitones, e.g., C to C♯ = 1, C to D♭ = 1,
necessary to calculate the sounded pitch from the written one.
Value is an integer.
tune.Hz(optional)Holds a value for cycles per second, i.e., Hertz, for a tuning reference pitch.
Value is a decimal number.
tune.pname(optional)Holds the pitch name of a tuning reference pitch, i.e., the central tone of a tuning system.
Value conforms to data.PITCHNAME.
tune.temper(optional)Provides an indication of the tuning system, just, for example.
Value conforms to data.TEMPERAMENT.
type(optional)Designation which characterizes the element in some sense, using any convenient
classification scheme or typology that employs single-token labels.
One or more values of datatype NMTOKEN, separated by spaces.
visible(optional)Indicates if a feature should be rendered when the notation is presented graphically
or sounded when it is presented in an aural form.
Value conforms to data.BOOLEAN.
xml:base(optional)Provides a base URI reference with which applications can resolve relative URI
references into absolute URI references.
Value conforms to data.URI.
xml:id(optional)Regularizes the naming of an element and thus facilitates building links between it
and other resources. Each id attribute within a document must have a unique value.
Value is a valid xml:id.
Tablature component declarations.
tab.align(optional)Attribute that describes the vertical alignment of tablature symbols. Only applicable
in cases where the symbols' vertical position does not communicate other information,
such as courses (i.e., only in German lute tablature). Typical values are top and bottom.
Value conforms to data.VERTICALALIGNMENT.
tab.anchorline(optional)Used in German lute tablature where the vertical alignment of tab notes is consistent
but cannot be identified using a typical value of tab.align (i.e., top or bottom). Specifies the horizontal strand corresponding to the lines attribute on staffDef that anchors the vertical position of tab notes. This anchorline is used as the vertical
starting position when stacking tab notes into chords. Single tab notes simply occupy
this position. Chords "grow upwards" from this position. If the chord extends further
than the number of available horizontal strands ("lines") above the anchorline, the
entire chord is shifted downward until its top tab note is positioned on the top-most
line. (Note that in German lute tablature, the lines are conceptual rather than visible).
Value conforms to data.CLEFLINE.
tab.courses(optional)This attribute is deprecated in favor of the new tuning element and will be removed in a future version. Provides a *written* pitch and octave
for each open string or course of strings.
One or more values conforming to the pattern "
[a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?([a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?)*".
tab.strings(optional)This attribute is deprecated in favor of the new tuning element and will be removed in a future version. Provides a *written* pitch and octave
for each open string or course of
strings.
One or more values conforming to the pattern "
[a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?([a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?)*".
Visual component declarations.
beam.color(optional)Color of beams, including those associated with tuplets.
Value conforms to data.COLOR.
beam.rend(optional)Encodes whether a beam is "feathered" and in which direction. Allowed values are: "acc" (Beam lines grow farther apart from left to right.), "rit" (Beam lines grow closer together from left to right.), "norm" (Beam lines are equally-spaced over the entire length of the beam.)
beam.slope(optional)Captures beam slope.
Value is a decimal number.
clef.color(optional)Describes the color of the clef.
Value conforms to data.COLOR.
clef.visible(optional)Determines whether the clef is to be displayed.
Value conforms to data.BOOLEAN.
grid.show(optional)Determines whether to display guitar chord grids.
Value conforms to data.BOOLEAN.
keysig.cancelaccid(optional)Determines where cautionary accidentals should be displayed at a key change.
Value conforms to data.CANCELACCID.
keysig.visible(optional)Determines whether the key signature is to be displayed.
Value conforms to data.BOOLEAN.
layerscheme(optional)Indicates the number of layers and their stem directions.
Value conforms to data.LAYERSCHEME.
lines.color(optional)Captures the colors of the staff lines.
One or more values from data.COLOR, separated by spaces.
lines.visible(optional)Records whether all staff lines are visible.
Value conforms to data.BOOLEAN.
mensur.color(optional)Records the color of the mensuration sign. Do not confuse this with the musical term
'color' as used in pre-CMN notation.
Value conforms to data.COLOR.
mensur.dot(optional)Determines if a dot is to be added to the base symbol.
Value conforms to data.BOOLEAN.
mensur.form(optional)Indicates whether the base symbol is written vertically or horizontally. Allowed values are: "horizontal" (Horizontally oriented.), "vertical" (Vertically oriented.)
mensur.loc(optional)Holds the staff location of the mensuration sign.
Value conforms to data.STAFFLOC.
mensur.orient(optional)Describes the rotation or reflection of the base symbol.
Value conforms to data.ORIENTATION.
mensur.sign(optional)The base symbol in the mensuration sign/time signature of mensural notation.
Value conforms to data.MENSURATIONSIGN.
mensur.size(optional)Describes the relative size of the mensuration sign.
Value conforms to data.FONTSIZE.
mensur.slash(optional)Indicates the number lines added to the mensuration sign. For example, one slash is
added for what we now call 'alla breve'.
Value is a positive integer.
meter.form(optional)Contains an indication of how the meter signature should be rendered.
Value conforms to data.METERFORM.
meter.showchange(optional)Determines whether the old meter signature should be displayed when the meter
signature changes.
Value conforms to data.BOOLEAN.
meter.visible(optional)Determines whether the meter signature is to be displayed.
Value conforms to data.BOOLEAN.
spacing(optional)Records the absolute distance (as opposed to the relative distances recorded in scoreDef elements) between this staff and the preceding one in the same
system. This value is meaningless for the first staff in a system since the spacing.system
attribute indicates the spacing between systems.
Value conforms to data.MEASUREMENTSIGNED.
Member of
model.staffDefLikeGroups elements that permit declaration of staff properties.
(MEI.shared) Groups elements that permit declaration of staff properties.
endingAlternative ending for a repeated passage of music; i.e., prima volta, seconda volta,
etc.
measureUnit of musical time consisting of a fixed number of note values of a given type,
as
determined by the prevailing meter, and delimited in musical notation by bar lines.
oStaffA staff that holds an alternative passage which may be played instead of
the original material.
partAn alternative visual rendition of the score from the point of view of a particular
performer (or group of performers).
staffA group of equidistant horizontal lines on which notes are placed in order to represent
pitch or a grouping element for individual 'strands' of notes, rests, etc. that may
or may not
actually be rendered on staff lines; that is, both diastematic and non-diastematic
signs.
corrContains the correct form of an apparent erroneous passage.
damageContains an area of damage to the physical medium.
delContains information deleted, marked as deleted, or otherwise indicated as
superfluous or spurious in the copy text by an author, scribe, annotator, or corrector.
sicContains apparently incorrect or inaccurate material.
suppliedContains material supplied by the transcriber or editor for any reason.
unclearContains material that cannot be transcribed with certainty because it is illegible
or
inaudible in the source.
Common Music Notation (CMN) repertoire component declarations.
measureUnit of musical time consisting of a fixed number of note values of a given type,
as
determined by the prevailing meter, and delimited in musical notation by bar lines.
oStaffA staff that holds an alternative passage which may be played instead of
the original material.
Critical apparatus component declarations.
lemContains the lemma, or base text, of a textual variation.
rdgContains a single reading within a textual variation.
Editorial and transcriptional component declarations.
abbrA generic element for 1) a shortened form of a word, including an acronym
or 2) a shorthand notation.
corrContains the correct form of an apparent erroneous passage.
damageContains an area of damage to the physical medium.
delContains information deleted, marked as deleted, or otherwise indicated as
superfluous or spurious in the copy text by an author, scribe, annotator, or corrector.
staffA group of equidistant horizontal lines on which notes are placed in order to represent
pitch or a grouping element for individual 'strands' of notes, rests, etc. that may
or may not
actually be rendered on staff lines; that is, both diastematic and non-diastematic
signs.
(MEI.shared) Groups elements used to assign a label to other parts of a document.
labelA container for document text that identifies the feature to which it is attached.
For a
"tool tip" or other generated label, use the label attribute.
labelAbbrA label on the pages following the first.
(MEI.shared) Groups elements that permit declaration of layer properties.
labelA container for document text that identifies the feature to which it is attached.
For a
"tool tip" or other generated label, use the label attribute.
labelAbbrA label on the pages following the first.
<sch:assert test="@n">StaffDef must have an n attribute.</sch:assert>
<sch:assert test="@lines or preceding::mei:staffDef[@n=$thisstaff and @lines]"> Either
@lines must be present or a preceding staffDef with the same value for @n and @lines
must exist.</sch:assert>
<sch:assert test="count(mei:clef) + count(mei:clefGrp) < 2">Only one clef or clefGrp is
permitted.</sch:assert>
<sch:assert test="@lines or preceding::mei:staffDef[@n=$thisstaff and @lines]"> Either
@lines must be present or a preceding staffDef with matching @n value and @lines must
exist.</sch:assert>
<sch:rule context="mei:staffDef[@clef.line and not(@lines)]">
<sch:let name="thisstaff"value="@n"/>
<sch:let name="stafflines"value="preceding::mei:staffDef[@n=$thisstaff and @lines][1]/@lines"/>
<sch:assert test="number(@clef.line) <= number($stafflines)">The clef position must be
less than or equal to the number of lines on the staff.</sch:assert>
<sch:assert test="$countTokens = preceding::mei:staffDef[@n=$thisstaff and @lines][1]/@lines">The
tab.strings attribute must have the same number of values as there are staff
lines.</sch:assert>
<sch:assert test="$countTokens = 1 or $countTokens = @lines">The lines.color attribute
must have either 1) a single value or 2) the same number of values as there are staff
lines.</sch:assert>
</sch:rule>
<sch:rule context="mei:staffDef[@lines.color and not(@lines)]">
<sch:assert test="$countTokens = 1 or $countTokens = preceding::mei:staffDef[@n=$thisstaff and @lines][1]/@lines">The lines.color attribute must have either 1) a single value or 2) the same number
of
values as there are staff lines.</sch:assert>