<!-- Note: this is still in the idea stage. It is something 
I am trying to play with for a number of different reasons,
and has no official status, except that I hope to work on it
and improve it. for details of where I am up to check 
http://www.w3.org/People/Charles/caml" or email me at 
charles@w3.org if you like. Charles McCathieNevile, 18jun1999 -->

<!ENTITY % style
   PCDATA      #IMPLIED
   >

<!ENTITY % script
   PCDATA      #IMPLIED
   >

<!ENTITY % replaced
  "xml:link CDATA #FIXED 'simple'
   show CDATA #FIXED 'embed'
   actuate CDATA #FIXED 'auto'
   href CDATA #REQUIRED "
   >

<!ENTITY % id
  "id ID #IMPLIED">

<!-- need to put the rest of the something in here. Is this where "key" and timing should go? -->
<!ENTITY % dynamics
  "volume (pp|p|mp|m|mf|f|ff)          #IMPLIED
   speed  (allegro|something)          #IMPLIED"
   > 

<!ENTITY % events
  "onFocus             %script  #IMPLIED
   onBlur              %script  #IMPLIED
   onSelect            %script  #IMPLIED
   onChange            %script  #IMPLIED
   onArm               %script  #IMPLIED
   onDisarm            %script  #IMPLIED
   onActivate          %script  #IMPLIED
   onHyperactivate     %script  #IMPLIED"
   >

<!ENTITY % standard_attrs
  "%style;
   %events;
   %dynamics;
   %id;
   struct-role         #PCDATA     #IMPLIED"
   >

<!ENTITY % namespace
  "xmlns CDATA #FIXED 'http://www.w3.org/People/Charles/caml-19990618.dtd'"
   >

<!ELEMENT caml (namespace, title, (seq*))>

<!ELEMENT title (#PCDATA)>
<!ATTLIST title
   %style;
   %events;
   %id;
   >

<!ELEMENT seq (title?,(par|note|chord|sync|syncto|tie|use)*,#PCDATA)>
<!ATTLIST seq
   %standard_attrs;
   instrument        #PCDATA                          #IMPLIED
   key               #PCDATA                          #IMPLIED
   timing            #PCDATA                          #IMPLIED
   >

<!ELEMENT tie (title?,note,(note)+)>
<!ATTLIST tie
   %standard_attrs;
   instrument        #PCDATA               #IMPLIED
   >

<!ELEMENT par (title?,(seq|note|chord)*|#PCDATA)>
<!ATTLIST par
   %standard_attrs;
   synctype          (rb|explicit)    #IMPLIED   
   instrument        #PCDATA          #IMPLIED
   >

<!ELEMENT note (title?,#PCDATA)>
<!ATTLIST note
   %standard_attrs;
   dur		(br|semibr|min|quav|semiq|dsemiq)	#IMPLIED
   dot          (none|dot)                              #IMPLIED
   >

<!ELEMENT chord (title?,(note)*|#PCDATA)>
<!ATTLIST chord
   %standard_attrs;
   dur		(br|semibr|min|quav|semiq|dsemiq)	#IMPLIED
   dot          (none|dot)                              #IMPLIED
   >

<!ELEMENT use (title?)>
<!ATTLIST use
   %standard_attrs;
   %replaced;
   >

<!-- increase or decrease the volume to a new level at plateau -->
<!ELEMENT cresc (title?)>

<!ELEMENT dim (title?)>
 
<!ELEMENT plateau (title?)>
<!ATTLIST plateau
   volume (pp|p|mp|m|mf|f|ff) #IMPLIED
   >

<!ELEMENT sync (title?)>
<!ATTLIST sync
   %id;
   >

<!ELEMENT syncto EMPTY>
<!ATTLIST syncto
   href      CDATA             #REQUIRED
   >
