VocalEasel/musicxml11/score.dtd

310 lines
9.6 KiB
DTD
Raw Permalink Normal View History

2011-09-02 00:45:26 +00:00
<!--
MusicXML score.dtd
Version 1.1 - 20 May 2005
Copyright © 2004-2005 Recordare LLC.
http://www.recordare.com/
This MusicXML work is being provided by the copyright
holder under the MusicXML Document Type Definition
Public License Version 1.02, available from:
http://www.recordare.com/dtds/license.html
-->
<!--
Works and movements are optionally identified by number
and title. The work element also may indicate a link
to the opus document that composes multiple movements
into a collection.
-->
<!ELEMENT work (work-number?, work-title?, opus?)>
<!ELEMENT work-number (#PCDATA)>
<!ELEMENT work-title (#PCDATA)>
<!ELEMENT opus EMPTY>
<!ATTLIST opus
%link-attributes;
>
<!ELEMENT movement-number (#PCDATA)>
<!ELEMENT movement-title (#PCDATA)>
<!--
Collect score-wide defaults. This includes scaling
and layout, defined in layout.dtd, and default values
for the music font, word font, lyric font, and
lyric language. The number and name attributes in
lyric-font and lyric-language elements are typically
used when lyrics are provided in multiple languages.
If the number and name attributes are omitted, the
lyric-font and lyric-language values apply to all
numbers and names.
-->
<!ELEMENT defaults (scaling?, page-layout?,
system-layout?, staff-layout*, music-font?,
word-font?, lyric-font*, lyric-language*)>
<!ELEMENT music-font EMPTY>
<!ATTLIST music-font
%font;
>
<!ELEMENT word-font EMPTY>
<!ATTLIST word-font
%font;
>
<!ELEMENT lyric-font EMPTY>
<!ATTLIST lyric-font
number NMTOKEN #IMPLIED
name CDATA #IMPLIED
%font;
>
<!ELEMENT lyric-language EMPTY>
<!ATTLIST lyric-language
number NMTOKEN #IMPLIED
name CDATA #IMPLIED
xml:lang NMTOKEN #REQUIRED
>
<!--
Credit elements refer to the title, composer, arranger,
lyricist, copyright, dedication, and other text that
appears on the first page of a score. The credit-words
element is similar to the words element for directions.
However, since the credit is not part of a measure,
the default-x and default-y attributes adjust the
origin relative to the bottom left-hand corner of
the first page. The enclosure is none by default.
-->
<!ELEMENT credit (credit-words+)>
<!ELEMENT credit-words (#PCDATA)>
<!ATTLIST credit-words
%justify;
%halign;
%valign;
%print-style;
xml:lang NMTOKEN #IMPLIED
enclosure (rectangle | oval | none) #IMPLIED
>
<!--
The part-list identifies the different musical parts in
this movement. Each part has an ID that is used later
within the musical data. Since parts may be encoded
separately and combined later, identification elements
are present at both the score and score-part levels.
There must be at least one score-part, combined as
desired with part-group elements that indicate braces
and brackets. Parts are ordered from top to bottom in
a score based on the order in which they appear in the
part-list.
Each MusicXML part corresponds to a track in a Standard
MIDI Format 1 file. The score-instrument elements are
used when there are multiple instruments per track.
The midi-device element is used to make a MIDI device
or port assignment for the given track. Initial
midi-instrument assignments may be made here as well.
-->
<!ELEMENT part-list (part-group*, score-part,
(part-group | score-part)*)>
<!ELEMENT score-part (identification?, part-name,
part-abbreviation?, group*, score-instrument*,
midi-device?, midi-instrument*)>
<!ATTLIST score-part
id ID #REQUIRED
>
<!--
The part-name indicates the full name of the musical
part. The part-abbreviation indicates the abbreviated
version of the name of the musical part. The part-name
will often precede the first system, while the
part-abbreviation will precede the other systems.
-->
<!ELEMENT part-name (#PCDATA)>
<!ATTLIST part-name
%print-style;
%print-object;
%justify;
>
<!ELEMENT part-abbreviation (#PCDATA)>
<!ATTLIST part-abbreviation
%print-style;
%print-object;
%justify;
>
<!--
The part-group element indicates groupings of parts in
the score, usually indicated by braces and brackets.
The number attribute is used to distinguish overlapping
and nested part-groups, not the sequence of groups. As
with parts, groups can have a name and abbreviation.
The group-symbol element indicates how the group is
indicated on the score. Values include none (default),
brace, line, and bracket. Values for the child elements
are ignored at the stop of a group. The group-barline
element indicates if the group should have common
barlines. Values can be yes, no, or Mensurstrich.
-->
<!ELEMENT part-group (group-name?, group-abbreviation?,
group-symbol?, group-barline?, %editorial;)>
<!ATTLIST part-group
type %start-stop; #REQUIRED
number CDATA "1"
>
<!ELEMENT group-name (#PCDATA)>
<!ATTLIST group-name
%print-style;
%justify;
>
<!ELEMENT group-abbreviation (#PCDATA)>
<!ATTLIST group-abbreviation
%print-style;
%justify;
>
<!ELEMENT group-symbol (#PCDATA)>
<!ATTLIST group-symbol
%position;
%color;
>
<!ELEMENT group-barline (#PCDATA)>
<!ATTLIST group-barline
%color;
>
<!--
The score-instrument element allows for multiple
instruments per score-part. As with the score-part
element, each score-instrument has a required ID
attribute, a name, and an optional abbreviation.
A score-instrument element is also required if the
score specifies MIDI channels, banks, or programs.
An initial midi-instrument assignment can also
be made here. MusicXML software should be able to
automatically assign reasonable channels and
instruments without these elements in simple cases,
such as where part names match General MIDI
instrument names.
The midi-instrument element is defined in common.dtd,
as it can be used within both the score-part and
sound elements.
-->
<!ELEMENT score-instrument
(instrument-name, instrument-abbreviation?)>
<!ATTLIST score-instrument
id ID #REQUIRED
>
<!ELEMENT instrument-name (#PCDATA)>
<!ELEMENT instrument-abbreviation (#PCDATA)>
<!--
The midi-device content corresponds to the DeviceName
meta event in Standard MIDI Files. The optional port
attribute is a number from 1 to 16 that can be used
with the unofficial MIDI port (or cable) meta event.
-->
<!ELEMENT midi-device (#PCDATA)>
<!ATTLIST midi-device
port CDATA #IMPLIED
>
<!--
The group element allows the use of different versions
of the part for different purposes. Typical values
include score, parts, sound, and data. Ordering
information that is directly encoded in MuseData can
be derived from the ordering within a score or opus
in MusicXML.
-->
<!ELEMENT group (#PCDATA)>
<!--
Here is the basic musical data that is either associated
with a part or a measure, depending on whether partwise
or timewise hierarchy is used.
-->
<!ENTITY % music-data
"(note | backup | forward | direction | attributes |
harmony | figured-bass | print | sound | barline |
grouping | link | bookmark)*">
<!--
The score-header entity contains basic score metadata
about the work and movement, score-wide defaults for
layout and fonts, credits that appear on the first page,
and the part list.
-->
<!ENTITY % score-header
"(work?, movement-number?, movement-title?,
identification?, defaults?, credit*, part-list)">
<!--
The score is the root element for the DTD. It includes
the score-header entity, followed either by a series of
parts with measures inside (score-partwise) or a series
of measures with parts inside (score-timewise). Having
distinct top-level elements for partwise and timewise
scores makes it easy to ensure that an XSLT stylesheet
does not try to transform a document already in the
desired format.
The version attribute is new to MusicXML 1.1. It provides
an easier way to get version information than through the
MusicXML public ID. The default value is 1.0 to make it
possible for programs that handle version 1.1 to
distinguish version 1.0 files reliably. Programs that
write MusicXML 1.1 files should set this attribute.
-->
<![ %partwise; [
<!ELEMENT score-partwise (%score-header;, part+)>
<!ATTLIST score-partwise
version CDATA "1.0"
>
<!ELEMENT part (measure+)>
<!ELEMENT measure (%music-data;)>
]]>
<![ %timewise; [
<!ELEMENT score-timewise (%score-header;, measure+)>
<!ATTLIST score-timewise
version CDATA "1.0"
>
<!ELEMENT measure (part+)>
<!ELEMENT part (%music-data;)>
]]>
<!--
In either format, the part element has an id attribute
that is an IDREF back to a score-part in the part-list.
Measures have a required number attribute (going from
partwise to timewise, measures are grouped via the
number).
-->
<!ATTLIST part
id IDREF #REQUIRED
>
<!--
The implicit attribute is set to "yes" for measures where
the measure number should never appear, such as pickup
measures and the last half of mid-measure repeats. The
value is "no" if not specified.
The non-controlling attribute indicates that this measure
in this part does not necessarily synchronize with other
measures in other parts. This is intended for use in
multimetric music like the Don Giovanni minuet. The
value is "no" if not specified.
Measure width is specified in tenths. These are the
global tenths specified in the scaling element, not
local tenths as modified by the staff-size element.
-->
<!ATTLIST measure
number CDATA #REQUIRED
implicit %yes-no; #IMPLIED
non-controlling %yes-no; #IMPLIED
width %tenths; #IMPLIED
>