<!-- sigml12.dtd

    2006-04-25:
    SiGML 1.2.1
    -Introduce explicit base_uri attribute for <sigml> element.
    (RE)

    2004-05-25:
    SiGML 1.2
    -Supplant BAF/VBM by CAS;
    -Introduce <player_settings> element.

    2003-03-03:
    SiGML 1.1    First post-ViSiCAST version of SiGML.
    Introduces hns_sign element for HNST, animdata_sign element
    for embedded animation data, signing_ref element for a
    signing definition (BAF, XVBM, or nested SiGML) accessed via
    a URI - and the notion of a SiGML "Signing Unit".
    (All subject to further adjustment.)
    (RE)

    2001-07-27:
    Introduction of sigmlh4 DTD, with changes arising from the
    conversion of the h2s translator to process HamNoSys 4.
    (RE)
    -use sigmlh4manual rather than sigmlmanual;


    ================================================================
    This is the DTD for the top level of SiGML version 1,
    describing how various sources of signing information may be
    combined into a single stream.

    The main SiGML modules are defined in separate files,
    included, directly or indirectly, in this one:

    Gestural-SiGML
    ==============
    Gestural-SiGML allows signs to be defined using a gestural model
    based on the HamNoSys 4 model of SL phonetics.

    sigmlh4manual.dtd     manual component of gestural-SiGML
    sigmlnonmanual.dtd    non-manual component of gestural-SiGML

    HNS-SiGML
    =========
    HNS-SiGML provides a direct representation of HamNoSys sequences
    as XML element sequences.  Sequences of this kind can be
    translated into Gestural-SiGML.

    sigmlhns.dtd          manual component of HNS-SiGML
    hnsnonmanual.dtd      non-manual component of HNS-SiGML

    CAS
    ===
    CAS - "Character Animation Stream" - is the format defining
    physical level animation data for each frame of an animation.

    Player-Settings
    ===============
    Provide SiGML-level control of the avatars "environmental"
    setttings, currently camera settings and ambient motions
    settings.
    ================================================================
-->


<!--
We use a SMIL-like representation of for a sign's speed attribute,
which has a numeric value with 1.0 as the implicit standard value.
-->
<!ENTITY % speed
    "speed  CDATA  #IMPLIED"
>


<!--
A gloss for a sign is an arbitrary string, naming that sign.
The language of the gloss word, and the sign language of the
glossed sign may also be specified (the former by its standard
ISO code).
-->

<!ENTITY % gloss_attribs
    "gloss         CDATA  #REQUIRED
    gloss_language CDATA  #IMPLIED
    sign_language  CDATA  #IMPLIED"
>


<!--
W.e.f. v1.1: a SiGML sign is one of:

    (0) A core SiGML gestural description (based on HamNoSys 4);
    (1) Tokenized HamNoSys (HNST data as XML);
    (2) Embedded "bones/morphs/..." animation data stream.

Whatever its kind, a sign may have the standard gloss attributes.

A SiGML signing unit (SU) is one of:
    - a SiGML sign (as above);
    - a (URI) reference to an external signing resource;
    - a gestural segment (yet to be supported) - a seqence of gestural
      signs accompanied by a single unit of non-manual signing.
-->

<!ENTITY % sigml_sign
    "hamgestural_sign |
    hns_sign |
    animdata_sign"
>

<!ENTITY % sigml_signing_unit
    "%sigml_sign; |
    signing_ref |
    hamgestural_segment"
>


<!--
A SiGML document consists of an optional signing avatar
characterization followed by a sequence of SiGML signing units
(SUs), each of which may (w.e.f. 2004-05-25) be prefixed with
an optional player-settings spec.
If a SU is prefixed by a player-settings element
then those settings are applied to the avatar control
immediately prior to display of the first frame for that
SU.
A SU not prefixed by a player-settings element inherits the
settings of the preceding SU, if there is one, or the initial
settings otherwise.
(Of course the settings established by a player-settings elements
may subsequently be overridden by settings the user makes manually
using the mouse.)
-->

<!ELEMENT sigml (
    avatar?,
    (
      player_settings?,
      ( %sigml_signing_unit; )
    )*
)>
<!ATTLIST sigml
    base_uri  CDATA  #IMPLIED
>


<!--
A signing avatar may have a name, as used by Televirtual avatar
software (e.g. "visia"),  and a URI for any relevant avatar
description data (e.g. for a VRML avatar).
-->

<!ELEMENT avatar EMPTY>
<!ATTLIST avatar
    name  CDATA  #IMPLIED
    definition_uri  CDATA  #IMPLIED
>


<!--
A SiGML stream defines a sequence of time-stamped sections suitable
for the definition of a signed accompaniment to a broadcasting
programme.

sigmlsection's present and sigmlstream's duration attributes are
clock values of the form
        HH:MM:SS.CC
representing hours, minutes, seconds, and hundredths of a second.
-->

<!ELEMENT sigmlstream ( sigmlsection* )>
<!ATTLIST sigmlstream
    duration CDATA  #IMPLIED
>

<!ELEMENT sigmlsection ( avatar?, ( hamgestural_sign )* )>
<!ATTLIST sigmlsection
    present  CDATA  #IMPLIED
>


<!--
(0) A HamNoSys-style gestural sign is specified by a an optional
manual part and an optional non-manual part.
-->

<!ELEMENT hamgestural_sign
    (
        ( sign_manual, sign_nonmanual? )
    |
        ( sign_nonmanual, sign_manual? )
    )?
>
<!ATTLIST hamgestural_sign
    %gloss_attribs;
    %speed;
>


<!--
(1) A hns sign is a tokenized version of a (valid) HamNoSys string,
that is, an XML version of HNST.
-->

<!ELEMENT hns_sign (
    hamnosys_nonmanual?, hamnosys_manual
)>
<!ATTLIST hns_sign
    %gloss_attribs;
    %speed;
>


<!--
(2) An animdata sign consists of an embedded "bones/morphs/..."
data stream in either XBAF or XVBM formats.

2004-05-25:  BAF(BonesAnimation)/VBM no longer supported; but CAS is.
             (Really: SiGMLSigning currently does not accept even CAS in-line.)
-->

<!ELEMENT animdata_sign ( CAS )>
<!--  old content model (see above): ( BonesAnimation | VBM )  -->
<!ATTLIST animdata_sign
    %gloss_attribs;
    %speed;
>


<!--
A signing reference defines the URI of a resource containing
signing data which is to be included in the present sequence
of signing units; supported formats for this resource are:
BAF, XVBM, and (nested) SiGML.

2004-05-25:  BAF/(X)VBM are no longer supported; but CAS is.
-->

<!ELEMENT signing_ref EMPTY>
<!ATTLIST signing_ref
    uri        CDATA              #REQUIRED
    format     ( CAS | SiGML )    #REQUIRED
    compressed ( yes | no )       #REQUIRED
    %speed;
>



<!--
A gestural segment allows a single unit of non-manual signing
to accompany a (non-trivial) sequence of signing gestures.
If any feature is specified both at the segment level and at
the level of an individual sign within the segment, then the
latter specification takes precedence over the former (or, in
the case of speed, is interpreted relative to the former, as
in SMIL).  This applies to the following features:
    -specification for a given non-manual tier;
    -gloss/sign language attributes;
    -speed.
Speed example: if the segment has "speed='2'" and an enclosed
sign has "speed='0.75'", then the effective speed value for
that sign is 1.5.
-->

<!ELEMENT hamgestural_segment
    (
        ( hamgestural_sign, hamgestural_sign+, sign_nonmanual )
    |
        ( sign_nonmanual, hamgestural_sign, hamgestural_sign+ )
    )
>
<!ATTLIST hamgestural_segment
    %gloss_attribs;
    %speed;
>


<!--
Include the DTDs for manual and non-manual core SiGML
and for HNST (Tokenized HamNoSys).
-->

<!ENTITY % sigmlmanualdtd SYSTEM "sigmlh4manual.dtd">
%sigmlmanualdtd;

<!ENTITY % sigmlnonmanualdtd SYSTEM "sigmlnonmanual.dtd">
%sigmlnonmanualdtd;

<!ENTITY % sigmlhnsdtd SYSTEM "sigmlhns.dtd">
%sigmlhnsdtd;


<!-- 2004-05-25:  Incorporate player settings DTD. -->

<!ENTITY % playerdtd SYSTEM "player.dtd">
%playerdtd;

<!-- 2004-05-25:  BAF/VBM are no longer supported; but CAS is. -->

<!ENTITY % casdtd SYSTEM "cas.dtd">
%casdtd;

<!--
(No longer [see above] ...)
Incorporate XBAF/XVBM DTDs.

<!ENTITY % xvbmdtd SYSTEM "xvbm.dtd">
%xvbmdtd;

<!ENTITY % xbafdtd SYSTEM "xbaf.dtd">
%xbafdtd;
-->


<!-- End of SiGML DTD -->
