<!ELEMENT jml (pattern|patternlist)>
<!ATTLIST jml
version CDATA "1">
<!ELEMENT pattern (title?,info?,basepattern?,prop*,setup,symmetry+,(event|position)*)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT info (#PCDATA)>
<!ATTLIST info
tags CDATA #IMPLIED>
<!ELEMENT basepattern (#PCDATA)>
<!ATTLIST basepattern
notation CDATA #REQUIRED>
<!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
type CDATA "natural">
<!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?,info?,line*)>
<!ELEMENT line (#PCDATA|pattern|info)*>
<!ATTLIST line
display CDATA #REQUIRED
animprefs CDATA #IMPLIED
notation CDATA #IMPLIED>