previous   next   contents  

9. SMIL Structure Module

Warner ten Kate (, (Philips Electronics)

Table of contents

9.1 Introduction

This Section defines the SMIL structure module. The Structure Module provides the base elements for structuring SMIL content. These elements act as the root in the content model of SMIL-family document types. The Structure Module is a mandatory module in a profile building a member of the SMIL profile family. The Structure Module is isomorphic with the XHTML Structure Module [XMOD].

The SMIL Structure Module is composed out of the smil, head, and body element, and is compatible with SMIL 1.0 [SMIL10]. The corresponding SMIL 1.0 elements form a subset of the Structure Module, both in syntax and semantics, as their attributes and content model is also exposed by the Structure Module. Thus, the Structure Module is backwards compatible with SMIL 1.0.

9.2 The smil, head and body elements

This section is Informative.

The attributes and content model of the Structure Module elements is summarized in the following table:
The Elements with their Attributes and Content Model for the SMIL Structure Module.
Elements Attributes Minimal Content Model
smil Core, Accessibility, xmlns head?, body?
head Core, Accessibility, profile meta*, ( switch | layout )?
body Core, Accessibility ( Schedule | MediaContent | MediaControl | LinkAnchor )*
- skipContent N/A

The Attribute collections in this table are defined as follows

id (ID), class (NMTOKEN)
xml:lang (NMTOKEN), title (CDATA)

The collections in the table from the Content Model of the body element are defined as follows

par, seq, excl [Timing and Synchronization Module]
ref, audio, video, img, animation, text, and textstream [Media Object Module]
switch [Content Control Module]
a, area [Linking Module]

@@ check on completeness and correctness in final version.

The smil element acts as the root element for all Document Types of the SMIL-Family.

The head element contains information that is not related to the temporal behavior of the presentation.

The body element contains information that is related to the temporal and linking behavior of the document. It acts as the root element to span the timing tree.

The body element has the schedule semantics of a timecontainer equal to that of the seq element [Timing and Synchronization Module]. Note, that in other profiles, where a body element from another (Structure) Module is in use, that body element may have different schedule semantics. For example, in the HTML+SMIL profile, the body element takes the semantics of the par element.

The id attribute uniquely identifies an element within a document. Its value is an XML identifier.

The class attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters.

The xml:lang attribute specifies the language of an element, and is specified in XML 1.0 [XML10].

The title attribute offers advisory information about the element for which it is set. Values of the title attribute may be rendered by user agents in a variety of ways. For instance, visual browsers frequently display the title as a "tool tip" (a short message that appears when the pointing device pauses over an object).

The xmlns attribute declares an XML namespace, and is defined in "Namespaces in XML" [XML-NS].

The profile attribute specifies the profile to which the current document's Document Type conforms.

The skipContent attribute is specified in SMIL 1.0 [SMIL10]. The syntax notation "skip-content" has been deprecated, in favor of "skipContent". skipContent is interpreted in the following two cases:

If the value of the skipContent attribute is "true", and one of the cases above apply, the content of the element is ignored. If the value is "false", the content of the element is processed.
The default value for skipContent is "true".

9.3 Integrating the SMIL Structure Module

This section is Normative.

The SMIL Structure Module is the starting module when building any profile in the SMIL-family. The Structure Module cannot be used for building other, non SMIL-family, profiles. To be called a member of the SMIL-family the profile should at least include the following modules

@@ This should probably go elsewhere (Modules Module?).

This means that the SMIL Structure Module must at least be accompanied with the above two other modules. (Those modules can still be used in other, non SMIL-family, profiles.)

The integration of the SMIL Structure Module with other SMIL modules should conform to the descriptions in the SMIL-Boston profile.

When non-SMIL modules are integrated in the profile, it must be specified how the elements from those non-SMIL modules fit into the content model of the used SMIL modules (and vice versa). With respect to the SMIL Structure module, the Profiling Entities in the DTD need to be overridden. This realizes a so-called hybrid document type [XMOD]. In case of a so-called compound document type, the rules of XML-namespaces must be satisfied [XML-NS].

9.4 DTD

This section is Normative.

This section specifies the DTD of the SMIL Structure Module.

@@ Check for harmonizing with [XMOD] when that receives REC status.

@@ Update the events naming with XML-DOM and SMIL-DOM.

@@ The xml:base attribute needs to be added, awaiting XLink resolutions. This also requires adaptation in the meta Module. Note, that XHTML knows a separate Base Module.

@@ How to add "skipContent"?

<!-- ================================================================= -->
<!-- SMIL Structure Module  ========================================== -->
<!-- file: SMIL-struct.mod

     This is Smil-Boston.
     Copyright 1999 W3C (MIT, INRIA, Keio), All Rights Reserved.

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

     PUBLIC "-//W3C//ELEMENTS SMIL-Boston Document Structure//EN"
     SYSTEM "SMIL-struct.mod"

     ================================================================= -->

<!-- ================== General entities ========================== -->

<!ENTITY % SMIL.ns "SMIL-Boston.dtd" >
<!ENTITY % SMIL.profile "SMIL-Boston.dtd" >

<!ENTITY % core 
        "id ID #IMPLIED
         class NMTOKEN #IMPLIED"

<!ENTITY % accessibility 
        "xml:lang NMTOKEN #IMPLIED
         title CDATA #IMPLIED"

        "onMouseover CDATA #IMPLIED
         onClick CDATA #IMPLIED
         onEtc CDATA #IMPLIED"
        "onBegin CDATA #IMPLIED
         onEnd CDATA #IMPLIED
         onEtc CDATA #IMPLIED"

<!-- ================== Profiling Entities ======================== -->

<!ENTITY % XSmil.attr "" >

<!ENTITY % XBody.attr "" >
<!ENTITY % XBody.content "" >

<!ENTITY % XHead.attr "" >
<!ENTITY % XHead.content "" >

<!-- ================== SMIL Document Root ======================== -->

<!ELEMENT smil (head?,body?)>
<!ATTLIST smil 
        xmlns %URI; #FIXED "%SMIL.ns;"

<!-- ================== The Document Head ========================= -->

<!ENTITY % layout-section "layout|switch">
<!ENTITY % Head.content "(meta*,(%layout-section;),meta*,(%XHead.content;),meta*)?">

<!ELEMENT head %Head.content;>
<!ATTLIST head 
        profile %URI; #FIXED "%SMIL.profile;"

<!--=================== The Document Body - Schedule Root ========= -->

<!ENTITY % schedule "par|seq|excl">
<!ENTITY % media-object "audio|video|text|img|animation|textstream|ref">
<!ENTITY % content-control "switch">
<!ENTITY % link "a|area">
<!ENTITY % Body.content "%schedule;|%media-object;|%content-control;|%link;">

<!ELEMENT body (%Body.content;|%XBody.content;)*>
<!ATTLIST body 
        dur                  CDATA               #IMPLIED
        repeatCount          CDATA               #IMPLIED
        repeatDur            CDATA               #IMPLIED
        defaultSyncBehavior  (locked | canSLip)  "canSlip"
        defaultSyncTolerance CDATA               #IMPLIED

<!-- end of SMIL-struct.mod -->

previous   next   contents