<clef>

Indication of the exact location of a particular note on the staff and, therefore, the other notes as well.
Module
MEI.shared
Attributes
altsym, cautionary, class, color, copyof, corresp, dis, dis.place, facs, follows, fontfam, fontname, fontsize, fontstyle, fontweight, glyph.auth, glyph.name, glyph.num, glyph.uri, label, layer, line, n, next, oct, precedes, prev, resp, sameas, shape, staff, synch, tstamp, tstamp.ges, tstamp.real, type, visible, when, xml:base, xml:id
altsym(optional)Provides a way of pointing to a user-defined symbol. It must contain a reference to an ID of a symbolDef element elsewhere in the document. Value conforms to data.URI.
cautionary(optional)Records the function of the clef. A "cautionary" clef does not change the following pitches. Value conforms to data.BOOLEAN.
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.
color(optional)Used to indicate visual appearance. Do not confuse this with the musical term 'color' as used in pre-CMN notation. Value conforms to data.COLOR.
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.
dis(optional)Records the amount of octave displacement. Value conforms to data.OCTAVE.DIS.
dis.place(optional)Records the direction of octave displacement. Value conforms to data.STAFFREL.basic.
facs(optional)Permits the current element to reference a facsimile surface or image zone which corresponds to it. 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.
fontfam(optional)Contains the name of a font-family. Value conforms to data.FONTFAMILY.
fontname(optional)Holds the name of a font. Value conforms to data.FONTNAME.
fontsize(optional)Indicates the size of a font expressed in printers' points, i.e., 1/72nd of an inch, relative terms, e.g., "small", "larger", etc., or percentage values relative to "normal" size, e.g., "125%". Value conforms to data.FONTSIZE.
fontstyle(optional)Records the style of a font, i.e, italic, oblique, or normal. Value conforms to data.FONTSTYLE.
fontweight(optional)Used to indicate bold type. Value conforms to data.FONTWEIGHT.
glyph.auth(optional)A name or label associated with the controlled vocabulary from which the value of glyph.name or glyph.num is taken. Allowed values are: "smufl" (Standard Music Font Layout.)
glyph.name(optional)Glyph name. Value of datatype string.
glyph.num(optional)Numeric glyph reference in hexadecimal notation, e.g. "#xE000" or "U+E000". N.B. SMuFL version 1.18 uses the range U+E000 - U+ECBF. Value conforms to data.HEXNUM.
glyph.uri(optional)The web-accessible location of the controlled vocabulary from which the value of glyph.name or glyph.num is taken. Value conforms to data.URI.
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 of datatype string.
layer(optional)Identifies the layer to which a feature applies. One or more values of datatype positiveInteger, separated by spaces.
line(optional)Indicates the line upon which a feature stands. 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.
n(optional)Provides a number-like designation that indicates an element's position in a sequence of similar elements. May not contain space characters. Value conforms to data.WORD.
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.
oct(optional)Captures written octave information. Value conforms to data.OCTAVE.
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.
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.
shape(optional)Describes a clef's shape. Value conforms to data.CLEFSHAPE.
staff(recommended)Signifies the staff on which a notated event occurs or to which a control event applies. Mandatory when applicable. One or more values of datatype positiveInteger, 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.
tstamp(optional)Encodes the onset time in terms of musical time, i.e., beats[.fractional beat part], as expressed in the written time signature. Value conforms to data.BEAT.
tstamp.ges(optional)Encodes the onset time in terms of musical time, i.e., beats[.fractional beat part], as expressed in the written time signature. Value conforms to data.BEAT.
tstamp.real(optional)Records the onset time in terms of ISO time. Value conforms to data.ISOTIME.
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.
when(optional)Indicates the point of occurrence of this feature along a time line. Its value must be the ID of a when element elsewhere in the document. Value conforms to data.URI.
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 of datatype ID.
(MEI.shared) Attributes common to many elements.
(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 of datatype 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 of datatype string.
(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) Attributes used to supply a number-like designation for an element.
n(optional)Provides a number-like designation that indicates an element's position in a sequence of similar elements. May not contain space characters. Value conforms to data.WORD.
(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.shared) Attributes that apply to all written events, e.g., note, chord, rest, etc.
(MEI.performance) Temporal alignment attributes.
when(optional)Indicates the point of occurrence of this feature along a time line. Its value must be the ID of a when element elsewhere in the document. Value conforms to data.URI.
(MEI.shared) Attributes that identify the layer to which a feature applies.
layer(optional)Identifies the layer to which a feature applies. One or more values of datatype positiveInteger, separated by spaces.
(MEI.shared) Attributes for identifying the staff associated with the current feature.
staff(recommended)Signifies the staff on which a notated event occurs or to which a control event applies. Mandatory when applicable. One or more values of datatype positiveInteger, separated by spaces.
(MEI.gestural) Attributes that record a performed (as opposed to notated) time stamp.
tstamp.ges(optional)Encodes the onset time in terms of musical time, i.e., beats[.fractional beat part], as expressed in the written time signature. Value conforms to data.BEAT.
tstamp.real(optional)Records the onset time in terms of ISO time. Value conforms to data.ISOTIME.
(MEI.shared) Attributes that record a time stamp in terms of musical time, i.e., beats[.fractional beat part].
tstamp(optional)Encodes the onset time in terms of musical time, i.e., beats[.fractional beat part], as expressed in the written time signature. Value conforms to data.BEAT.
(MEI.facsimile) Attributes that associate a feature corresponding with all or part of an image.
facs(optional)Permits the current element to reference a facsimile surface or image zone which corresponds to it. One or more values from data.URI, separated by spaces.
(MEI.analytical) Analytical domain attributes.
(MEI.gestural) Gestural domain attributes.
(MEI.shared) Logical domain attributes.
cautionary(optional)Records the function of the clef. A "cautionary" clef does not change the following pitches. Value conforms to data.BOOLEAN.
(MEI.shared) Attributes that record the shape of a clef.
shape(optional)Describes a clef's shape. Value conforms to data.CLEFSHAPE.
(MEI.shared) Attributes for identifying the staff line with which a feature is associated.
line(optional)Indicates the line upon which a feature stands. 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.
(MEI.shared) Attributes that record written octave.
oct(optional)Captures written octave information. Value conforms to data.OCTAVE.
(MEI.shared) Attributes describing the amount and direction of octave displacement.
dis(optional)Records the amount of octave displacement. Value conforms to data.OCTAVE.DIS.
dis.place(optional)Records the direction of octave displacement. Value conforms to data.STAFFREL.basic.
(MEI.visual) Visual domain attributes.
(MEI.usersymbols) Attributes supplying pointers to user-defined symbols.
altsym(optional)Provides a way of pointing to a user-defined symbol. It must contain a reference to an ID of a symbolDef element elsewhere in the document. Value conforms to data.URI.
(MEI.shared) Visual color attributes.
color(optional)Used to indicate visual appearance. Do not confuse this with the musical term 'color' as used in pre-CMN notation. Value conforms to data.COLOR.
(MEI.externalsymbols) Attributes used to associate MEI features with corresponding glyphs in an externally-defined standard such as SMuFL.
glyph.auth(optional)A name or label associated with the controlled vocabulary from which the value of glyph.name or glyph.num is taken. Allowed values are: "smufl" (Standard Music Font Layout.)
glyph.name(optional)Glyph name. Value of datatype string.
glyph.num(optional)Numeric glyph reference in hexadecimal notation, e.g. "#xE000" or "U+E000". N.B. SMuFL version 1.18 uses the range U+E000 - U+ECBF. Value conforms to data.HEXNUM.
glyph.uri(optional)The web-accessible location of the controlled vocabulary from which the value of glyph.name or glyph.num is taken. Value conforms to data.URI.
(MEI.shared) Typographical attributes.
fontfam(optional)Contains the name of a font-family. Value conforms to data.FONTFAMILY.
fontname(optional)Holds the name of a font. Value conforms to data.FONTNAME.
fontsize(optional)Indicates the size of a font expressed in printers' points, i.e., 1/72nd of an inch, relative terms, e.g., "small", "larger", etc., or percentage values relative to "normal" size, e.g., "125%". Value conforms to data.FONTSIZE.
fontstyle(optional)Records the style of a font, i.e, italic, oblique, or normal. Value conforms to data.FONTSTYLE.
fontweight(optional)Used to indicate bold type. 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.
External symbols component declarations.
glyph.auth(optional)A name or label associated with the controlled vocabulary from which the value of glyph.name or glyph.num is taken. Allowed values are: "smufl" (Standard Music Font Layout.)
glyph.name(optional)Glyph name. Value of datatype string.
glyph.num(optional)Numeric glyph reference in hexadecimal notation, e.g. "#xE000" or "U+E000". N.B. SMuFL version 1.18 uses the range U+E000 - U+ECBF. Value conforms to data.HEXNUM.
glyph.uri(optional)The web-accessible location of the controlled vocabulary from which the value of glyph.name or glyph.num is taken. Value conforms to data.URI.
Facsimile component declarations.
facs(optional)Permits the current element to reference a facsimile surface or image zone which corresponds to it. One or more values from data.URI, separated by spaces.
Gestural component declarations.
tstamp.ges(optional)Encodes the onset time in terms of musical time, i.e., beats[.fractional beat part], as expressed in the written time signature. Value conforms to data.BEAT.
tstamp.real(optional)Records the onset time in terms of ISO time. Value conforms to data.ISOTIME.
Performance component declarations.
when(optional)Indicates the point of occurrence of this feature along a time line. Its value must be the ID of a when element elsewhere in the document. Value conforms to data.URI.
Component declarations that are shared between two or more modules.
cautionary(optional)Records the function of the clef. A "cautionary" clef does not change the following pitches. Value conforms to data.BOOLEAN.
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.
color(optional)Used to indicate visual appearance. Do not confuse this with the musical term 'color' as used in pre-CMN notation. Value conforms to data.COLOR.
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.
dis(optional)Records the amount of octave displacement. Value conforms to data.OCTAVE.DIS.
dis.place(optional)Records the direction of octave displacement. Value conforms to data.STAFFREL.basic.
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.
fontfam(optional)Contains the name of a font-family. Value conforms to data.FONTFAMILY.
fontname(optional)Holds the name of a font. Value conforms to data.FONTNAME.
fontsize(optional)Indicates the size of a font expressed in printers' points, i.e., 1/72nd of an inch, relative terms, e.g., "small", "larger", etc., or percentage values relative to "normal" size, e.g., "125%". Value conforms to data.FONTSIZE.
fontstyle(optional)Records the style of a font, i.e, italic, oblique, or normal. Value conforms to data.FONTSTYLE.
fontweight(optional)Used to indicate bold type. Value conforms to data.FONTWEIGHT.
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 of datatype string.
layer(optional)Identifies the layer to which a feature applies. One or more values of datatype positiveInteger, separated by spaces.
line(optional)Indicates the line upon which a feature stands. 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.
n(optional)Provides a number-like designation that indicates an element's position in a sequence of similar elements. May not contain space characters. Value conforms to data.WORD.
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.
oct(optional)Captures written octave information. Value conforms to data.OCTAVE.
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.
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.
shape(optional)Describes a clef's shape. Value conforms to data.CLEFSHAPE.
staff(recommended)Signifies the staff on which a notated event occurs or to which a control event applies. Mandatory when applicable. One or more values of datatype positiveInteger, 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.
tstamp(optional)Encodes the onset time in terms of musical time, i.e., beats[.fractional beat part], as expressed in the written time signature. Value conforms to data.BEAT.
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 of datatype ID.
User-defined symbols component declarations.
altsym(optional)Provides a way of pointing to a user-defined symbol. It must contain a reference to an ID of a symbolDef element elsewhere in the document. Value conforms to data.URI.
Member of
model.eventLikeGroups event elements that occur in all notational repertoires.
model.staffDefPartGroups elements that may appear in the declaration of staff features.
Contained by
clefGrp(clef group) – A set of simultaneously-occurring clefs.
incip(incipit) – The opening music and/or words of a musical or textual work.
(MEI.shared) Groups event elements that occur in all notational repertoires.
beamA container for a series of explicitly beamed events that begins and ends entirely within a measure.
graceGrpA container for a sequence of grace notes.
ligatureA mensural notation symbol that combines two or more notes into a single sign.
tupletA group of notes with "irregular" (sometimes called "irrational") rhythmic values, for example, three notes in the time normally occupied by two or nine in the time of five.
(MEI.neumes) Groups elements that may appear as part of the content of a syllable.
syllableNeume notation can be thought of as "neumed text". Therefore, the syllable element provides high-level organization in this repertoire.
(MEI.shared) Groups notated events that may appear at the layer level in all repertoires.
abbr(abbreviation) – A generic element for 1) a shortened form of a word, including an acronym or 2) a shorthand notation.
add(addition) – Marks an addition to the text.
corr(correction) – Contains the correct form of an apparent erroneous passage.
damageContains an area of damage to the physical medium.
del(deletion) – Contains information deleted, marked as deleted, or otherwise indicated as superfluous or spurious in the copy text by an author, scribe, annotator, or corrector.
expan(expansion) – Contains the expansion of an abbreviation.
layerAn independent stream of events on a staff.
lem(lemma) – Contains the lemma, or base text, of a textual variation.
oLayer(ossia layer) – A layer that contains an alternative to material in another layer.
orig(original) – Contains material which is marked as following the original, rather than being normalized or corrected.
rdg(reading) – Contains a single reading within a textual variation.
reg(regularization) – Contains material which has been regularized or normalized in some sense.
restoreIndicates restoration of material to an earlier state by cancellation of an editorial or authorial marking or instruction.
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.
(MEI.shared) Groups elements that may appear in the declaration of staff features.
staffDef(staff definition) – Container for staff meta-information.
Common Music Notation (CMN) repertoire component declarations.
beamA container for a series of explicitly beamed events that begins and ends entirely within a measure.
graceGrpA container for a sequence of grace notes.
oLayer(ossia layer) – A layer that contains an alternative to material in another layer.
tupletA group of notes with "irregular" (sometimes called "irrational") rhythmic values, for example, three notes in the time normally occupied by two or nine in the time of five.
Critical apparatus component declarations.
lem(lemma) – Contains the lemma, or base text, of a textual variation.
rdg(reading) – Contains a single reading within a textual variation.
Editorial and transcriptional component declarations.
abbr(abbreviation) – A generic element for 1) a shortened form of a word, including an acronym or 2) a shorthand notation.
add(addition) – Marks an addition to the text.
corr(correction) – Contains the correct form of an apparent erroneous passage.
damageContains an area of damage to the physical medium.
del(deletion) – Contains information deleted, marked as deleted, or otherwise indicated as superfluous or spurious in the copy text by an author, scribe, annotator, or corrector.
expan(expansion) – Contains the expansion of an abbreviation.
orig(original) – Contains material which is marked as following the original, rather than being normalized or corrected.
reg(regularization) – Contains material which has been regularized or normalized in some sense.
restoreIndicates restoration of material to an earlier state by cancellation of an editorial or authorial marking or instruction.
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.
Mensural repertoire component declarations.
ligatureA mensural notation symbol that combines two or more notes into a single sign.
Neume repertoire component declarations.
syllableNeume notation can be thought of as "neumed text". Therefore, the syllable element provides high-level organization in this repertoire.
Component declarations that are shared between two or more modules.
clefGrp(clef group) – A set of simultaneously-occurring clefs.
incip(incipit) – The opening music and/or words of a musical or textual work.
layerAn independent stream of events on a staff.
staffDef(staff definition) – Container for staff meta-information.
May Contain
(<clef> may not have child elements)
Remarks

This element can be used as an alternative to the staff element's clef.* attributes. It should be used when specific display info, such as size or color, needs to be recorded for the clef or when multiple, simultaneous clefs occur on a single staff. This element may also be used within the staff context to indicate changes of clef.

Constraints
The clef position must be less than or equal to the number of lines of an ancestor staff.
The clef position must be less than or equal to the number of lines of a preceding staff.
<sch:rule context="mei:clef[ancestor::mei:staffDef[@lines]]">
<sch:let name="thisstaff" value="ancestor::mei:staffDef/@n"/>
<sch:assert test="number(@line) <= number(ancestor::mei:staffDef[@n=$thisstaff and @lines][1]/@lines)">The clef position must be less than or equal to the number of lines of an ancestor staff.</sch:assert>
</sch:rule>
<sch:rule context="mei:clef[ancestor::mei:staffDef[not(@lines)]]">
<sch:let name="thisstaff" value="ancestor::mei:staffDef/@n"/>
<sch:assert test="number(@line) <= number(preceding::mei:staffDef[@n=$thisstaff and @lines][1]/@lines)">The clef position must be less than or equal to the number of lines of a preceding staff.</sch:assert>
</sch:rule>
Declaration
<elementSpec ident="clef" module="MEI.shared">
<desc>Indication of the exact location of a particular note on the staff and, therefore, the other notes as well.</desc>
<classes>
<memberOf key="att.common"/>
<memberOf key="att.event"/>
<memberOf key="att.facsimile"/>
<memberOf key="att.clef.anl"/>
<memberOf key="att.clef.ges"/>
<memberOf key="att.clef.log"/>
<memberOf key="att.clef.vis"/>
<memberOf key="model.eventLike"/>
<memberOf key="model.staffDefPart"/>
</classes>
<content>
<rng:empty/>
</content>
<constraintSpec ident="Clef_position_lines" scheme="isoschematron">
<constraint>
<sch:rule context="mei:clef[ancestor::mei:staffDef[@lines]]">
<sch:let name="thisstaff" value="ancestor::mei:staffDef/@n"/>
<sch:assert test="number(@line) <= number(ancestor::mei:staffDef[@n=$thisstaff and @lines][1]/@lines)">The clef position must be less than or equal to the number of lines of an ancestor staff.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
<constraintSpec ident="Clef_position_nolines" scheme="isoschematron">
<constraint>
<sch:rule context="mei:clef[ancestor::mei:staffDef[not(@lines)]]">
<sch:let name="thisstaff" value="ancestor::mei:staffDef/@n"/>
<sch:assert test="number(@line) <= number(preceding::mei:staffDef[@n=$thisstaff and @lines][1]/@lines)">The clef position must be less than or equal to the number of lines of a preceding staff.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
<remarks>
<p part="N">This element can be used as an alternative to the
<gi scheme="MEI">staff</gi>
element's clef.* attributes. It should be used when specific display info, such as size or color, needs to be recorded for the clef or when multiple, simultaneous clefs occur on a single staff. This element may also be used within the staff context to indicate changes of clef.</p>
</remarks>
</elementSpec>