<!-- sigml11.dtd

    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 core SiGML 1.0, describing
    how to combine various sources of signing information into a
    single stream.
    The HamNoSys-based representations of manual and non-manual
    gestures, so-called core SiGML 1.0, are split off into separate
    files, sigmlmanual.dtd and sigmlnonmanual.dtd,
    which are included in this one.
-->


<!--
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 signing segments.
-->

<!ELEMENT sigml ( avatar?, ( %sigml_signing_unit; )* )>


<!--
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.
-->

<!ELEMENT animdata_sign (
    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.
-->

<!ELEMENT signing_ref EMPTY>
<!ATTLIST signing_ref
    uri        CDATA                   #REQUIRED
    format     ( BAF | XVBM | 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;


<!--
Incorporate XBAF/XVBM DTDs.
-->

<!ENTITY % xvbmdtd SYSTEM "xvbm.dtd">
%xvbmdtd;

<!ENTITY % xbafdtd SYSTEM "xbaf.dtd">
%xbafdtd;


<!-- End of SiGML DTD -->
