<!ELEMENT jml (pattern|patternlist)>
<!ATTLIST jml
          version  CDATA   "1.0">

<!ELEMENT pattern (title?,prop*,setup,symmetry+,event+)>

<!ELEMENT title (#PCDATA)>

<!ELEMENT prop EMPTY>
<!ATTLIST prop
          type     CDATA   "ball"
          mod      CDATA   #IMPLIED>

<!ELEMENT setup EMPTY>
<!ATTLIST setup
          jugglers CDATA   "1"
          paths    CDATA   #REQUIRED
          props    CDATA   #IMPLIED>

<!ELEMENT symmetry EMPTY>
<!ATTLIST symmetry
          type     CDATA   #REQUIRED
          jperm    CDATA   #IMPLIED
          pperm    CDATA   #REQUIRED
          delay    CDATA   #IMPLIED>

<!ELEMENT event (throw|catch|softcatch|holding)*>
<!ATTLIST event
          x        CDATA   #REQUIRED
          y        CDATA   "0.0"
          z        CDATA   "0.0"
          t        CDATA   #REQUIRED
          hand     CDATA   #REQUIRED>

<!ELEMENT throw EMPTY>
<!ATTLIST throw
          path     CDATA   #REQUIRED
          type     CDATA   "toss"
          mod      CDATA   #IMPLIED>

<!ELEMENT catch EMPTY>
<!ATTLIST catch
          path     CDATA   #REQUIRED>

<!ELEMENT softcatch EMPTY>
<!ATTLIST softcatch
          path     CDATA   #REQUIRED>
		  
<!ELEMENT holding EMPTY>
<!ATTLIST holding
          path     CDATA   #REQUIRED>

<!ELEMENT position EMPTY>
<!ATTLIST position
          x        CDATA   #REQUIRED
          y        CDATA   #REQUIRED
          z        CDATA   "100.0"
          t        CDATA   #REQUIRED
          angle    CDATA   "0.0"
          juggler  CDATA   "1">

<!ELEMENT patternlist (title?,line*)>

<!ELEMENT line EMPTY>
<!ATTLIST line
          display    CDATA   #REQUIRED
          animprefs  CDATA   #IMPLIED
          notation   CDATA   #IMPLIED
          pattern    CDATA   #IMPLIED>