<!-- cas.dtd

    2004-05-25
    Created from KJP's Schema;
    "CAS" == Character Animation Stream, for ViSiCAST/eSIGN avatars.
-->


<!--  ENTITY definitions (used in ATTLIST specs. below).  -->

<!ENTITY % avatartype
    "( NoAvatar
    |  Visia3
    |  Visia2
    |  Visia4
    |  ARPMan
    |  NewVisia3
    |  VGuido
    |  ShadedVGuido
    |  ARP-Michael )"
>

<!ENTITY % locattribs
   "x    CDATA     #REQUIRED
    y    CDATA     #REQUIRED
    z    CDATA     #REQUIRED"
>

<!ENTITY % quaternionattribs
   "%locattribs;
    w    CDATA     #REQUIRED"
>


<!--  ELEMENT and ATTLIST definitions (from the top down).  -->

<!ELEMENT CAS  ( Frames )>
<!ATTLIST CAS
    Version   CDATA         #REQUIRED
    Avatar    %avatartype;  #REQUIRED
>

<!ELEMENT Frames  ( Frame+ )>
<!ATTLIST Frames
    Count     CDATA     #IMPLIED
>

<!ELEMENT Frame  ( Morph*, Bone* )>  <!-- NB KJP's Schema has "Bone+" -->
<!ATTLIST Frame
    Duration    CDATA   #REQUIRED
    SeqNo       CDATA   #IMPLIED
    TimeStamp   CDATA   #IMPLIED
    MorphCount  CDATA   #IMPLIED
    BoneCount   CDATA   #IMPLIED
>

<!ELEMENT Morph  EMPTY>
<!ATTLIST Morph
    Name        CDATA   #REQUIRED
    Value       CDATA   #REQUIRED
    SeqNo       CDATA   #IMPLIED
>

<!ELEMENT Bone  ( Position, QRotation )>
<!ATTLIST Bone
    SeqNo       CDATA   #IMPLIED
    Index       CDATA   #IMPLIED
    Name        CDATA   #IMPLIED
    Length      CDATA   #IMPLIED
>

<!ELEMENT Position  EMPTY>
<!ATTLIST Position
    %locattribs;
>

<!ELEMENT QRotation  EMPTY>
<!ATTLIST QRotation
    %quaternionattribs;
>


<!--  END cas.dtd  -->
