15.
HTML+SMIL Language Profile

The HTML+SMIL profile integrates a subset of the SMIL Boston specification
with HTML. It includes the SMIL Boston modules supporting animation, content
control, linking, media objects, timing an synchronization, and transition
effects. The SMIL Boston features are integrated directly with HTML and CSS,
and can be used to manipulate HTML and CSS features. It is designed for Web
clients that support HTML+SMIL markup.

The document type definition or Schema is implemented using SMIL modules
as defined in "Modularization of SMIL" [SMIL-MOD].

15.2
Introduction

This section is informative.

This profile describes the SMIL modules that are included, and details the
integration issues. The language integration includes the complete set of
XHTML 1.1 modules. @@ We really need aspects of XHTML
2.0, but that is not very far along yet).

Throughout the document, where reference is made to "HTML" functionality
and elements, this should be understood to refer to XHTML modules and elements.

15.3
Normative Definition of SMIL Boston

A conforming HTML+SMIL document is a document that requires only
the facilities described as mandatory in this specification. Such a document
must meet all of the following criteria:

It must validate against the DTD (in future the
Schema) found in Appendix
A

The root element of the document must be html.

The name of the default namespace on the root element must be the HTML+SMIL
namespace name, (TBD)

There must be a DOCTYPE declaration in the document prior to the root element.
If present, the public identifier included in the DOCTYPE declaration must
reference the DTD found in Appendix
A using its Formal Public Identifier. The system identifier may be modified
appropriately.

15.3.3
HTML+SMIL Profile

The HTML functionality in the HTML+SMIL document type is based upon XHTML
1.1 modules and associated document type. The XHTML 1.1 document type is
made up of the following abstract modules, as defined in XHTMLMOD [XMOD],
and the Ruby Annotation module as defined in [RUBY].The formal definition
of the modules is not repeated here, but only the extensions introduced with
timing. The notation, terms and document conventions used here are borrowed
from [XMOD].

This module adds the animate,
set,
animateMotion, and
animateColor elements to the content model of the
par,
seq, and
excl elements of the Timing and
Synchronization Module. It adds the
animate, set, and
animateColor elements to the
content model of the elements of the Basic Text, Hypertext, List, Applet,
Presentation, Edit, Tables, Image, Client-side Image Map, Server-side Image
Map, Object and Legacy modules, as defined in XHTMLMOD [XMOD]. It adds
the animateMotion element
to the content model of the elements of the Basic Text and Image modules
(and possibly a few others - need to nail this down).

This module adds the switch element
to the Flow content set of the Basic Text module. It also adds the Test
attributes set to the elements in the Flow content set of the Basic Text
Module (as modified by all included modules).

15.3.6
Linking Module

The SMIL Boston linking module is isomorphic to functionality defined in
the XHTML modules. However, it adds some additional attributes and semantics
to the a and area elements in XHTML. Rather than describing the elements
that are added, the additional functionality defined on the HTML elements
a and
area is described.

This module adds the area element to the content model for the elements in
the Media module.

15.3.7
Media Object Module

The Media Object Module provides a framework for declaring media. The Media
Object Module defines semantics for the
ref, animation,
audio,
img, video,
text, and
textstream elements. XHTML defines an img element, and so the
integration of the Media module extends the semantics and content model of
this element.

This module adds the ref,
animation,
audio, img,
video,
text, and
textstream elements to the content
model of the par,
seq, and
excl elements of the Timing and Synchronization Module. It
also adds these elements to the Inline content set of the Basic Text Module.

15.3.8
Timing and Synchronization
Module

The Timing and Synchronization Module provides a framework for describing
timing structure, timing control properties, and temporal relationships between
elements.

In addition to the data types defined by XHTML Modularization, The HTML+SMIL
profile defines the TimeActions data type and its semantics, described in
the following table:

Authors may use the following recognized time actions, listed here with
their interpretations.

none

Specifies that no action is performed on the element when it is active. This
is only legal for time containers, and allows the author to introduce a new
time space without affecting the document presentation.

visibility

Specifies that the CSS "visibility" property is to be manipulated over time.
When the element is neither active nor frozen, the property is set to "hidden".
When it is active, the original value is used. If the original value is "hidden",
the time action will have no effect (i.e. the element will remain hidden).
See also [CSS2]

display

Specifies that the CSS "display" property is to be manipulated over time.
When the element is neither active nor frozen, the property is set to "none".
When it is active, the original value is used. If the original value is "none",
the time action will have no effect (i.e. the element will remain out of
view and layout). See also [CSS2]

style

Specifies that the CSS inline style attribute "style" is to be removed and
applied over time. When the element is neither active nor frozen, the inline
stylesheet is cleared (so no style modification is made). When it is active,
the original value (i.e. the string attribute value specified for the "style"
attribute) is used. If there is no inline style attribute on the element,
the time action will have no effect. See also [CSS2]

class:classname

Specifies that the name "[classname]" will be removed from
and added to the value of the "class" attribute over time. When
the element is neither active nor frozen, the specified string (i.e. whatever
the author specifies for "classname") is removed from the value
of the class attribute (if it was included). When the element is active,
the specified string is added to the value of the class attribute. Note that
any other values specified in the class attribute are not affected. Note
also that the application of any associated style must be specified in a
stylesheets for the document. Note finally that the application of styles
depends not upon the order of names in the class attribute, but rather on
the order of the rules in the stylesheets for the document. See also [CSS2].

The Timing and Synchronization Module defines the Attribute sets "Timing"
and "RuntimeSync".

The Timing and Synchronization Module adds the
Timing and
RuntimeSync attribute set to the elements
in the Media Module, and adds the Timing attribute
set to the Flow content set of the Basic Text Module (as modified by all
included modules).

The Timing and Synchronization Module defines the elements
par,
seq, and
excl.

This module adds the par,
seq, and
excl elements to the Inline content set of the Basic Text,
Hypertext and Tables Modules.

As part of the integration of timing and synchronization functionality with
HTML, two additional attributes are defined for many of the HTML elements:
timeContainer and
timeAction. This module adds
the timeContainer attribute
to the elements of the Flow content set of the Basic Text Module (as modified
by all included modules).

The timeAction attribute defines
the behavior that is controlled by the timing model. The default depends
upon the type of element. A special value "none" is reserved for use with
the time container elements and with elements that have been set to be a
time container (using the
timeContainer attribute:
timeContainer = [par,seq,excl]").

The following table presents the default time actions. Those modules and
elements that are not included do not have a defined time behavior, and cannot
legally support timing attributes, or participate in the time model.

Certain elements have a reasonable notion of intrinsic behavior that can
be controlled over time. This is generally some presentation or behavioral
effect, such as the font style controls of the b
and strong elements, and the click sensitivity
of the a and area elements.
One way to logically model the control of intrinsic behavior is to convert
the element to a span when it is neither active
nor frozen, and to use the original element when it is active or frozen.

Many other elements simply contain content and so default to controlling
the "visibility" property for the element. In some cases, an element may
have a presentational effect (e.g. the Ruby module elements), but be modeled
as a content element. The decision is based upon the usefulness in common
authoring scenarios of controlling the presentational behavior in isolation.

For those elements that default to controlling "visibility", setting
timeAction to any other value
overrides this, and will only control the specified
timeAction (and not the visibility).
For all other elements, the
timeAction will control the default
(intrinsic) behavior as well as the indicated
timeAction behavior.

In addition, for those elements that default to "visibility", when they are
children of a sequence time container
seq or an element with
"timeContainer=seq", the default
timeAction is "display". This
more closely matches the expected behavior of the SMIL Language profile.

Module

Elements

Default time action

Structure

body

"none"

Media

(all)

schedule and render

Timing

(all)

"none"

Text

em

intrinsic effect

Text

kbd

intrinsic effect

Text

strong

intrinsic effect

Text

var

intrinsic effect

Text

(all others)

"visibility"

Hypertext

a

link sensitivity

Lists

(all)

"visibility"

Applet

applet

"visibility"

Presentational

(all)

intrinsic effect

Edit

(all)

intrinsic effect

Forms

(all)

"visibility"

Tables

(all)

"visibility"

Image Map

area

link sensitivity

Object

object

"visibility"

Iframe

iframe

"visibility"

Ruby

(all)

"visibility"

Legacy

(all)

intrinsic effect

All modules not listed in the table, and all Structure module elements except
body do not support timing.