previous   next   contents  


9. The 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 term "profile family" needs definition. This can be done in Section B. In this document a link to that definition is to be inserted.

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, Events ( Schedule | MediaContent | MediaControl | LinkAnchor )*

The Attribute collections in this table are defined as follows

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

The Events collection is only defined when the Event Module (Section E) is selected in the profile.

@@ The enumeration of Events needs extension, e.g. with onRepeat, onClick, onMouseover, etc., or a reference to another specification is required.

@@ references to Section E need be checked in final version, plus an addition of a hyperlink to that section.

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

par, seq, excl [Section L]
ref, audio, video, img, animation, text, and textstream [Section I]
switch [Section D]
a, area [Section H]

@@ references to other sections need be checked in final version, plus an addition of a hyperlink to those sections.

@@ Do we allow area as child of body?

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

The body element associates with the root in the Media Object Model [Section I]. Its default schedule semantics equals that of the seq element.

@@ references to Section I need be checked in final version, plus an addition of a hyperlink to that section.

@@ The following is a proposal

Whereas the <smil> element represents the document (DOM) root, the <body> element represents the schedule/media root. This has the consequence that upon nesting of SMIL documents the tree downwards from the <body> of the nested document is included in the schedule of the parent SMIL document. Navigation calls as performed by <area>, XPointer, and the XML-DOM and SMIL-DOM, smoothly extend along this tree.

9.3 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.

<!-- ================================================================= -->
<!-- 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*)?">
<!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 

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

previous   next   contents