previous next contents

# 13. SMIL 2.0 Language Profile

Editors:
  Nabil Layaïda (Nabil.Layaida@inrialpes.fr), INRIA
  Jacco Van Ossenbruggen (Jacco.van.Ossenbruggen@cwi.nl), CWI

## Table of contents

## 13.1 Abstract

This document specifies the second version of the Synchronized Multimedia Integration Language (SMIL, pronounced "smile"). The SMIL 2.0 profile describes the SMIL 2.0 modules that are included in the SMIL 2.0 Language and details how these modules are integrated. It contains support for all of the major SMIL 2.0 features including animation, content control, layout, linking, media object, meta-information, structure, timing and transition effects. It is designed for Web clients that support direct playback from SMIL 2.0 markup.

## 13.2 SMIL 2.0 Profile

This section is informative.

The SMIL 2.0 Profile is defined as a markup language. The syntax of this language is formally described with a document type definition (DTD) or XML Schema which is based on the SMIL modules as defined in "The SMIL 2.0 Modules" [SMIL-MOD]

The SMIL 2.0 Profile design requirements are:

1. Ensure that the profile is completely backward compatible with SMIL 1.0.
2. Ensure that all the modules' semantics maintain compatibility with SMIL semantics (this includes content and timing).
3. Adopt new W3C recommendations when appropriate without conflicting with other requirements.

## 13.3 Normative Definition of the SMIL 2.0 Language Profile

This section is normative.

### 13.3.1 Document Conformance

This version of SMIL provides a definition of strictly conforming SMIL 2.0 documents, which are restricted to tags and attributes from the SMIL 2.0 namespace. The Section "Extending SMIL 2.0 Language" provides information on using SMIL 2.0 with other namespaces, for instance, on including new tags within SMIL 2.0 documents.

### 13.3.2 Conforming SMIL 2.0 Documents

A SMIL 2.0 document is a conforming SMIL 2.0 Document if it adheres to the specification described in this document (Synchronized Multimedia Integration Language (SMIL) 2.0 Profile Specification) including SMIL 2.0's DTD (see Document Type Definition). A conforming SMIL 2.0 document is a document that requires only the facilities described as mandatory in this specification. It must also meet all of the following criteria:

1. The root element of the document is the smil element.
2. The document must be well-formed XML.
3. It must conform to the following W3C Recommendations:
   - The XML 1.0 specification (Extensible Markup Language (XML) 1.0) [XML10].
   - Namespaces in XML [XML-NS], we require at least the support for the default namespace declaration.
   - Any use of CSS styles and properties shall conform to Cascading Style Sheets, level 2 CSS2 Specification [CSS2].
4. A document may additionally identify itself as a SMIL document via a SMIL DOCTYPE declaration (though a SMIL 2.0 document must still include the SMIL 2.0 namespace identifier, as detailed below). This declaration will identify a DTD that the document can be validated against, and requires that the document be purely of the type defined by the referenced DTD, without extensions. If the document does not validate, the user agent should issue an error.

   The SMIL 2.0 Language DOCTYPE is:

       <!DOCTYPE SMIL PUBLIC "-//W3C//DTD SMIL 2.0//EN"
                             "http://www.w3.org/TR/REC-smil/2000/SMIL20.dtd">

   This DOCTYPE declares a valid, extension-free, SMIL 2.0 document.

5. A document MUST declare a default namespace for its elements. This default namespace will fall into one of three types:
   1. Default namespace recognized in its entirety by the player. The player should process the document as the recognized version. Any elements, attributes, or other syntax not defined by the default namespace must be declared fully qualified using the XML namespace mechanism. The "skip-content" mechanism (defined in the SkipContent module) will be applied to extension elements unrecognized by the player. Unqualified elements not part of the default namespace are illegal and will result in an error.

      Examples:

      1) A pure SMIL 1.0 document:

          <smil xmlns="http://www.w3.org/TR/REC-smil">
           ...
          </smil>

      2) A pure SMIL 2.0 document:

          <smil xmlns="http://www.w3.org/TR/REC-smil/2000/SMIL20">
           ...
          </smil>

      3) A SMIL 1.0 document that has been extended to use the excl element:

          <smil xmlns="http://www.w3.org/TR/REC-smil"
                xmlns:smil20="http://www.w3.org/TR/REC-smil/2000/SMIL20" >
             <smil20:excl>
               ...
             </smil20:excl>
          </smil>

      4) A SMIL 2.0 document that has been extended to use the 'foo' element from a fictitious SMIL 3.0 version of SMIL:

          <smil xmlns="http://www.w3.org/TR/REC-smil/2000/SMIL20"
                xmlns:smil30="http://www.w3.org/TR/REC-smil/2001/SMIL30" >
            <smil30:foo>
             ...
            </smil30:foo>
          </smil>

   2. Default namespace prefix recognized. If the default namespace is not recognized in its entirety by the player but it includes the prefix "http://www.w3.org/TR/REC-smil/" the document will be processed as if the default namespace declaration were "http://www.w3.org/TR/REC-smil/". This means that the document will be processed as a SMIL 1.0 document, and handle fully namespace qualified extension elements either by recognizing the elements or applying the skip-content rules to the unknown extension elements. Unqualified elements not part of the SMIL 1.0 namespace are illegal and will result in an error.
   3. Default namespace prefix completely unrecognized. A SMIL player will not recognize the document as any version of SMIL and issue an error.
6. A document may declare both an XML DOCTYPE declaration (as defined in [XML10]) and one or more XML namespace declarations (as defined in [XML-NS]). To be recognized as a SMIL 2.0 document by a conforming SMIL 2.0 player, the document must include the SMIL 2.0 namespace identifier as the default namespace on the <smil> tag.
7. A document that declares neither a DOCTYPE nor a default namespace declaration will be processed as a SMIL 1.0 document. Any extension elements or attributes not defined by the SMIL 1.0 namespace must be declared fully qualified using the XML namespace mechanism. The "skip-content" mechanism will be applied to extension elements unrecognized by the player. Unqualified elements not part of the SMIL 1.0 namespace are illegal. A SMIL player will not recognize the document as any version of SMIL and issue an error.

   Example:

   Declare a SMIL 2.0 document with custom extensions conforming to a custom DTD:

       <!DOCTYPE MY-SMIL SYSTEM "http://www.example.org/myveryownSMIL.dtd">
       <smil xmlns="http://www.w3.org/TR/REC-smil/2000/SMIL20"
               xmlns:mysmil="http://www.w3.org/TR/REC-smil/2001/SMIL30">
               <mysmil:foo>
               ...
               </mysmil:foo>
       </smil>

8. Given that, as of this writing, DTDs have no way to describe the allowability of namespace-qualified extensions, and that extensions to SMIL 2.0 conformant documents must be namespace-qualified, here is the algorithm to be used to validate documents with extensions:

   If all non-SMIL 2.0 namespace elements and attributes and all xmlns attributes which refer to non-SMIL 2.0 namespace elements are removed from the given document, and if an appropriate <?xml...?> statement is included at the top of the document, and if an appropriate <!DOCTYPE ... > statement which points to the SMIL 2.0 DTD is included immediately thereafter, the result is a valid XML document.

The SMIL 2.0 language or these conformance criteria provide no designated size limits on any aspect of SMIL 2.0 content. There are no maximum values on the number of elements, the amount of character data, or the number of characters in attribute values.

SMIL 2.0 depreciates base as a property value for the content attribute of the meta element of SMIL 1.0 in favor of the more general XML base URL mechanisms currently being completed at W3C [XMLBase]. The XML base URL mechanism will be adopted as soon as it becomes a W3C recommendation.

The SMIL 2.0 Language profile will support XBase once it becomes a W3C Recommendation. XBase is supported on all elements, and affects the interpretation of URI's as specified in the individual modules defining the URI attributes. Specifically, any applicable XBase base URI will be applied to the interpretation of the href and alt attributes of the link elements a, area, and anchor, as well as the src attribute of the media elements audio, video, img, animation, textstream, text, and ref.

The rules above will have to be revised once an XML Schema for SMIL 2.0 is available. This revision will take into account XML Schema validation.

### 13.3.3 User Agent Conformance

A SMIL 2.0 user agent is a program which can parse and process a SMIL 2.0 document and render the contents of the document onto output mediums. A conforming SMIL 2.0 user agent must meet all of the following criteria:

1. In order to be consistent with the XML 1.0 Recommendation [XML10], the user agent must parse and evaluate a SMIL 2.0 document for well-formedness. If the user agent claims to be a validating user agent, it must also validate documents against their referenced DTDs according to [XML10].
2. When the user agent claims to support the functionality of SMIL 2.0 through SMIL 2.0 elements and attributes and the semantics associated with these elements and attributes, it must do so in ways consistent with this specification.
3. The user agent must be able to successfully parse and process any conforming SMIL 2.0 Documents, and support and correctly implement the semantics of all SMIL 2.0 Language Profile features.
4. The XML parser of the user agent must be able to parse and process XML constructs defined in [XML10] and [XML-NS].
5. The user agent must support the following W3C Recommendations with regard to SMIL 2.0 content:
   - Complete support for the XML 1.0 specification (Extensible Markup Language (XML) 1.0).
   - Complete support for inclusion of non-SMIL 2.0 namespaces within SMIL 2.0 content via Namespaces in XML. A xmlns prefix declaration may be used on any element in the SMIL 2.0 language profile.
   - The supported features from CSS2, if any, must be implemented in accordance with the conformance definitions from the CSS2 specification [CSS2].
6. The player ignores unknown elements under support of skip-content attributes.
7. For an attribute with an unknown attribute value, the player substitutes the default attribute value if any, or ignores the attribute if the attribute has no default value.
8. The detection of a syntax error in a SMIL 2.0 language profile document should result in the user agent issuing an error and not playing the document.

The Web Accessibility Initiative is defining "User Agent Accessibility Guidelines 1.0" [UAAG]. User agents are encouraged to conform to the Priority 1 accessibility guidelines defined in this document, and preferably also Priorities 2 and 3. Once the guidelines are completed, a future version of this specification is likely to require conformance to the Priority 1 guidelines in Conforming SMIL 2.0 user agents.

### 13.3.4 The SMIL 2.0 Language Profile

The SMIL 2.0 Language Profile supports the timeline-centric multimedia features found in the SMIL 2.0 modules. It uses only modules from the SMIL 2.0 recommendation. As the language profile includes the mandatory modules (Structure, BasicInlineTiming, BasicLayout, BasicMedia, BasicContentControl, and SkipContent), it is a SMIL Host Language conforming language profile. This language profile includes the following SMIL 2.0 modules:

- Structure functionality
  - Structure Module
- Metainformation functionality
  - Metainformation Module
- Timing functionality
  - BasicInlineTiming Module
  - SyncbaseTiming Module
  - EventTiming Module
  - MinMaxTiming Module
  - WallclockTiming Module
  - MultiArcTiming Module
  - BasicTimeContainers Module
  - ExclTimeContainers Module
  - PrevTiming Module
  - RestartTiming Module
  - SyncBehavior Module
  - SyncBehaviorDefault Module
  - RestartDefault Module
  - FillDefault Module
- Animation functionality
  - BasicAnimation Module
- Content Control functionality
  - BasicContentControl Module
  - CustomTestAttributes Module
  - PrefetchControl Module
  - SkipContentControl Module
- Layout functionality
  - BasicLayout Module
  - AudioLayout Module
  - MultiWindowLayout Module
  - HierarchicalLayout Module
- Linking functionality
  - BasicLinking Module
  - LinkingAttributes Module
  - ObjectLinking Module
- Transition Effects functionality
  - BasicTransitions Module
  - CoordinatedTransitions Module
  - TransitionModifiers Module
- Media functionality
  - BasicMedia Module
  - MediaClipping Module
  - MediaParam Module
  - BrushMedia Module
  - MediaAccessibility Module

The collection names contained in the following table define the SMIL 2.0 Profile vocabulary.

Collection Name | Elements in Collection
--- | ---
Animation | animate, set, animateMotion, animateColor
ContentControl | switch, prefetch
Layout | region, root-layout, layout, regPoint, viewport
LinkAnchor | a, area (anchor)
MediaContent | text, img, audio, video, ref, animation, textstream, brush
Metainformation | meta, metadata
Structure | smil, head, body
Schedule | par, seq, excl, priorityClass
Transition | transition, transitionFilter

In the following sections, we define the set of elements and attributes used in each of the modules included in the SMIL 2.0 Profile. The content model for each element is described. The Content Model of an element is a description of elements which can appear as its direct children. The special Content Model "EMPTY" means that a given element may not have children.

Collection Name | Attributes in Collection
--- | ---
Core | id (ID), class(NMTOKEN), title (CDATA)
I18n | xml:lang (NMTOKEN)

The id, class, and title attributes in the collection Core are defined for all the elements of the SMIL 2.0 Profile. The id attribute is used in the SMIL 2.0 Language Profile to assign a unique XML identifier to every element in a SMIL document. In this document, equivalent but deprecated attributes and elements are in parenthesis.

### 13.3.5 Animation Module

The Animation Module provides a framework for incorporating animation into a timing framework, and a mechanism for composing the effects of multiple animations. The Animation Module uses the BasicTiming Module (also included in this profile) for the underlying model of time. The SMIL 2.0 profile includes the animation functionality of the BasicAnimation module. The BasicAnimation Module defines semantics for the animate, set, animateMotion and animateColor elements.

In the SMIL 2.0 Language Profile, Animation elements can have the following attributes and Content Model:

Elements | Attributes | Content Model
--- | --- | ---
animate | Core, I18n, basicTiming, Test, attributeName, attributeType, targetElement, from, to, by, values, calcMode, accumulate, additive, skip-content, customTest | EMPTY
set | Core, I18n, basicTiming, Test, attributeName, attributeType, targetElement, to, skip-content, customTest | EMPTY
animateMotion | Core, I18n, basicTiming, Test, targetElement, origin, from, to, by, values, calcMode, accumulate, additive, skip-content, customTest | EMPTY
animateColor | Core, I18n, basicTiming, Test, attributeName, attributeType, targetElement, from, to, by, values, calcMode, accumulate, additive, skip-content, customTest | EMPTY

This profile adds the animate, set, animateMotion, and animateColor elements to the content model of the par, seq and excl elements of the Timing and Synchronization Modules. It also adds these elements to the content model of the body element of the Structure Module.

Specifying the target element of the animation

The animation target elements supported in the SMIL 2.0 Profile are the region element defined in the Layout Modules, the area element defined in the Linking Modules and the ref, img, video, text, and textstream defined in the Media Objects modules.

The SMIL 2.0 Language Profile uses the targetElement attribute to identify the element to be affected by animation elements. As recommended in the BasicAnimation Module when the targetElement attribute is supported, this profile excludes the XLink attributes href, type, actuate and show from the animate, set, animateMotion and animateColor elements.

Specifying the target attribute of the animation

The target attributes of the animations are a subset of those of the region, area (anchor), and media elements. The animatable attributes of the region, area (anchor), and media elements are listed in the table below.

The area (anchor) element has the coords attribute which can be subject to animation. The attribute coords is considered of type string in this profile. This means that only discrete non-additive animation is supported on this attribute.

The media elements have the following sub-region attributes which can be subject to animation: left, right, top, bottom and backgroundColor (background-color).

Elements | Target Element | Target Attributes
--- | --- | ---
animate | region | soundLevel, width, height, z-index, left, right, top, bottom, backgroundColor (background-color)
area (anchor) | coords(string)
text, img, audio, animation, video, ref, textstream | left, right, top, bottom, backgroundColor(background-color)
brush | color
set | region | soundLevel, width, height, z-index, left, right, top, bottom, backgroundColor (background-color)
area (anchor) | coords(string)
text, img, audio, animation, video, ref, textstream | left, right, top, bottom, backgroundColor (background-color)
brush | color
animateMotion | region | N/A
text, img, audio, animation, video, ref, textstream
animateColor | region | backgroundColor (background-color)
text, img, audio, animation, video, ref, textstream | backgroundColor (background-color)
brush | color

Integration definitions

The SMIL 2.0 Language profile defines a set of integration definitions as required by the Animation modules. These set of definitions are:

- Animation values in the SMIL 2.0 Language profile are subject to the same syntax requirements as the attribute values on the animated elements.
- Percentages values on the attributes have the same semantics as they do on the attribute. If percentage values are not supported on an attribute then percentage values are not supported for animation in the SMIL 2.0 Language profile.
- The SMIL 2.0 Language profile supports CSS2 [CSS2] color names as described in the Layout modules. The lower clamping bound color value is the black color or rgb(0%, 0%, 0%) and the higher clamping color value is the white color or rgb(100%, 100%, 100%). Values on an animated color lower than the lower clamping bound are clamped to the black color, values greater than the higher clamping color are clamped to the white color.
- The semantics of clamping values for attributes should be performed in floating point with a precision of at least that given by a 4-byte IEEE-format real number [IEEE-Arithmetic]. Cumulative and additive presentation values should be computed without regard to the range of the target attribute. Prior to display, the presentation value should be reduced or increased to the nearest value which is within the range of the target attribute. For integer attributes the computed value should then be rounded to the nearest integer (coerced-integer-value). The mathematical definition of rounding is:

      coerced-integer-value = Math.floor( interpolated-value + 0.5 )

- The position of the region element to which the animateMotion element applies is the top left corner, in the coordinate system within which the 'top' and 'left' attributes are defined in the Layout modules.
- The origin for the animateMotion when applied to media elements is the regAlign value defined in the Layout modules.

### 13.3.6 Content Control Modules

The Content Control Modules provide a framework for selecting content based on a set of test attributes. The Content Control Modules define semantics for the switch and the prefetch elements.The SMIL 2.0 profile includes the Content Control functionality of the BasicContentControl, CustomTestAttributes, PrefetchControl and SkipContentControl modules.

In the SMIL 2.0 Language Profile, Content Control elements can have the following attributes and Content Model:

Elements | Attributes | Content Model
--- | --- | ---
switch | Core, I18n, Test, customTest | (Schedule | MediaContent | ContentControl | LinkAnchor | Animation | layout )*
prefetch | Core, I18n, Test, Timing, mediaSize, mediaTime, bandwidth, skip-content, customTest | (Schedule | MediaContent | ContentControl | LinkAnchor | Animation )*
customAttributes | Core, I18n, Test, skip-content | customTest+
customTest | Core, I18n, title, skip-content, defaultState (true|false) 'false', override (allowed | not-allowed) 'not-allowed', uid (URI) | EMPTY

This profile adds the switch element to the content model of the par, seq, and excl elements of the Timing and Synchronization Modules, of the body and the head elements of the Structure Module, of the content model of the a element of the Linking Modules. The profile adds the customAttributes element to the content model of the head and the customTest element to the content model of the customAttributes element.

The Content Control Module defines the Attribute set "Test".

Collection Name | Attributes in Collection
--- | ---
Test | systemBitrate(system-bitrate), systemCaptions(system-captions), systemLanguage(system-language), system-overdub-or-caption, systemRequired(system-required), systemScreenSize(system-screen-size), systemScreenDepth(system-screen-depth), systemOverdubOrSubtitle, systemAudioDesc, systemOperatingSystem, systemCPU, systemComponent

The collection of Attributes Test is added to all the elements defined in the SMIL 2.0 profile. A SMIL 2.0 player must support all of the values for the systemOperatingSystem and systemCPU attributes listed in the Content Control Module. In addition, the player should accept namespaced values as future extensions, and not declare a syntax error.

### 13.3.7 Layout Modules

The Layout Modules provide a framework for spatial layout of visual components. The Layout Modules defines semantics for the viewport, layout, root-layout, region and the regPoint elements. The SMIL 2.0 profile includes the Layout functionality of the BasicLayout, AudioLayout, MultiWindowLayout and HierarchicalLayout modules.

In the SMIL 2.0 Language Profile, Layout elements can have the following attributes and Content Model:

Elements | Attributes | Content Model
--- | --- | ---
region | Core, I18n, Test, backgroundColor (background-color), showBackground (always | whenActive), bottom, fit (fill | hidden | meet | scroll | slice), width, height, left, right, top, soundLevel, z-index, regPoint, regAlign, skip-content, customTest, regionName | region*
root-layout | Core, I18n, Test, backgroundColor(background-color), width, height, skip-content, customTest | EMPTY
viewport | Core, I18n, Test, backgroundColor(background-color), width, height, skip-content, customTest | region*
layout | Core, I18n, Test, type, customTest | (root-layout | region | viewport | regPoint)*
regPoint | Core, I18n, Test, top, bottom, left, right, regAlign ( topLeft|topMid | topRight | midLeft | center | midRight | bottomLeft | bottomMid | bottomRight ), skip-content, customTest | EMPTY

(**) The "background-color" attribute of SMIL1.0 is deprecated in favor of "backgroundColor", but both are supported.

This profile adds the layout element to the content model of the head element of the Structure Module. It also adds this element to the content model of the switch element of the Content Control Modules, when the switch element is a child of the head element.

### 13.3.8 Linking Modules

The Linking Modules provide a framework for relating documents to content, documents and document fragments. The Linking Modules define semantics for the a and area elements. They define also the semantics of a set of attributes defined for these elements. The SMIL 2.0 profile includes the Linking functionality of the BasicLinking, LinkingAttributes and ObjectLinking modules.

Both the a and area elements have an href attribute, whose value must be a valid URI.

Support for URI's with XPointer fragment identifier syntax is not required.

In the SMIL 2.0 Language Profile, Linking elements can have the following attributes and Content Model:

Elements | Attributes | Content Model
--- | --- | ---
a | Core, I18n, basicTiming, Test, href, sourceLevel, destinationLevel, sourcePlaystate(play | pause | stop) 'pause', destinationPlaystate (play | pause | stop) 'play', show (new | replace) 'replace', accesskey, tabindex, target, external, actuate, customTest | (Schedule | MediaContent | ContentControl | Animation )*
area (anchor) | Core, I18n, basicTiming, Test, shape, coords, href, nohref, alt, sourceLevel, destinationLevel, sourcePlaystate, destinationPlaystate, show, accesskey, tabindex, target, external, fragment, skip-content, customTest | EMPTY

In the SMIL 2.0 language profile, a value of onLoad set on the attribute actuate indicates that the link is automatically traversed when the linking element becomes active. For linking elements containing SMIL timing, this is when the active duration of the linking element begins.

This profile adds the area and a elements to the content model of the par, seq, and excl elements of the Timing and Synchronization Modules. It also adds these elements to the content model of the body element of the Structure Module.

For SMIL 1.0 backward compatibility, the anchor element is available but deprecated in favor of area. The anchor element supports the same attributes as area, both the new SMIL 2.0 attributes and the SMIL 1.0 attributes as defined in [SMIL10].

SMIL 1.0 backward compatibility: The show attribute value pause is deprecated in favor of setting the show attribute to new and the sourcePlaystate attribute to pause.

### 13.3.9 Media Object Modules

The Media Object Modules provide a framework for declaring media. The Media Object Modules define semantics for the ref, animation, audio, img, video, text, textstream and brush elements. The SMIL 2.0 profile includes the Media functionality of the BasicMedia, MediaClipping, MediaParam, BrushMedia, MediaAccessibility modules.

In the SMIL 2.0 Language Profile, media object elements can have the following content model and attributes, in addition to the attributes defined in the SMIL Media Object Modules:

Elements | Attributes | Content Model
--- | --- | ---
text, img, audio, animation, video, ref, textstream | Core, I18n, Timing, Test, region, fill (freeze | remove | hold | transition), alt, author, copyright, abstract, longdesc, src, type, erase, mediaRepeat, tabindex, customTest, transIn, transOut, clipBegin(clip-begin), clipEnd (clip-end), | (param | area (anchor) | switch |Animation)*
brush | Core, I18n, Timing, Test, abstract, region, fill (freeze | remove | hold | transition), alt, author, copyright, color, skip-content, erase, tabindex, customTest, transIn, transOut | (param | area (anchor) | switch |Animation)*

SMIL 1.0 only allowed anchor as a child element of a media element. In addition to anchor, the following elements are now allowed as children of a SMIL media object: area, param, animate, set, animateColor, animateMotion (note that the a element is not included). The switch element is allowed, with the restriction that in this case the content of the switch may only be from the same set of elements.

This profile 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 Modules. It also adds these elements to the content model of the body element of the Structure Module. It also adds these elements to the content model of the a element of the Linking Modules.

#### Widely Supported MIME Types

This section is informative.

The members of the W3C SYMM Working Group believe that the following MIME types will be widely supported by SMIL players:

- audio/basic [MIME-2]
- image/png ([PNG-MIME], [PNG-REC])
- image/jpeg ([MIME-2], [JFIF])

Implementers of SMIL players should thus strive to provide support for each of these types. Note, however, that this section is non-normative, and that support for these MIME types is not a precondition for conformance to this specification.

Authors are encouraged to encode media objects using one of the widely supported MIME types whenever possible. This will ensure that their SMIL documents can be played back by a wide range of SMIL players.

If authors use a MIME type that is not in the list of widely supported types, they should provide an alternative version encoded using a baseline format. This can be achieved by using a `switch` element as shown in the following example:

    <switch>
      <audio src="non-baseline-format-object" />
      <audio src="baseline-format-object" />
    </switch>

In this example, a player that supports the non-baseline format will play the first audio media object, and a player that does not support the non-baseline format will play the second media object.

#### Media Object Integration Requirements

This section is normative.

The MediaParam module defines the erase attribute, and defers definition of the "display area" to the language profile. "Display area" for the purposes of the SMIL 2.0 Language corresponds to a SMIL BasicLayout region. The effects of erase=never apply after the active duration of the media object and any fill period (defined by SMIL Timing and Synchronization), and only until other media plays to the region targeted by the media object, or until the same media object restarts.

### 13.3.10 Metainformation Module

The Metainformation Module provides a framework for describing a document, either to inform the human user or to assist in automation. The Metainformation Module defines semantics for the meta and metadata elements. The SMIL 2.0 profile includes the Metainformation functionality of the Metainformation module.

In the SMIL 2.0 Language Profile, Metainformation elements can have the following attributes and Content Model:

Elements | Attributes | Content Model
--- | --- | ---
meta | Core, I18n, skip-content, content (CDATA), name (CDATA) | EMPTY
metadata | Core, I18n, skip-content | EMPTY

The content model of metadata is empty. Profiles that extend the SMIL 2.0 language profile can define the RDF (Resource Description Framework) schema to be used in extending the content model of the metadata element. The Resource Description Framework is defined in the W3C Metadata Recommendation [RDFsyntax].

This profile adds the meta element to the content model of the head element of the Structure Module.

### 13.3.11 Structure Module

The Structure Module provides a framework for structuring a SMIL document. The Structure Module defines semantics for the smil, head, and body elements. The SMIL 2.0 profile includes the Structure functionality of the Structure module.

In the SMIL 2.0 Language Profile, the Structure elements can have the following attributes and Content Model:

Elements | Attributes | Content Model
--- | --- | ---
smil | Core, I18n, xmlns | (head?,body?)
head | Core, I18n | ((metadata?,meta*)?, ((layout|switch),meta*)?, (transition+,meta*)?, ((customattributes),meta*)?)
body | Core, I18n, Timing, fill | (Schedule | MediaContent | ContentControl | LinkAnchor )*

The body element acts as the root element to span the timing tree. The body element has the behavior of a seq element. Timing on the body element is supported. The syncbase of the body element is the application begin time, which is implementation dependent, as is the application end time. Note that the effect of fill on the body element is between the end of the presentation and the application end time, and therefore the effect of fill is implementation dependent.

### 13.3.12 Timing and Synchronization Modules

The Timing and Synchronization Modules provide a framework for describing timing structure, timing control properties, and temporal relationships between elements. The Timing and Synchronization Modules define semantics for par, seq, and excl elements. In addition, these modules define semantics for attributes including begin , dur, end , repeat (deprecated), repeatCount, repeatDur, min, and max. The SMIL 2.0 profile includes the Timing functionality of the BasicInlineTiming, SyncbaseTiming, EventTiming, MinMaxTiming, WallclockTiming, MultiArcTiming, BasicTimeContainers, ExclTimeContainers, PrevTiming, RestartTiming, SyncBehavior, SyncBehaviorDefault, RestartDefault and the FillDefault modules.

In the SMIL 2.0 Language Profile, Timing and Synchronization elements can have the following attributes and Content Model:

Elements | Attributes | Content Model
--- | --- | ---
par | Core, I18n, Timing, Test, endsync, restart, customTest, fill (freeze | remove | hold | transition), abstract, author, copyright, region | (Schedule | MediaContent | ContentControl | LinkAnchor | Animation )*
seq | Core, I18n, Timing, Test, restart, customTest, fill (freeze | remove | hold | transition), abstract, author, copyright, region | (Schedule | MediaContent | ContentControl | LinkAnchor | Animation )*
excl | Core, I18n, Timing, Test, endsync, restart, skip-content, customTest, fill (freeze | remove | hold | transition), abstract, author, copyright, region | (Schedule | MediaContent | ContentControl | LinkAnchor | Animation)*
priorityClass | Core, I18n, Test, peers ( stop | pause| defer | never ) 'stop', higher ( stop | pause ) 'pause', lower ( defer | never ) 'defer', skip-content, pauseDisplay, customTest, abstract, author, copyright | (Schedule | MediaContent | ContentControl | LinkAnchor | Animation )*

The Attribute collections Timing and basicTiming are defined as follows:

Collection Name | Attributes in Collection
--- | ---
Timing | begin , dur, end , repeat (deprecated), repeatCount, repeatDur, syncBehavior ( canSlip | locked | independent ), syncTolerance, syncMaster, syncBehaviorDefault ( canSlip | locked | independent ), syncToleranceDefault, restartDefault (always | whenNotActive | never), fillDefault ( remove | freeze | hold | transition ), restart, min, max
basicTiming | begin, dur, end, repeat(deprecated), repeatCount, repeatDur, min, max

Elements of the Media Object Modules have the attributes describing timing and properties of contents. For timing, the begin and end attribute can have one or multiple values among offset-value, syncbase-value, syncToPrev-value and wall clock times.

This profile adds the par, seq, and excl elements to the content model of ref, animation, audio, img, video, text, and textstream elements of the Media Objects Modules. It also adds these elements to the content model of the body element of the Structure Module and adds these elements to the content model of the a and area elements of the Linking Modules.

#### Supported Event Symbols

The SMIL 2.0 Language profile specifies which types of events can be used as part of the begin and end attribute values. The supported events are described as Event-symbols according to the syntax introduced in the SMIL Timing and Synchronization module.

The supported event symbols in the SMIL 2.0 Language Profile are:

Event | example
--- | ---
focusInEvent (In DOM Level 2: "DOMFocusIn") | end="foo.focusInEvent + 3s"
focusOutEvent (In DOM Level 2: "DOMFocusOut") | begin="foo.focusOutEvent"
activateEvent (In DOM Level 2: "DOMActivate") | begin="foo.activateEvent"
beginEvent | begin="foo.beginEvent + 2s"
endEvent | end="foo.endEvent + 2s"
repeatEvent | end="foo.repeatEvent"
inBoundsEvent | end="foo.inBoundsEvent"
outOfBoundsEvent | begin="foo.outOfBoundsEvent + 5s"

#### Event semantics

focusInEvent:
  Raised when a media element gets the keyboard focus in its rendering space, i.e., when it becomes the media element to which all subsequent keystroke-event information is passed. Once an element has the keyboard focus, it continues to have it until a user action or DOM method call either removes the focus from it or gives the focus to another media element, or until its rendering space is removed. Only one media element can have the focus at any particular time.
focusOutEvent:
  Raised when a media element loses the keyboard focus from its rendering space, i.e., when it stops being the media element to which all subsequent keystroke-event information is passed.
activateEvent:
  Raised when a media element is activated by user input such as by a mouse click within its visible rendering space or by specific keystrokes when the element has the keyboard focus.
beginEvent:
  Raised when the element actually begins playback of its active duration. If an element does not ever begin playing, this event is never raised. If an element has a repeat count, beginEvent only is raised at the beginning of the first iteration.
endEvent:
  Raised when an element actually ends playback; this is when its active duration is reached or whenever a playing element is stopped. In the following example,

      <ref id="x" end="30s" src="15s.mpg" />
      <ref id="y" end="10s" src="20s.mpg" />
      <ref id="x" repeatCount="4" src="5s.mpg" />

  x.endEvent occurs at roughly 30s when the active duration is reached, y.endEvent occurs at roughly 10s when the playback of the continuous media is ended early by the active duration being reached, and z.endEvent occurs at roughly 20s when the fourth and final repeat has completed, thus reaching the end of its active duration.

repeatEvent:
  Fired when the second and subsequent iterations of a repeated element begin playback. An element that has no "repeatDur", "repeatCount", or "repeat" attribute but that plays two or more times due to multiple begin times will not raise a repeatEvent when it restarts. Also, children of a time container that repeats will not raise their own repeatEvents when their parent repeats and they begin playing again.
inBoundsEvent:
  Raised when one of the following happens:
  - by any input from the mouse or other input device that brings the mouse cursor from outside to within the bounds of a media element's rendering space, regardless of what part, if any, of that rendering space is visible at the time, i.e., z-order is not a factor.
  - by any other action that moves the "cursor" or "pointer", as defined by the implementation, from outside to within the bounds of a media element's rendering space, regardless of what part, if any, of that rendering space is visible at the time, i.e., z-order is not a factor. An implementation may decide, for instance, to raise an inBoundsEvent on an element whenever it gets the focus, including when keystrokes give it the focus.

  A media element's bounds are restrained by the bounds of the region in which it is contained., i.e., a media element's bounds do not extend beyond its region's bounds.

  Note that, unlike with keyboard focus which can only be active on one object at a time, the state of being within an object's bounds can be true for multiple objects simultaneously. For instance, if one object is on top of another and the cursor is placed on top of both objects, both would have raised an inBoundsEvent more recently than the raising of any respective outOfBoundsEvent.

outOfBoundsEvent:
  Raised when one of the following happens:
  - by any input from the mouse or other input device that brings the mouse cursor from within to outside the bounds of a media element's rendering space, regardless of what part, if any, of that rendering space is visible at the time,
  - by any other action that moves the "cursor" or "pointer", as defined by the implementation, from within to outside the bounds of a media element's rendering space, regardless of what part, if any, of that rendering space is visible at the time.

  A media element's bounds are restrained by its region's bounds, i.e., a media element's bounds do not extend beyond its region's bounds.

#### Order of raising of simultaneous events:

There will be cases where events occur simultaneously. To ensure that each SMIL 2.0 Language implementation handles them in the same order, the following order must be used to resolve ties:

1. InBoundsEvent
2. focusInEvent (should follow 1)
3. OutOfBoundsEvent
4. activateEvent (should follow 2)
5. focusOutEvent (should follow 3)
6. endEvent
7. beginEvent (must follow 6)
8. repeatEvent

Events are listed in order of precedence, e.g., if event #6 in this list occurs at the same time as event #7, then #6 must be raised prior to #7.

These events do not bubble and are delivered to the target media element.

#### Extending the set of supported events

The SMIL 2.0 Language profile supports an extensible set of events. In order to resolve possible name conflicts with the events that are supported in this profile qualified event name are supported. Namespace prefixes are used to qualify the event names. As a result, the colon is reserved in begin and end attributes for qualifying event names.

For example:

    <smil ... xmlns:example="http://www.example.com">
       <img id="foo" .../>
       <audio begin="foo.example:focusInEvent".../>
        ...
    </smil>

### 13.3.13 Transition Effects Modules

The Transition Effects Modules provide a framework for describing transitions such as fades and wipes. The Transition Effects Modules define semantics for the transition element. The SMIL 2.0 profile includes the Transition Effects functionality of the BasicTransitions, CoordinatedTransitions and TransitionModifiers modules.

In the SMIL 2.0 Language Profile, Transition Effects elements can have the following attributes and Content Model:

Elements | Attributes | Content Model
--- | --- | ---
transition | Core, I18n, basicTiming, Test, type, subtype, startProgress, endProgress, direction, fadeColor, horzRepeat, vertRepeat, borderWidth, borderColor, coordinated, clipBoundary, skip-content, customTest | EMPTY

This profile adds the transition element to the content model of the head element of the Structure Module.

The Transition Effects Modules add transIn and transOut attributes to ref, animation, audio, img, video, text, textstream and brush elements of the Media Object Modules.

The Transition Effects Modules add the transition value to the fill attribute for all elements on which the fill attribute is supported.

## 13.4 Extending the SMIL 2.0 Language

This section is normative

In the future, SMIL 2.0 Language may be extended by other W3C recommendations, or by private extensions. For these extensions, it is recommended that the following rules are obeyed:

- All elements introduced in extensions must have a skip-content attribute if it should be possible that their content is processed by SMIL 2.0 players.
- Private extensions must be introduced by defining a new XML namespace.

It is recommended that SMIL 2.0 user agents are prepared to handle documents containing extensions that obey these two rules.

## 13.5 Appendix A: Document Type Definition

This section is normative.

The SMIL 2.0 document type is defined as a set of SMIL 2.0 modules. All SMIL 2.0 modules are integrated according to the guidelines in the "Modularization of SMIL 2.0" specification [SMIL-MOD], and defined within their respective module sections.

    <!-- ....................................................................... -->
    <!-- SMIL 2.0 DTD  ......................................................... -->
    <!-- file: SMIL20.dtd
    -->
    <!-- SMIL 2.0 DTD

         This is SMIL 2.0.

         Copyright 1998-2000 World Wide Web Consortium
            (Massachusetts Institute of Technology, Institut National de
             Recherche en Informatique et en Automatique, Keio University).
             All Rights Reserved.

         Permission to use, copy, modify and distribute the SMIL 2.0 DTD and
         its accompanying documentation for any purpose and without fee is
         hereby granted in perpetuity, provided that the above copyright notice
         and this paragraph appear in all copies.  The copyright holders make
         no representation about the suitability of the DTD for any purpose.

         It is provided "as is" without expressed or implied warranty.

            Author:     Jacco van Ossenbruggen
            Revision:   $Id: SMIL20.dtd,v 1.5 2000/08/08 11:40:53 jvanoss Exp $

    -->
    <!-- This is the driver file for the SMIL 2.0 DTD.

         Please use this formal public identifier to identify it:

             "-//W3C//DTD SMIL 2.0//EN"
    -->

    <!ENTITY % NS.prefixed "IGNORE" >
    <!ENTITY % SMIL.prefix "" >

    <!-- Define the Content Model -->
    <!ENTITY % smil-model.mod
        PUBLIC "-//W3C//ENTITIES SMIL 2.0 Document Model 1.0//EN"
               "smil-model-1.mod" >

    <!-- Modular Framework Module  ................................... -->
    <!ENTITY % smil-framework.module "INCLUDE" >
    <![%smil-framework.module;[
    <!ENTITY % smil-framework.mod
         PUBLIC "-//W3C//ENTITIES SMIL 2.0 Modular Framework 1.0//EN"
                "smil-framework-1.mod" >
    %smil-framework.mod;]]>

    <!-- The SMIL 2.0 Profile includes the following sections:
                 C. The SMIL Animation Module
                 D. The SMIL Content Control Module
                 G. The SMIL Layout Module
                 H. The SMIL Linking Module
                 I. The SMIL Media Object Module
                 J. The SMIL Metainformation Module
                 K. The SMIL Structure Module
                 L. The SMIL Timing and Synchronization Module
                 M. Integrating SMIL Timing into other XML-Based Languages
                 P. The SMIL Transition effects Module

                 The SMIL Streaming Media Object Module is optional.
    -->

    <!ENTITY % streamingmedia.model "IGNORE">
    <![%streamingmedia.model;[
      <!ENTITY % streaming-mod
        PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Streaming Media Objects//EN"
        "SMIL-streamingmedia.mod">
      %streaming-mod;
    ]]>

    <!ENTITY % anim-mod
      PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Animation//EN"
      "SMIL-anim.mod">
    <!ENTITY % control-mod
      PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Content Control//EN"
      "SMIL-control.mod">
    <!ENTITY % layout-mod
      PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Layout//EN"
      "SMIL-layout.mod">
    <!ENTITY % link-mod
      PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Linking//EN"
      "SMIL-link.mod">
    <!ENTITY % media-mod
      PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Media Objects//EN"
      "SMIL-media.mod">
    <!ENTITY % meta-mod
      PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Document Metainformation//EN"
      "SMIL-metainformation.mod">
    <!ENTITY % struct-mod
      PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Document Structure//EN"
      "SMIL-struct.mod">
    <!ENTITY % timing-mod
      PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Timing//EN"
      "SMIL-timing.mod">
    <!ENTITY % transition-mod
      PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Transition//EN"
      "SMIL-transition.mod">

    %struct-mod;
    %anim-mod;
    %control-mod;
    %meta-mod;
    %layout-mod;
    %link-mod;
    %media-mod;
    %timing-mod;
    %transition-mod;

## 13.6 Appendix B: XML Schema

This section is informative.

This section will contain the XML Schema for the SMIL 2.0 language profile.

previous next contents