<!--****************************************************************************

Status:         Draft
Version:        0.01
Description:    This is the DTD for the eXtensible Score Language (XScore).
                This DTD conforms with XML 1.0
                This is a work in progress, subject to change at any time.
Creation Date:  1998-12-04
Author:         R. J. Grigaitis

Revisions:
    Date:       1998-12-15
    Version:    0.01
    Author:     R. J. Grigaitis
    Changes:    - made file public

*****************************************************************************-->


<!ENTITY    lt              "&#38;#60;">
<!ENTITY    gt              "&#62;">
<!ENTITY    amp             "&#38;#38;">
<!ENTITY    apos            "&#39;">
<!ENTITY    quot            "&#34;">

<!ELEMENT    xscore         (title*,composer*,reference*,staff*)>
<!ATTLIST    xscore         score       (pianoforte|open|short)  "short"
                            copyright   CDATA       #IMPLIED>

<!ELEMENT    title          (#PCDATA)*>
<!ELEMENT    composer       (#PCDATA)*>
<!ELEMENT    reference      (#PCDATA)*>

<!ELEMENT    staff          (bar*)>
<!ATTLIST    staff          instrument  CDATA       #IMPLIED>

<!ELEMENT    bar            (clef|key|time|tempo|voice)*>
<!ATTLIST    bar            id          ID          #IMPLIED
                            text        CDATA       #IMPLIED
                            repeat      (repeat|fine|dal-segno|da-capo|coda|bis|bar|ending)   #IMPLIED
                            repeat-ref  IDREF       #IMPLIED>

<!ELEMENT    clef           EMPTY>
<!ATTLIST    clef           clef        (treble|alto|tenor|bass)    "treble">

<!ELEMENT    key            EMPTY>
<!ATTLIST    key            flat-sharp  (-7|-6|-5|-4|-3|-2|-1|0|1|2|3|4|5|6|7)  #IMPLIED
                            key         (Cf|Gf|Df|Af|Ef|Bf|F|C|G|D|A|E|B|Fs|Cs|
                                        Afm|Efm|Bfm|Fm|Cm|Gm|Dm|Am|Em|Bm|Fsm|Csm|Gsm|Dsm|Asm)   #IMPLIED>

<!ELEMENT    time           EMPTY>
<!ATTLIST    time           beats       (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|
                                        17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)   #IMPLIED
                            note        (1|2|4|8|16|32|64|128)  #IMPLIED>

<!ELEMENT    tempo          (#PCDATA)*>
<!ATTLIST    tempo          note        (1|2|4|8|16|32|64|128)  #IMPLIED
                            bpm         CDATA       #IMPLIED>

<!ELEMENT    voice          (c|n|r)*>

<!ENTITY   % attr-notation  "id         ID          #IMPLIED
                            text        CDATA       #IMPLIED
                            d           (1|2|4|8|16|32|64|128)  #IMPLIED
                            dots        (1|2|3)     #IMPLIED
                            accent      (accent|attack|staccato|staccatissimo|mezzo-staccato|
                                        tenuto|grace|fermata|lunga-pausa)   #IMPLIED
                            dynamics    (ppppp|pppp|ppp|pp|p|mp|mf|f|ff|fff|ffff|fffff|sfz) #IMPLIED
                            hairpin     (crescendo|diminuendo)  #IMPLIED
                            hairpin-ref IDREF       #IMPLIED
                            muliplet    IDREF       #IMPLIED
                            octave-up   IDREF       #IMPLIED
                            octave-down IDREF       #IMPLIED
                            con-octave  IDREF       #IMPLIED
                            phrase      IDREF       #IMPLIED
                            tie-slur    IDREF       #IMPLIED
                            bow         (up|down)   #IMPLIED
                            pedal       IDREF       #IMPLIED
                            ped-text    CDATA       #IMPLIED">

<!ELEMENT    c              (note*)>
<!ATTLIST    c              %attr-notation;
                            arpeggio    (true)      #IMPLIED>

<!ELEMENT    n              (guitar?,word*)>
<!ATTLIST    n              %attr-notation;
                            p           CDATA       #IMPLIED
                            repeated    (8|16|32)   #IMPLIED
                            glissando   IDREF       #IMPLIED
                            trill       (true)      #IMPLIED
                            repeat      (bar|figure)    #IMPLIED>

<!ELEMENT    word           (#PCDATA)*>
<!ATTLIST    word           broken      (true)      #IMPLIED>

<!ELEMENT    r              (guitar?)>
<!ATTLIST    r              %attr-notation;
                            bars        CDATA       #IMPLIED>

<!ELEMENT guitar            (#PCDATA)*>
<!ATTLIST guitar            E           (0|1|2|3|4|5|6|7|8|9|10|11|12)  #IMPLIED
                            A           (0|1|2|3|4|5|6|7|8|9|10|11|12)  #IMPLIED
                            D           (0|1|2|3|4|5|6|7|8|9|10|11|12)  #IMPLIED
                            G           (0|1|2|3|4|5|6|7|8|9|10|11|12)  #IMPLIED
                            B           (0|1|2|3|4|5|6|7|8|9|10|11|12)  #IMPLIED
                            H           (0|1|2|3|4|5|6|7|8|9|10|11|12)  #IMPLIED>
