Lisez-moi S.V.P. 
W3C REC-smil-19980615

Spécification du langage d'intégration multimédias synchronisés (SMIL) version 1.0

Recommandation du W3C du 15 juin 1998

Cette version :
http://www.w3.org/TR/1998/REC-smil-19980615
Dernière version :
http://www.w3.org/TR/REC-smil
Version précédente :
http://www.w3.org/TR/1998/PR-smil-19980409

Copyright © 1998 W3C (MIT, INRIA, Keio),tous droits réservés. Les règles de responsabilité, de nom de marque, d'utilisation des documents et de licence de logiciels du W3C s'appliquent. Vos interactions avec ce site ont lieu conformément à nos déclarations de confidentialité vis-à-vis du public et vis-à-vis des membres.

À propos du document

Ce document a été préparé par le groupe de ravail Synchronized Multimedia du World Wide Web Consortium. Les participants au groupe de travail étaient les suivants :

Remerciements : Outre les participants au groupe de travail, les personnes suivantes ont contribué à l'effort SMIL : Bert Bos (W3C), Dan Connolly (W3C), Patrick Deunhouwer (Philips), Martin Dürst (W3C), Al Gilman, Håkon Lie (W3C), Chris Lilley (W3C), Curtis Reynolds (RealNetworks), Michael Riesman, Curtis Reynolds (RealNetworks), Henning Schulzrinne (Columbia University) et Koga Youichirou (W3C).

Rédacteur : Philipp Hoschka, W3C (hoschka@w3.org)

Résumé

Ce document définit la première version du langage d'intégration multimédias synchronisés (SMIL 1.0, prononcé smaïle). Le langage SMIL permet d'intégrer un ensemble d'objets multimédias indépendants dans une présentation multimédia synchronisée. Avec SMIL, un auteur peut :

  1. Décrire le comportement d'une présentation dans le temps ;
  2. Décrire la mise en forme d'une présentation à l'écran ;
  3. Associer des hyperliens à des objets multimédias.

La structure de cette spécification est la suivante : la section 1 présente l'approche de la spécification ; la section 2 définit l'élément smil ; la section 3 définit les éléments pouvant apparaître dans la partie en-tête du document SMIL ; la section 4 définit les éléments pouvant apparaître dans le corps du document SMIL. Elle décrit notamment le modèle temporel utilisé dans SMIL. La section 5 décrit la définition DTD de SMIL.

Statut de ce document

Ce document a été revu par les membres du W3C et les tiers concernés, et il a été approuvé par le Directeur comme recommandation du W3C. C'est un document stable qui peut être utilisé comme matériel de référence ou cité comme norme de référence par un autre document. Le rôle du W3C, en produisant cette recommandation, est d'attirer l'attention sur la spécification pour en promouvoir le plus large déploiement. Cela participe à améliorer la fonctionnalité et l'interopérabilité du Web.

On peut adresser les commentaires concernant cette recommandation à la liste de diffusion publique www-smil@w3.org.

Langues disponibles

Seule la version en anglais de la spécification est normative. Toutefois, pour des traductions, consultez http://www.w3.org/AudioVideo/SMIL/translations.

Errata

La liste des erreurs connues dans cette spécification est disponible à http://www.w3.org/AudioVideo/SMIL/errata.

Table des matières

1 Approche de la spécification

Les documents SMIL sont des documents XML 1.0 [XML10]. Le lecteur doit être familiarisé avec les concepts et termes définis dans XML 1.0.

Cette spécification ne compte pas sur des caractéristiques particulières définies dans des adresses URL, qu'on ne peut pas exprimer à l'aide d'adresses URN. On utilisera donc le terme plus générique adresse URI [URI] dans la spécification.

La syntaxe des documents SMIL est décrite par la définition DTD dans la section 5.2. On définit la syntaxe d'une valeur d'attribut, non définissable avec la notation de la définition DTD, en même temps que le premier élément avec l'attribut acceptant cette valeur d'attribut. La syntaxe de ces valeurs d'attributs est définie en utilisant la forme Backus-Naur étendue (EBNF) décrite dans la spécification XML 1.0.

La structure d'une définition d'élément est la suivante : premièrement, tous les attributs de l'élément sont définis par ordre alphabétique. L'attribut est défini de la façon suivante : si l'attribut est utilisé par un élément pour la première fois dans la spécification, on définit sa sémantique ; si l'attribut a déjà été utilisé par un autre élément, la spécification se réfère à la définition du premier élément à l'avoir utilisé. La définition des attributs de l'élément est suivie de celle des valeurs d'attribut non définissables avec la notation de la définition DTD. La dernière partie de la définition de l'élément décrit son contenu.

2 L'élément smil

Attributs de l'élément

L'élément smil admet les attributs suivants :

id
Cet attribut identifie un élément de façon unique dans un document. Sa valeur est un identificateur XML.

Contenu de l'élément

L'élément smil peut avoir les sous-éléments suivants :

body
Défini dans la section 4.1
head
Défini dans la section 3.1

3 L'en-tête du document

3.1 L'élément head

L'élément head contient des informations sans lien avec le déroulement de la présentation.

Attributs de l'élément

L'élément head admet les attributs suivants :

id
Défini dans la section 2

Contenu de l'élément

L'élément head peut avoir les sous-éléments suivants :

layout
Défini dans la section 3.2
meta
Défini dans la section 3.4
switch
Défini dans la section 4.3

L'élément head peut contenir un nombre quelconque d'éléments meta, et un élément layout ou bien un élément switch.

3.2 L'élément layout

L'élément layout détermine comment les éléments du corps du document se positionnent sur une surface de rendu abstraite (visuelle, ou bien acoustique).

Si le document n'a pas d'élément layout, le positionnement des éléments de corps dépend de la mise en œuvre.

Un document SMIL peut avoir plusieurs dispositions de remplacement, en englobant plusieurs éléments layout dans un élément switch (défini dans la section 4.3). On peut s'en servir, par exemple, pour décrire la mise en forme du document avec des langages de mise en forme différents.

L'exemple suivant montre comment utiliser CSS2 en remplacement du langage de mise en forme de base de SMIL (défini dans la section 3.3) :

<smil>
  <head>
    <switch>
     <layout type="text/css">
        [region="r"] { top: 20px; left: 20px }
     </layout>
     <layout>
       <region id="r" top="20" left="20" />
     </layout>
   </switch>
   </head>
   <body>
     <seq>
       <img region="r" src="http://www.w3.org/test" dur="10s" />
     </seq>
   </body>
</smil>

(Remarquez dans cet exemple que les deux options de mise en forme produisent une disposition identique).

Attributs de l'élément

id
Défini dans la section 2
type
Cet attribut indique le langage de mise en forme utilisé dans l'élément layout. Si le lecteur ne reconnaît pas ce langage, il doit sauter tout le contenu jusqu'à la prochaine balise </layout>. La valeur par défaut de l'attribut type est "text/smil-basic-layout".

Contenu de l'élément

Si l'attribut type de l'élément layout a la valeur "text/smil-basic-layout", il peut en plus contenir les éléments suivants :

region
Défini dans la section 3.3.1
root-layout
Défini dans la section 3.3.2

Si l'attribut type de l'élément layout a une autre valeur, alors l'élément contient des donnés textuelles.

3.3 Le langage de mise en forme de base de SMIL

Cette section définit le langage de mise en forme de base de SMIL. Ce langage est cohérent avec le modèle de rendu visuel défini dans CSS2, et il réutilise les propriétés de formatage définies par la spécification CSS2 [CSS2], en introduisant le nouvel attribut fit. Le lecteur est censé être familier des concepts et termes définis dans CSS2.

La mise en forme de base SMIL contrôle seulement la disposition des éléments d'objets multimédias (définis dans la section 4.2.3). La mise en forme de base SMIL est illégale avec les autres éléments SMIL.

L'identificateur de type de la mise en forme de base SMIL est text/smil-basic-layout.

Valeurs de propriété fixes

La feuille de style suivante définit les valeurs des propriétés CSS2 'display' et 'position', qui sont valides pour la mise en forme de base SMIL. Ces valeurs de propriété sont fixes :

a           {display:block}
anchor      {display:block}
animation   {display: block;
             position: absolute}
body        {display: block}
head        {display: none}
img         {display: block;
             position: absolute}
layout      {display: none}  
meta        {display: none}
par         {display: block}
region      {display: none}
ref         {display: block;
             position: absolute}
root-layout {display: none}
seq         {display: block}
smil        {display: block}
switch      {display:block}
text        {display: block;
             position: absolute}
textstream  {display: block;
             position: absolute}
video       {display: block;
             position: absolute}

Remarquez, en conséquence de ces définitions, que tous les éléments en position absolue (animation, img, ref, text, textstream et video) se tiennent dans un seul bloc conteneur défini par le bord de contenu du contenu de l'élément racine (smil).

Valeurs par défaut

La mise en forme de base SMIL définit des valeurs par défaut pour tous les attributs liés à la disposition. Elles sont cohérentes avec les valeurs initiales des propriétés correspondantes de CSS2.

Si l'auteur veut sélectionner les valeurs de disposition par défaut de tous les éléments d'objets multimédias dans un document, celui-ci doit contenir un élément layout vide dont la valeur de l'attribut type est "text/smil-basic-layout" tel que :

<layout type="text/smil-basic-layout"></layout>

3.3.1 L'élément region

L'élément region contrôle la position, la dimension et l'échelle des éléments d'objets multimédias.

Dans le fragment suivant en exemple, la position de l'élément text est fixée à cinq pixels de la bordure du haut de la fenêtre de rendu :

<smil>
  <head>
    <layout>
      <region id="a" top="5" />
    </layout>
  </head>
  <body>
    <text region="a" src="text.html" dur="10s" />
  </body>
</smil>

Attributs de l'élément

L'élément region peut avoir les attributs suivants :

background-color
L'utilisation et la définition de cet attribut sont identiques à celles de la propriété 'background-color' dans la spécification CSS2, sauf que la gestion des couleurs système n'est pas imposée par la mise en forme de base SMIL.
Si l'attribut background-color est absent, l'arrière-plan est transparent.
fit
Cet attribut définit le comportement à adopter si la hauteur et la largeur intrinsèques d'un objet multimédia diffèrent des valeurs indiquées par les attributs height et width de l'élément region. Cet attribut ne correspond pas trait-pour-trait à une propriété CSS2, mais on peut le simuler dans CSS2.
L'attribut peut avoir les valeurs suivantes :
fill
Ajuste la hauteur et la largeur de l'objet indépendamment de sorte que le contenu vienne toucher exactement tous les bords de la boîte.
hidden
  • Si la hauteur (ou la largeur) intrinsèque de l'élément d'objet multimédia est inférieure à la valeur de l'attribut height (ou width) défini dans l'élément region, l'objet est rendu depuis le bord du haut (ou de gauche) et le reliquat de la hauteur (ou de la largeur) est rempli par la couleur d'arrière-plan.
  • Si la hauteur (ou la largeur) intrinsèque de l'élément d'objet multimédia est supérieure à la valeur de l'attribut height (ou width) défini dans l'élément region, alors l'objet est rendu depuis le bord du haut (ou de gauche) jusqu'à ce que la valeur de height (ou de width) définie dans l'élément region soit atteinte, et la partie de l'objet situé dessous (ou à droite) de la hauteur (ou de la largeur) est rognée.
meet
Ajuste l'objet multimédia visuel tout en préservant son rapport d'aspect jusqu'à ce que la hauteur (ou la largeur) soit égale à la valeur indiquée par l'attribut height (ou width), et aucune partie du contenu n'est rognée. Le coin supérieur gauche de l'objet se place aux coordonnées supérieures gauches de la boîte, et l'espace vide à gauche à droite (ou dessous) est rempli par la couleur d'arrière-plan.
scroll
Un mécanisme de défilement devrait apparaître lorsque le contenu rendu de l'élément excède ses limites.
slice
Ajuste l'objet multimédia visuel tout en préservant son rapport d'aspect de sorte que sa hauteur (ou sa largeur) soit égale à la valeur indiquée par l'attribut height (ou width) des parties du contenu qui peuvent être rognées. Selon la situation exacte, une tranche de l'objet multimédia, horizontale ou bien verticale, sera affichée. La largeur de débordement est rognée depuis la droite de l'objet multimédia, la hauteur de débordement est rognée depuis le bas de l'objet multimédia.

La valeur par défaut de fill fit est "hidden".

height
L'utilisation et la définition de cet attribut sont identiques à celles de la propriété 'height' dans la spécification CSS2. L'attribut peut prendre une valeur de pourcentage ou une valeur de type longueur définies en CSS2. Pour les valeurs de longueur, la mise en forme de base SMIL ne reconnaît que le pixel, comme défini dans CSS2. Elle permet d'abandonner le qualificatif d'unité px pour les valeurs en pixels (le qualificatif px est obligatoire dans CSS2).
id
Défini dans la section 2
On applique un élément region à un élément positionnable en donnant la valeur de l'attribut id de la région à l'attribut region de l'élément positionnable.
L'attribut id est obligatoire sur l'élément region.
left
L'utilisation et la définition de cet attribut sont identiques à celles de la propriété 'left' dans la spécification CSS2. Les valeurs d'attributs sont soumises aux mêmes restrictions que celles de l'attribut height.
La valeur par défaut est zéro.
skip-content
Cet attribut est introduit en vue des futures extensions de SMIL (cf. l'Annexe). Il a les deux interprétations suivantes :

Si la valeur de l'attribut skip-content est "true" et que l'un des cas précédent est vérifié, le contenu de l'élément est ignoré. Si la valeur est "false", le contenu de l'élément est traité.
La valeur par défaut de skip-content est "true".

title
Cet attribut fournit des renseignements à propos de l'élément où il se trouve. Les valeurs de l'attribut title peuvent être rendues de plusieurs façons. Par exemple, les navigateurs visuels affichent courramment la valeur du titre sous forme d'une infobulle (un message court qui apparaît lorsque le dispositif de pointage s'arrête au-dessus de l'objet).
On recommande fortement que tous les éléments region aient un attribut title avec une description significative. Les outils de création devraient veiller à ce qu'on ne puisse pas introduire d'élément sans cet attribut dans un document SMIL.
top
L'utilisation et la définition de cet attribut sont identiques à celles de la propriété 'top' dans la spécification CSS2. Les valeurs d'attributs sont soumises aux mêmes restrictions que celles de l'attribut height.
La valeur par défaut est zéro.
width
L'utilisation et la définition de cet attribut sont identiques à celles de la propriété 'width' dans la spécification CSS2. Les valeurs d'attributs sont soumises aux mêmes restrictions que celles de l'attribut height.
z-index
L'utilisation et la définition de cet attribut sont identiques à celles de la propriété 'z-index' dans la spécification CSS2, aux exceptions suivantes :

Contenu de l'élément

L'élément region est un élément vide.

3.3.2 L'élément root-layout

L'élément root-layout détermine la valeur des propriétés de disposition de l'élément racine, qui détermine à son tour la dimension de la zone de visualisation, par exemple la fenêtre où la présentation SMIL est rendue.

Si le document contient plusieurs élément root-layout, c'est une condition d'erreur, et il ne devrait pas être affiché.

Attributs de l'élément

L'élément root-layout peut avoir les attributs suivants :

background-color
Défini dans la section 3.3.1
height
Défini dans la section 3.3.1
Fixe la hauteur de l'élément racine. Seules les valeurs de longueur sont admises.
id
Défini dans la section 2
skip-content
Défini dans la section 3.3.1
title
Défini dans la section 3.3.1
width
Défini dans la section 3.3.1
Fixe la largeur de l'élément racine. Seules les valeurs de longueur sont admises.

Contenu de l'élément

L'élément root-layout est un élément vide.

3.4 L'élément meta

L'élément meta peut être utilisé pour définir les propriétés d'un document (par exemple, son auteur, sa date d'expiration, une liste de mots-clés) et pour assigner les valeurs de ces propriétés. Chaque élément meta définit une seule paire propriété/valeur.

Attributs de l'élément

L'élément meta peut avoir les attributs suivants :

content
Cet attribut indique la valeur de la propriété définie dans l'élément meta.
L'attribut content est obligatoire dans l'élément meta .
id
Défini dans la section 2
name
Cet attribut identifie la propriété définie dans l'élément meta.
L'attribut name est obligatoire dans l'élément meta.
skip-content
Défini dans la section 3.3.1

La liste des propriétés est ouverte. Cette spécification définit les propriétés suivantes :

base
La valeur de cette propriété détermine l'adresse URI de base de toutes les adresses URI relatives utilisées dans le document.
pics-label ou PICS-Label
La valeur de cette propriété indique une étiquette de notation valide du document comme définie dans la spécification PICS [PICS].
title
La valeur de cette propriété contient le titre de la présentation.

Contenu de l'élément

L'élément meta est un élément vide.

4 Le corps du document

4.1 L'élément body

L'élément body contient des informations concernant le comportement temporel et de liaison du document. Il définit implicitement un élément seq (défini dans la section 4.2.2, cf. la section 4.2.4 pour une définition de la sémantique temporelle de l'élément body).

Attributs de l'élément

L'élément body admet les attributs suivants :

id
Défini dans la section 2

Contenu de l'élément

L'élément body peut avoir les sous-éléments suivants :

a
Défini dans la section 4.5.1
animation
Défini dans la section 4.2.3
audio
Défini dans la section 4.2.3
img
Défini dans la section 4.2.3
par
Défini dans la section 4.2.1
ref
Défini dans la section 4.2.3
seq
Défini dans la section 4.2.2
switch
Défini dans la section 4.3
text
Défini dans la section 4.2.3
textstream
Défini dans la section 4.2.3
video
Défini dans la section 4.2.3

4.2 Les éléments de synchronisation

4.2.1 L'élément par

Les sous-éléments d'un élément par peuvent se chevaucher dans le temps. L'ordre textuel d'apparition des sous-éléments de l'élément par n'a aucune influence sur la temporisation de leur présentation.

Attributs de l'élément

L'élément par peut avoir les attributs suivants :

abstract
Une brève description du contenu de l'élément.
author
Le nom de l'auteur du contenu de l'élément.
begin
Cet attribut indique l'instant du démarrage explicite de l'élément. Cf. la définition de sa sémantique dans la section 4.2.4.
L'attribut peut contenir les deux types de valeurs suivants :
delay-value
Une valeur de retard (N.d.T. delay-value) est une valeur d'horloge mesurant un temps de présentation. Le temps de présentation court à la vitesse de la présentation. Il se comporte comme le code temporel affiché par le compteur d'un tableau de défilement. Il peut être arrêté, augmenté ou diminué par l'action de l'utilisateur, ou bien par le lecteur même.
La sémantique d'une valeur de retard dépend du premier élément de synchronisation ancêtre de l'élément (c'est-à-dire que les éléments ancêtres a ou switch sont ignorés) :
  • Si cet ancêtre est un élément par, la valeur définit un retard depuis le début effectif de cet élément (cf. Figure 4.1) ;
  • Si cet ancêtre est un élément seq (défini dans la section 4.2.2), la valeur définit un retard depuis la fin effective du premier prédécesseur lexical qui est un élément de synchronisation (cf. Figure 4.2).
event-value
L'élément démarre lorsque survient un événement donné (cf. Figure 4.3). Sa valeur est un événement d'élément (cf. définition ci-dessous).
L'élément générant l'événement doit se trouver à portée Le jeu d'éléments S à portée est déterminé ainsi :
  1. Prendre tous les sous-éléments du premier ancêtre de l'élément, qui est un élément de synchronisation, et les ajouter à S ;
  2. Supprimer tous les éléments a et switch de S. Ajouter à S tous les sous-éléments des éléments a, sauf les éléments switch.

Le jeu obtenu S est le jeu des éléments à portée.


<par>
  <audio id="a" begin="6s" src="audio" />
</par>

Un retard dans un élément par D


Figure 4.1 : Utilisation d'une valeur de retard dans un élément par
<seq>
  <audio src="audio1" />
  <audio begin="5s" src="audio2" />
</seq>

Un retard dans un élément seq D


Figure 4.2 : Utilisation d'une valeur de retard dans un élément seq
<par>
  <audio id="a" begin="6s" ... />
  <img  begin="id(a)(4s)" ... />
</par>

Un élément avec une valeur d'événement D


Figure 4.3 : Attribut de synchronisation avec une valeur d'événement d'élément
copyright
La notice de droits d'auteur du contenu de l'élément.
dur
Cet attribut indique la durée explicite d'un élément. Cf. la définition de sa sémantique dans la section 4.2.4. La valeur de l'attribut peut être une valeur d'horloge ou la chaîne "indefinite".
end
Cet attribut définit la fin explicite de l'élément. Cf. une définition de sa sémantique dans la section 4.2.4. L'attribut admet les mêmes types de valeur que l'attribut begin.
endsync
Cf. la définition de la sémantique de cet attribut dans la section 4.2.4. L'attribut admet les valeurs suivantes :

La valeur par défaut de l'attribut endsync est "last".

id
Défini dans la section 2
region
Cet attribut indique la surface de rendu abstraite (visuelle ou bien acoustique) définie dans la section de disposition (N.d.T. layout) du document. Sa valeur doit être un identificateur XML. Si aucune surface de rendu avec cet id n'est définie dans la section de disposition, les valeurs des propriétés de mise en forme de cet élément sont déterminées d'après la disposition par défaut.
L'attribut region d'un élément par n'est pas utilisable par le langage de mise en forme de base SMIL défini dans cette spécification. On l'ajoute pour complétude, car il peut être nécessaire pour d'autres langages de mise en forme.
repeat
Cf. la définition de la sémantique de cet attribut dans la section 4.2.4. La valeur de l'attribut peut être un entier ou la chaîne "indefinite". La valeur par défaut est "1".
system-bitrate
Défini dans la section 4.4
system-captions
Défini dans la section 4.4
system-language
Défini dans la section 4.4
system-overdub-or-caption
Défini dans la section 4.4
system-required
Défini dans la section 4.4
system-screen-size
Défini dans la section 4.4
system-screen-depth
Défini dans la section 4.4
title
Défini dans la section 3.3.1
On recommande fortement que tous les éléments par aient un attribut title avec une description significative. Les outils de création devraient veiller à ce qu'on ne puisse pas introduire d'élément sans cet attribut dans un document SMIL.

Remarque à propos de la synchronisation des sous-éléments

La précision de la synchronisation des sous-éléments dans un groupe parallèle dépend de la mise en œuvre. Prenons un exemple de synchronisation en cas de retards de lecture, c'est-à-dire un comportement où l'élément par contient deux types de médias continus (ou plus), comme du son ou de la vidéo, dont l'un est en retard.
Le lecteur peut adopter les comportements de synchronisation suivants :

synchronisation rigide
Le lecteur synchronise les sous-éléments dans l'élément par par rapport à une horloge commune (cf. Figure 4.4 a).
synchronisation souple
Chaque sous-élément de l'élément par a sa propre horloge, qui court indépendamment de celles des autres sous-éléments de l'élément par (cf. Figure 4.4 b).


Synchronisation rigide D

a) Synchronisation rigide. Si retard de la vidéo : arrêt du son, ou bien abandon de certaines images de la vidéo. Le comportement exact dépend de la mise en œuvre

Synchronisation souple D

b) Synchronisation souple


Figure 4.4 : Effet d'un retard sur le programme de diffusion de lecteurs avec des approches de synchronisation différentes

Valeurs de l'attribut

valeur d'horloge
Clock-val             ::= Full-clock-val | Partial-clock-val | Timecount-val
Full-clock-val        ::= Hours ":" Minutes ":" Seconds ("." Fraction)?
Partial-clock-val     ::= Minutes ":" Seconds ("." Fraction)?
Timecount-val         ::= Timecount ("." Fraction)?
                          ("h" | "min" | "s" | "ms")? ; par défaut en "s"
Hours                 ::= 2DIGIT; tout nombre positif
Minutes               ::= 2DIGIT; intervalle de 00 à 59
Seconds               ::= 2DIGIT; intervalle de 00 à 59
Fraction              ::= DIGIT+
Timecount             ::= DIGIT+
2DIGIT                ::= DIGIT DIGIT
DIGIT                 ::= [0-9]

Voici des exemples de valeurs d'horloge légales :


Une fraction x à n chiffres représente la valeur suivante :

x * 1/10**n

Exemples :

00.5s = 5 * 1/10 secondes = 500 millisecondes
00:00.005 = 5 * 1/1000 secondes = 5 millisecondes

valeur element-event
Une valeur d'événement d'élément définit un événement particulier dans un élément de synchronisation.
L'événement d'élément suit la syntaxe suivante :
Element-event     ::= "id(" Event-source ")(" Event ")"
Event-source      ::= Id-value
Event             ::= "begin" | Clock-val | "end"
Les événements suivants sont définis :
begin
Cet événement est généré au début effectif de l'élément.
Exemple d'utilisation : begin="id(x)(begin)"
clock-val
Cet événement est généré lorsque l'horloge associée à l'élément atteint une valeur particulière. Cette horloge commence à zéro au début effectif de l'élément. Pour les éléments par et seq, l'horloge donne le temps de présentation depuis le début effectif de l'élément. Pour les éléments d'objets multimédias, la sémantique dépend de la mise en œuvre. L'horloge indique soit le temps de présentation écoulé depuis le début effectif, soit le temps de média de l'objet. Ce dernier peut différer du temps de présentation écoulé depuis le début de l'affichage de l'objet, par exemple à cause de retards de rendu ou du réseau, et c'est cette dernière approche qui est recommandée.
Utiliser une valeur d'horloge excédant la valeur de la durée effective de l'élément générant l'événement est une erreur.

Exemple d'utilisation : begin="id(x)(45s)"

end
Cet événement est généré à la fin effective de l'élément.
Exemple d'utilisation : begin="id(x)(end)"

Contenu de l'élément

L'élément par peut avoir les sous-éléments suivants :

a
Défini dans la section 4.5.1
animation
Défini dans la section 4.2.3
audio
Défini dans la section 4.2.3
img
Défini dans la section 4.2.3
par
Défini dans la section 4.2.1
ref
Défini dans la section 4.2.3
seq
Défini dans la section 4.2.2
switch
Défini dans la section 4.3
text
Défini dans la section 4.2.3
textstream
Défini dans la section 4.2.3
video
Défini dans la section 4.2.3

Tous ces éléments peuvent apparaître à plusieurs reprises comme sous-éléments directs d'un élément par.

4.2.2 L'élément seq

Les sous-éléments de l'élément seq forment une séquence temporelle.

Attributes

L'élément seq admet les attributs suivants :

abstract
Défini dans la section 4.2.1
author
Défini dans la section 4.2.1
begin
Défini dans la section 4.2.1
copyright
Défini dans la section 4.2.1
dur
Défini dans la section 4.2.1
end
Défini dans la section 4.2.1
id
Défini dans la section 2
region
Défini dans la section 4.2.1
L'attribut region des éléments seq n'est pas utilisable par le langage de mise en forme de base SMIL défini dans cette spécification. On l'ajoute pour complétude, car il peut être nécessaire pour d'autres langages de mise en forme.
repeat
Défini dans la section 4.2.1
system-bitrate
Défini dans la section 4.4
system-captions
Défini dans la section 4.4
system-language
Défini dans la section 4.4
system-overdub-or-caption
Défini dans la section 4.4
system-required
Défini dans la section 4.4
system-screen-size
Défini dans la section 4.4
system-screen-depth
Défini dans la section 4.4
title
Défini dans la section 3.3.1
On recommande fortement que tous les éléments seq aient un attribut title avec une description significative. Les outils de création devraient veiller à ce qu'on ne puisse pas introduire d'élément sans cet attribut dans un document SMIL.

Contenu de l'élément

L'élément seq peut avoir les sous-éléments suivants :

a
Défini dans la section 4.5.1
animation
Défini dans la section 4.2.3
audio
Défini dans la section 4.2.3
img
Défini dans la section 4.2.3
par
Défini dans la section 4.2.1
ref
Défini dans la section 4.2.3
seq
Défini dans la section 4.2.2
switch
Défini dans la section 4.3
text
Défini dans la section 4.2.3
textstream
Défini dans la section 4.2.3
video
Défini dans la section 4.2.3

4.2.3 Les éléments d'objets multimédias : les éléments ref, animation, audio, img, video, text et textstream

Les éléments d'objets multimédias permettent d'inclure des objets multimédias dans une présentation SMIL. Les objets multimédias sont inclus par référence (avec une adresse URI).

Il existe deux types d'objets multimédias : ceux avec une durée intrinsèque (qu'on appelle aussi médias continus), par exemple vidéo ou son, et ceux sans durée intrinsèque (qu'on appelle aussi médias discrets), par exemple texte ou image.

On peut également associer des ancres et des liens aux objets multimédias visuels, c'est-à-dire les objets multimédias rendus sur une surface de rendu abstraite visuelle.

Pour la lecture d'un objet multimédia, le lecteur ne doit pas déduire de type exact de l'objet multimédia d'après le nom de l'élément d'objet multimédia. Il doit plutôt compter uniquement sur d'autres sources à propos du type, comme l'information de type contenue dans l'attribut type, ou l'information de type communiquée par un serveur ou le système d'exploitation.

Toutefois, les auteurs devraient veiller à ce que le groupe auquel appartient l'objet multimédia (animation, audio, img, video, text ou textstream) soit répercuté dans le nom de l'élément. Cela dans le but d'accroître la lisibilité du document SMIL. En cas de doute au sujet du groupe de l'objet multimédia, les auteurs devraient utiliser l'élément générique ref.

Attributs de l'élément

Les éléments d'objets multimédias admettent les attributs suivants :

abstract
Défini dans la section 4.2.1
alt
Pour les agents utilisateurs incapables d'afficher un objet multimédia donné, cet attribut indique un texte de remplacement. On recommande fortement que tous les éléments d'objets multimédias aient un attribut alt avec une description significative. Les outils de création devraient veiller à ce qu'on ne puisse pas introduire d'élément sans cet attribut dans un document SMIL.
author
Défini dans la section 4.2.1
begin
Défini dans la section 4.2.1
clip-begin
L'attribut clip-begin indique le début d'une sous-séquence d'un objet multimédia continu par un décalage depuis le début de l'objet multimédia en question.
Les valeurs de l'attribut clip-begin ont la syntaxe suivante :
Clip-time-value   ::= Metric "=" ( Clock-val | Smpte-val )
Metric            ::= Smpte-type | "npt"
Smpte-type        ::= "smpte" | "smpte-30-drop" | "smpte-25"
Smpte-val         ::= Hours ":" Minutes ":" Seconds 
                      [ ":" Frames [ "." Subframes ]]
Hours             ::= 2DIGIT
Minutes           ::= 2DIGIT
Seconds           ::= 2DIGIT
Frames            ::= 2DIGIT
Subframes         ::= 2DIGIT

La valeur de cet attribut se compose d'un indicateur métrique suivi par une valeur de temps dont la syntaxe et la sémantique dépendent de l'indicateur métrique. Les formats suivants sont admis :

Estampille SMPTE
On peut utiliser les codes temporels SMPTE [SMPTE] pour une précision d'accès à l'image près. L'indicateur métrique admet les valeurs suivantes :
smpte
smpte-30-drop
Ces valeurs indiquent l'utilisation du format SMPTE 30 drop à 29,97 images par seconde. Le champs frames accepte les valeurs de 0 à 29. La différence entre 30 et 29,97 images par seconde est prise en compte en abandonnant les deux premiers index d'image (valant 00 et 01) toutes les minutes sauf chaque dixième minute.
smpte-25
Le champs frames de la définition de temps accepte les valeurs de 0 à 24.

La valeur de temps prend le format heures:minutes:secondes:images.sous-images (N.d.T. hours:minutes:seconds:frames.subframes). Si la valeur d'image est zéro, on peut l'omettre. Les sous-images sont mesurées en centièmes d'image.
Exemples :
clip-begin="smpte=10:12:33:20"

Temps de lecture normale (N.d.T. Normal Play Time)
Le temps de lecture normale exprime un temps en fonction des valeurs d'horloge SMIL. L'indicateur métrique est npt et la syntaxe de la valeur de temps est identique à celle des valeurs d'horloge SMIL.
Exemples :
clip-begin="npt=123.45s"
clip-begin="npt=12:05:35.3
"
clip-end
L'attribut clip-end indique la fin d'une sous-séquence d'objet multimédia continu (comme un son, une vidéo ou une autre présentation) à lire. Il a la même syntaxe de valeur d'attribut que clip-begin.
Si la valeur de l'attribut clip-end excède la durée de l'objet multimédia, cette valeur est ignorée et la fin de la séquence s'aligne sur la fin effective de l'objet multimédia.
copyright
Défini dans la section 4.2.1
dur
Défini dans la section 4.2.1
end
Défini dans la section 4.2.1
fill
Cf. la définition sémantique de cet attribut dans la section 4.2.4. L'attribut admet les valeurs "remove" et "freeze".
id
Défini dans la section 2
longdesc
Cet attribut indique un lien (une adresse URI) vers une description approfondie de l'objet multimédia. Elle devrait compléter la description courte offerte par l'attribut alt. Lorsque des ancres sont associées à l'objet multimédia, cet attribut devrait fournir des informations à propos du contenu des ancres.
region
Défini dans la section 4.2.1
repeat
Défini dans la section 4.2.1
src
La valeur de l'attribut src est l'adresse URI de l'objet multimédia.
system-bitrate
Défini dans la section 4.4
system-captions
Défini dans la section 4.4
system-language
Défini dans la section 4.4
system-overdub-or-caption
Défini dans la section 4.4
system-required
Défini dans la section 4.4
system-screen-size
Défini dans la section 4.4
system-screen-depth
Défini dans la section 4.4
title
Défini dans la section 3.3.1
On recommande fortement que tous les objets multimédias aient un attribut title avec une description significative. Les outils de création devraient veiller à ce qu'on ne puisse pas introduire d'élément sans cet attribut dans un document SMIL.
type
Le type MIME de l'objet multimédia appelé par l'attribut src.

Contenu de l'élément

Les éléments d'objets multimédias peuvent contenir les éléments suivants :

anchor
Défini dans la section 4.5.2

4.2.4 Le modèle temporel de SMIL

4.2.4.1 Les valeurs du modèle temporel

Dans la discussion à suivre, le terme élément se rapporte seulement aux éléments de synchronisation.

Nous définissons le début, la durée et la fin, implicites, explicites, souhaitées et effectives, de chaque élément.

Le début, la durée et la fin effectives indiquent ce que le lecteur du document percevra.

Les valeurs implicites, explicites et souhaitées sont des valeurs auxilliaires utilisées pour définir les valeurs effectives.

Les règles pour calculer chacune des valeurs des éléments définis dans SMIL 1.0 sont décrites dans la section suivante.

  1. Chaque élément dans SMIL a un début implicite ;
  2. Chaque élément peut recevoir un début explicite si on lui ajoute un attribut begin :
    begin = "valeur de début explicite"

    Si le début explicite est antérieur au début implicite de l'élément, alors c'est une condition erreur.

  3. Chaque élément dans SMIL a une fin implicite ;
  4. Chaque élément peut recevoir une fin explicite si on lui ajoute un attribut end :
    end = "valeur de fin explicite"
  5. La durée implicite d'un élément correspond à la différence entre la fin implicite et le début implicite ;
  6. Chaque élément dans SMIL peut recevoir une durée explicite si on lui ajoute un attribut dur :
    dur = "valeur de durée explicite"
  7. Le début souhaité d'un élément équivaut au début explicite, le cas échéant, sinon il équivaut au début implicite ;
  8. Chaque élément a une fin souhaitée ;
  9. La durée souhaitée d'un élément correspond à la différence entre la fin souhaitée et le début souhaité ;
  10. Chaque élément a un début effectif ;
  11. Chaque élément a une fin effective. (Remarque : La fin effective d'un sous-élément ne peut jamais être postérieure à la fin effective de son parent) ;
  12. La durée effective d'un élément correspond à la différence entre la fin effective et le début effectif.
4.2.4.2 La détermination des valeurs de modèle temporel des éléments SMIL 1.0

Cette section définit comment calculer les valeurs du modèle temporel des éléments de synchronisation SMIL 1.0 dans les cas non couverts par les règles de la section 4.2.4.1.

La détermination du début implicite d'un élément

La détermination de la fin implicite d'un élément

La première description à correspondre à l'élément est celle à utiliser.

La détermination de la fin souhaitée d'un élément

La détermination du début souhaité d'un élément

Le début souhaité d'un élément est déterminé par la règle 7 dans la section 4.2.4.1.

La détermination du début effectif d'un élément

Le début effectif d'un élément équivaut au début souhaité de l'élément, sauf si la fin effective de l'élément parent est antérieure, auquel cas l'élément n'est pas du tout présenté.

La détermination de la fin effective d'un élément

4.3 L'élément switch

L'élément switch permet à l'auteur de définir un jeu d'éléments de remplacement dans lequel un seul élément acceptable est à choisir. Un élément est acceptable si c'est un élément SMIL 1.0, si le type de média est reconnu et si tous les attributs de test (cf. la section 4.4) de l'élément sont évalués à "true".

L'élément est sélectionné ainsi : le lecteur évalue les éléments selon l'ordre d'apparition dans l'élément switch. Le premier élément acceptable est retenu à l'exclusion de tous les autres dans l'élément switch.

Les auteurs devraient donc ranger les options du plus au moins souhaitable. En outre, les auteurs devraient placer une option relativement tolérante en dernier élément de switch, pour assurer le choix d'au moins un élément de switch (à moins qu'on ne le veuille explicitement pas). Les mises en œuvre ne devraient pas retenir un objet arbitraire dans un élément switch lorsque les attributs de test ne sont pas tous vérifiés.

Remarquez que les adresses URI en http pourvoient une négociation de contenu, qui permet de se passer de l'élément switch dans certains cas.

Attributs

L'élément switch admet les attributs suivants :

id
Défini dans la section 2
title
Défini dans la section 3.3.1
On recommande fortement que tous les éléments switch aient un attribut title avec une description significative. Les outils de création devraient veiller à ce qu'on ne puisse pas introduire d'élément sans cet attribut dans un document SMIL.

Contenu de l'élément

Si l'élément switch est utilisé comme sous-élément direct ou indirect d'un élément body, il peut avoir les sous-éléments suivants :

a
Défini dans la section 4.5.1
animation
Défini dans la section 4.2.3
audio
Défini dans la section 4.2.3
img
Défini dans la section 4.2.3
par
Défini dans la section 4.2.1
ref
Défini dans la section 4.2.3
seq
Défini dans la section 4.2.2
switch
Défini dans la section 4.3
text
Défini dans la section 4.2.3
textstream
Défini dans la section 4.2.3
video
Défini dans la section 4.2.3

Tous ces éléments peuvent apparaître plusieurs fois comme sous-éléments de switch.

Si l'élément switch est utilisé dans un élément head, il peut avoir les sous-éléments suivants :

layout
Défini dans la section 3.2
Plusieurs éléments layout peuvent apparaître dans l'élément switch.

4.4 Les attributs de test

Cette spécification définit une liste d'attributs de test qu'on peut ajouter à n'importe quel élément de synchronisation, pour évaluer les capacités et réglages des systèmes. Conceptuellement, ces attributs constituent des tests booléens. Lorsqu'un des attributs de test présent sur un élément est évalué à "false", l'élément porteur de l'attribut est ignoré.

Dans la liste suivante, le concept de préférences de l'utilisateur peut transparaître. Quoique le moteur de lecture fixe habituellement les préférences de l'utilisateur au travers d'une fenêtre de dialogue de préférences, cette spécification n'exerce aucune contrainte pour leur communication de l'utilisateur au lecteur SMIL.

On définit les attributs de test suivants en SMIL 1.0 :

system-bitrate
Cet attribut indique le débit approximatif, en bits par seconde, dont dispose le système. La mesure du débit est propre à l'application, c'est-à-dire qu'elle peut utiliser une mesure sophistiquée de la connectivité de bout en bout, ou utiliser un simple réglage statique contrôlé par l'utilisateur. Dans ce dernier cas, on pourrait par exemple s'en servir pour faire un choix en fonction de la connexion au réseau de l'utilisateur. Les valeurs typiques pour l'utilisateur d'un modem seraient 14400, 28800, 56000 bit/s, etc. Il prend la valeur "true" si le débit binaire disponible du système est supérieur ou égal à la valeur indiquée, et la valeur "false" si le débit binaire est inférieur.
L'attribut admet tout entier supérieur à 0. Si la valeur excède la valeur de débit maximum définie par la mise en œuvre, l'attribut est toujours évalué à "false".
system-captions
Cet attribut permet à l'auteur de distinguer un équivalent textuel redondant de la partie sonore de la présentation (destiné aux personnes ayant des difficultés d'audition ou apprenant à lire qui souhaitent ou ont besoin de ces informations) du texte destiné au public en général. L'attribut vaut "on" si l'utilisateur souhaite avoir un sous-titrage, et "off" s'il ne souhaite pas avoir cette information. L'attribut est évalué à "true" si la valeur est "on" et à "false" si la valeur est "off".
system-language
La valeur de l'attribut est une liste de noms de langue, séparés par des virgules, comme définit dans le document [RFC1766].

Il est évalué à "true", si l'une des langues indiquées dans les préférences de l'utilisateur correspond exactement à l'une des langues données en valeur de ce paramètre, ou si l'une des langues indiquées dans les préférences de l'utilisateur correspond exactement au préfixe de l'une des langues données en paramètre tel que le premier caractère de balisage suivant le préfixe soit -.

Sinon évalué à "false".

Remarque : L'utilisation d'une règle de correspondance de préfixe n'implique pas que les balises de langue sont forcément assignées aux langues, de telle sorte que si l'utilisateur comprend une langue avec une balise donnée, alors il comprendra aussi toutes les langues dont cette balise est un préfixe.

La règle de préfixe permet simplement d'utiliser des balises de préfixe s'il y a lieu.

Remarque pour la mise en œuvre : Au moment de proposer un choix linguistique, les développeurs devraient tenir compte du fait que les utilisateurs ne connaissent pas les détails du filtrage de langue décrit ci-dessus, et ils devraient donc les guider correctement. Par exemple, un utilisateur risque de supposer que la sélection du code de langue "en-gb" lui apportera tous types de documents en anglais si l'anglais britannique n'est pas disponible. L'interface utilisateur de paramétrage des préférences de l'utilisateur devrait lui suggérer d'ajouter le code "en" pour un filtrage optimal.

On peut lister plusieurs langues pour un contenu destiné à plusieurs publics. Par exemple, une traduction du Traité de Waitangi, présentée simultanément dans sa version originale en maori et en anglais, serait signalée ainsi :

          <audio src="waitangi.rm" system-language="mi, en"/>

Toutefois, ce n'est pas parce que plusieurs langues sont présentes au sein de l'objet où se place l'attribut de test system-language qu'il est prévu pour plusieurs publics linguistiques. Un exemple serait celui d'une introduction à une langue pour des débutants, telle que Une première leçon de latin, qui est clairement destinée à un public francophone. Auquel cas, l'attribut de test system-language ne devrait comporter que le code "fr".

Remarque pour la création : Les auteurs devraient savoir que si un élément switch contient plusieurs options d'objets linguistiques et qu'aucune ne correspond, cela peut conduire à des situations où la vidéo est présentée sans piste sonore. On recommande donc d'inclure une option attrape-tout en fin de l'élément switch, qui soit acceptable en toute situation.

system-overdub-or-caption
Cet attribut est un paramètre qui détermine si l'utilisateur préfère un doublage ou un sous-titrage lorsque l'option est disponible. L'attribut peut avoir les valeurs "caption" ou "overdub". Il est évalué à "true" si les préférence de l'utilisateur correspondent à la valeur de cet attribut, et à "false" dans le cas contraire.
system-required
Cet attribut indique le nom d'une extension. Il est évalué à "true" si l'extension est prise en charge par la mise en œuvre, sinon à "false". Dans une version future de SMIL, cette valeur d'attribut sera un espace de nommage XML [NAMESPACES].
system-screen-size
Les valeurs de l'attribut ont la syntaxe suivante :
screen-size-val ::= screen-height"X"screen-width
Chaque valeur est une valeur en pixels qui doit être une valeur entière supérieure à 0. Il est évalué à "true" si le moteur de lecture SMIL est capable d'afficher une présentation de la dimension souhaitée, et évalué à "false" si le moteur de lecture peut seulement afficher une présentation réduite.
system-screen-depth
Cet attribut indique la profondeur en bits de la palette de couleurs de l'écran nécessaire pour l'affichage de l'élément. La valeur doit être supérieure à 0. Des valeurs typiques : 1, 8, 24, etc. Il est évalué à "true" si le moteur de lecture SMIL est capable d'afficher des images ou de la vidéo avec la profondeur de couleur donnée, et évalué à "false" si le moteur de lecture peut seulement afficher des images ou de la vidéo avec une profondeur de couleur inférieure.

Exemples

1) Choix de différents contenus selon le débit binaire

Dans un scénario courant, les mises en œuvres peuvent proposer une sélection via un paramètre system-bitrate sur l'élément. Le lecteur multimédia évalue chaque option (les éléments dans le switch) une à une, en recherchant un débit binaire acceptable d'après les caractéristiques connues de la liaison entre le lecteur multimédia et le serveur multimédia.

...
<par>
  <text .../>
  <switch>
    <par system-bitrate="40000">
    ...
    </par>
    <par system-bitrate="24000">
    ...
    </par>
    <par system-bitrate="10000">
    ........
    </par>
  </switch>
</par>
...

2) Choix de ressources sonores avec différents débits binaires

Les éléments dans le switch peuvent être des combinaisons d'éléments quelconques. Par exemple, on pourrait simplement indiquer une piste sonore de remplacement :

...
<switch>
   <audio src="joe-audio-better-quality" system-bitrate="16000" />
   <audio src="joe-audio" system-bitrate="8000" />
</switch>
...

3) Choix de ressources sonores dans des langues différentes

Dans l'exemple suivant, une ressource sonore est disponible en français et en anglais. D'après la langue de préférence de l'utilisateur, le lecteur peut choisir une des ressources sonores :

...
<switch>
   <audio src="joe-audio-french" system-language="fr"/>
   <audio src="joe-audio-english" system-language="en"/>
</switch>
...

4) Choix de contenus écrits pour différentes résolutions d'écran

Dans l'exemple suivant, la présentation contient des parties de remplacement conçues pour des écrans avec des résolutions et des profondeurs différentes. Le lecteur choisira une des options en fonction des caractéristiques particulières de l'écran :

...
<par>
  <text .../>
  <switch>
    <par system-screen-size="1280X1024" system-screen-depth="16">
    ........
    </par>
    <par system-screen-size="640X480" system-screen-depth="32">
    ...
    </par>
    <par system-screen-size="640X480" system-screen-depth="16">
    ...
    </par>
  </switch>
</par>
...

5) Distinguer les pistes de sous-titrage des téléscripteurs boursier

Dans l'exemple suivant, les sous-titres apparaissent seulement si l'utilisateur souhaite leur affichage :

...
<seq>
  <par>
    <audio      src="audio.rm"/>
    <video      src="video.rm"/>
    <textstream src="telescripteur.rtx"/>
    <textstream src="sous-titre.rtx" system-captions="on"/>
  </par>
</seq>
...

6) Choix de la langue des pistes de doublage et de sous-titrage

Dans cet exemple, un film en français contient des pistes de doublage et sous-titrage en anglais, en allemand et en hollandais. Le segment SMIL suivant exprime cette situation et bascule sur l'option souhaitée par l'utilisateur :

...
<par>
  <switch>
    <audio src="film-aud-en.rm" system-language="en"
                system-overdub-or-caption="overdub"/>
    <audio src="film-aud-de.rm" system-language="de"
                system-overdub-or-caption="overdub"/>
    <audio src="film-aud-nl.rm" system-language="nl"
                system-overdub-or-caption="overdub"/>
     <!-- En français pour les autres cas -->
     <audio src="film-aud-fr.rm"/>
   </switch>
   <video src="film-vid.rm"/>
   <switch>
     <textstream src="film-sous-titr-en.rtx" system-language="en"
                 system-overdub-or-caption="caption"/>
     <textstream src="film-sous-titr-de.rtx" system-language="de"
                system-overdub-or-caption="caption"/>
     <textstream src="film-sous-titr-nl.rtx" system-language="nl"
                 system-overdub-or-caption="caption"/>
     <!-- Sous-titrage en français pour ceux qui le souhaitent -->
     <textstream src="film-sous-titr-fr.rtx" system-captions="on"/>
   </switch>
</par>
...

4.5 Les éléments d'hyperlien

Les éléments de lien permettent de décrire des liens de navigation entre les objets.

Le langage SMIL ne propose que des éléments de lien en-ligne. Ils se limitent à des liens unidirectionnels à cible unique (c'est-à-dire que tous les liens ont exactement une source et une ressource de destination). Dans SMIL, tous les liens sont actionnés par l'utilisateur.

La gestion des liens dans les documents incorporés

Intégrante par nature, la présentation d'un document SMIL peut faire intervenir d'autres applications ou modules d'extension (non-SMIL). Par exemple, un navigateur SMIL peut utiliser un module d'extension HTML pour afficher une page HTML incorporée. Vice versa, un navigateur HTML peut utiliser un module d'extension SMIL pour affiche un document SMIL incorporé dans une page HTML.

Dans ces présentations, les liens peuvent être définis par des documents à différents niveaux et des conflits peuvent se produire. Auquel cas, le lien défini par le document conteneur devrait avoir priorité sur le lien défini par l'objet incorporé. Remarquez, puisque cela peut nécessiter une interaction entre le navigateur et le module d'extension, que les mises en œuvre SMIL peuvent choisir de ne pas se conformer à cette recommandation.

Si un lien est défini dans un document SMIL incorporé, la traversée du lien n'affecte que le document SMIL incorporé.

Si un lien est défini dans un document non-SMIL incorporé dans un document SMIL, la traversée du lien peut seulement affecter la présentation du document incorporé et non celle du document conteneur SMIL. Cette contrainte sera peut être levée dans une version ultérieure de SMIL.

L'adressage

Le langage SMIL gère les identificateurs de fragments de nom et le connecteur #. C'est-à-dire que SMIL reconnaît les localisateurs comme utilisés couramment dans HTML (par exemple, SMIL utilise des localisateurs de la forme "http://truc.org/un/certain/chemin/vers#ancre1").

Les liaisons vers les fragments SMIL

Un localisateur qui pointe vers un document SMIL peut contenir une partie de fragment (par exemple, "http://www.w3.org/test.smi#par1"). La partie fragment est une valeur de type id identifiant un élément dans le document SMIL appelé. Si on suit le lien contenant une partie de fragment, la présentation devrait commencer comme si l'utilisateur avait fait une avance rapide de la présentation représentée par le document de destination jusqu'au début effectif de l'élément désigné par le fragment.

Les cas particuliers suivants peuvent se produire :

  1. L'élément appelé par le lien a un attribut repeat :
    1. Si la valeur de l'attribut repeat est N, toutes les N répétitions de l'élément sont lues ;
    2. Si l'attribut repeat vaut "indefinite", la lecture se termine conformément aux règles définies pour une valeur de répétition "indefinite".
  2. L'élément appelé par le lien est contenu dans un autre élément qui a un attribut repeat :
    1. Si la valeur de l'attribut repeat est N, la lecture commence au début de l'élément appelé par le lien, suivie par N-1 répétitions de l'élément avec l'attribut repeat ;
    2. Si l'attribut repeat vaut "indefinite", la lecture commence au début de l'élément appelé par le lien. La lecture se termine conformément aux règles définies pour une valeur de répétition "indefinite".
  3. L'élément appelé par le lien est contenu par un élément switch : les liens vers des éléments formant le contenu d'un élément switch sont proscrits.

4.5.1 L'élément a

La fonctionnalité de l'élément a est très semblable à celle de l'élément a dans HTML 4.0 [HTML40]. Le langage SMIL lui ajoute un attribut show pour contrôler le comportement temporel de la source lorsque le lien est suivi. Pour des questions de synchronisation, l'élément a est transparent, c'est-à-dire qu'il n'influe pas sur la synchronisation de ses sous-éléments. Les éléments a ne peuvent pas être imbriqués. Un élément a doit avoir un attribut href.

Attributs

L'élément a peut avoir les attributs suivants :

id
Défini dans la section 2
href
Cet attribut contient l'adresse URI de la destination du lien.
L'attribut href est obligatoire avec l'élément a.
show
Cet attribut contrôle le comportement du document source contenant le lien lorsqu'il est suivi. Il peut avoir l'une des valeurs suivantes :

La valeur par défaut de l'attribut show est "replace".

title
Défini dans la section 3.3.1
On recommande fortement que tous les éléments a aient un attribut title avec une description significative. Les outils de création devraient veiller à ce qu'on ne puisse pas introduire d'élément sans cet attribut dans un document SMIL.

Contenu de l'élément

L'élément a peut avoir les sous-éléments suivants :

animation
Défini dans la section 4.2.3
audio
Défini dans la section 4.2.3
img
Défini dans la section 4.2.3
par
Défini dans la section 4.2.1
ref
Défini dans la section 4.2.3
seq
Défini dans la section 4.2.2
switch
Défini dans la section 4.3
text
Défini dans la section 4.2.3
textstream
Défini dans la section 4.2.3
video
Défini dans la section 4.2.3

Exemples

Exemple 1

Le lien lance une nouvelle présentation en remplaçant celle en cours de lecture.

<a href="http://www.cwi.nl/somewhereelse.smi">
     <video src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>

Dans cet exemple, on peut remplacer la deuxième ligne par un appel vers tout sous-arbre valide d'une présentation SMIL.

Exemple 2

Le lien lance une nouvelle présentation en plus de celle en cours de lecture.

<a href="http://www.cwi.nl/somewhereelse.smi" show="new">
     <video src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>

Par exemple, cela permet au lecteur SMIL de se ramifier hors d'un navigateur HTML.

Exemple 3

Le lien lance la nouvelle présentation et met en pause celle en cours de lecture.

<a href="http://www.cwi.nl/somewhereelse.smi" show="pause">
     <video src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>

Exemple 4

L'exemple suivant représente un lien partant d'un élément d'une présentation A vers le milieu d'une autre présentation B. Cela pourrait lancer la lecture de la présentation B au début effectif de l'élément dont l'attribut id a pour valeur "suite".

Présentation A :

     <a href="http://www.cwi.nl/presentationB#suite">
       <video src="rtsp://foo.com/graph.imf"/>
     </a>


Présentation B (http://www.cwi.nl/presentation) :

      ...
      <seq>
        <video src="rtsp://foo.com/graph.imf"/>
        <par>
          <video src="rtsp://foo.com/timbl.rm" region="l_window"/>
          <video id="next" src="rtsp://foo.com/v1.rm" region="r_window"/>
                 ^^^^^^^^^
          <text src="rtsp://foo.com/caption1.html" region="l_2_title"/>
          <text src="rtsp://foo.com/caption2.rtx" region="r_2_title"/>
        </par>
      </seq>
      ...

4.5.2 L'élément anchor

La fonctionnalité de l'élément a est restreinte dans le sens où il ne permet d'associer un lien qu'à un objet multimédia complet. Les images cliquables HTML ont démontré l'intérêt d'associer des liens à des sous-ensembles spatiaux d'un objet. L'élément anchor réalise une fonctionnalité similaire pour SMIL :

  1. L'élément anchor permet d'associer une destination de lien aux sous-ensembles spatiaux et temporels d'un objet multimédia avec l'attribut href (par contraste, l'élément a ne le permet qu'à un objet multimédia en entier) ;
  2. L'élément anchor peut faire d'un sous-ensemble de l'objet multimédia la destination d'un lien avec l'attribut id ;
  3. L'élément anchor permet de découper un objet en sous-ensembles spatiaux avec l'attribut coords ;
  4. L'élément anchor permet de découper un objet en sous-ensembles temporels avec les attributs begin et end. Les valeurs des attributs begin et end sont relatives au début de l'objet multimédia.

Attributs

L'élément anchor admet les attributs suivants :

begin
Défini dans la section 4.2.1
coords
La valeur de cet attribut définit un rectangle dans l'aire d'affichage d'un objet multimédia visuel. La syntaxe et la sémantique de cet attribut sont similaires à celles de l'attribut coords des images cliquables HTML pour un lien associé à une forme rectangulaire. Le rectangle est défini par quatre valeurs de longueur : les deux premières indiquent les coordonnées du coin supérieur gauche du rectangle, les deux valeurs suivantes les coordonnées du coin inférieur droit. Les coordonnées sont relatives au coin supérieur gauche de l'objet multimédia visuel (cf. Figure 4.5). Si on indique une coordonnée en pourcentage, elle est relative à la totalité de la largeur, ou de la hauteur, de l'aire d'affichage de l'objet multimédia.
Un attribut avec une valeur de coordonnée erronée est ignoré (right-x est plus petit ou égal à left-x, bottom-y est plus petit ou égal à top-y). Si le rectangle défini par l'attribut coords déborde l'aire couverte par l'objet multimédia, la hauteur et la largeur en excès sont rognées aux bords de l'objet multimédia.
Les valeurs de l'attribut coords ont la syntaxe suivante :
coords-value ::= left-x "," top-y "," right-x "," bottom-y


semantics of coords attributeD


Figure 4.5 : Sémantique de l'attribut coords

end
Défini dans la section 4.2.1
href
Défini dans la section 4.5.1
id
Défini dans la section 2
show
Défini dans la section 4.5.1
skip-content
Défini dans la section 3.3.1
title
Défini dans la section 3.3.1
On recommande fortement que tous les éléments anchor aient un attribut title avec une description significative. Les outils de création devraient veiller à ce qu'on ne puisse pas introduire d'élément sans cet attribut dans un document SMIL.

Exemples

1) Association de liens à des sous-ensembles spatiaux

Dans l'exemple suivant, la place prise à l'écran par un clip vidéo est partagée en deux sections. Un lien différent est associé à chacune d'elles :

<video src="http://www.w3.org/CoolStuff">
  <anchor href="http://www.w3.org/AudioVideo" coords="0%,0%,50%,50%"/>
  <anchor href="http://www.w3.org/Style"      coords="50%,50%,100%,100%"/>
</video>

2) Association de liens à des sous-ensembles temporels

Dans l'exemple suivant, la durée d'un clip vidéo est partagée en deux sous-intervalles. Un lien différent est associé à chacun d'eux :

<video src="http://www.w3.org/CoolStuff">
  <anchor href="http://www.w3.org/AudioVideo" begin="0s" end="5s"/>
  <anchor href="http://www.w3.org/Style"      begin="5s" end="10s"/>
</video>

3) Saut vers un sous-ensemble d'un objet

L'exemple suivant montre un lien partant d'un élément dans une présentation A et allant vers le milieu d'un objet vidéo contenu dans une autre présentation B. Cela lancerait la présentation B à partir de la cinquième seconde dans la vidéo (c'est-à-dire que la présentation commencerait comme si l'utilisateur avait fait une avance rapide dans la présentation en entier jusqu'au point où le fragment désigné commence dans la vidéo CoolStuff).

Présentation A :

<a href="http://www.cwi.nl/mm/presentationB#tim">
   <video id="graph" src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>


Présentation B :

<video src="http://www.w3.org/CoolStuff">
  <anchor id="joe" begin="0s" end="5s"/>
  <anchor id="tim" begin="5s" end="10s"/>
</video>

4) Combinaison de différentes utilisations de liens

L'exemple suivant montre comment on peut combiner les différentes utilisations des liens associés :

Présentation A :

<a href="http://www.cwi.nl/mm/presentationB#tim">
  <video id="graph" src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>


Présentation B :

<video src="http://www.w3.org/CoolStuff">
  <anchor id="joe" begin="0s" end="5s" coords="0%,0%,50%,50%"
          href="http://www.w3.org/"/>
  <anchor id="tim" begin="5s" end="10s" coords="0%,0%,50%,50%"
          href="http://www.w3.org/tim"/>
</video>

5 La définition DTD de SMIL

5.1 La relation avec XML

Un document SMIL 1.0 peut contenir en option une déclaration de type de document qui nomme la définition de type de document (DTD) utilisée pour le document. Pour SMIL, la déclaration de type de document devrait ressembler à ceci (on peut remplacer les guillemets doubles par des guillemets simples) :

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

La spécification XML 1.0 permet d'étendre la définition DTD en utilisant l'élément <!DOCTYPE>, par exemple pour ajouter un nouvel ensemble de définitions d'entités. Les auteurs ne doivent pas utiliser cette fonctionnalité car beaucoup de lecteurs SMIL ne la gèreront pas.

Ceci est illégal dans SMIL :

<!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 1.0//EN"
               "http://www.w3.org/TR/REC-smil/SMIL10.dtd" [
<!ENTITY % AcmeCorpSymbols PUBLIC
     "-//Acme Corp//ENTITIES Corporate Symbols//EN"
     "http://www.acme.com/corp_symbols.xml"
>
%AcmeCorpSymbols;
]>

5.2 La définition DTD

<!--

    Voici la définition de type de document (DTD) XML de SMIL 1.0.

    Date : 1998/06/15 08:56:30

    Auteurs : 
        Jacco van Ossenbruggen <jrvosse@cwi.nl> 
        Sjoerd Mullender       <sjoerd@cwi.nl>
        
    Des informations complémentaires à propos de SMIL sont disponibles à :

          http://www.w3.org/AudioVideo/

-->

<!-- Des entités d'utilité générale -->
<!ENTITY % id-attr "id ID #IMPLIED">
<!ENTITY % title-attr "title CDATA #IMPLIED">
<!ENTITY % skip-attr "skip-content (true|false) 'true'">
<!ENTITY % desc-attr "
        %title-attr;
        abstract        CDATA   #IMPLIED
        author          CDATA   #IMPLIED
        copyright       CDATA   #IMPLIED
">

<!--=================== Le document SMIL =====================================-->
<!--
     L'élément racine smil contient tous les autres éléments.
-->
<!ELEMENT smil (head?,body?)>
<!ATTLIST smil
        %id-attr;
>

<!--=================== L'en-tête du document =================================-->
<!ENTITY % layout-section "layout|switch">

<!ENTITY % head-element "(meta*,((%layout-section;), meta*))?">

<!ELEMENT head %head-element;>
<!ATTLIST head %id-attr;>


<!--=================== L'élément layout ====================================-->
<!--
     L'élément layout contient les éléments region et root-layout
     définis par smil-basic-layout, ou d'autres éléments définis
     par un mécanisme de mise en forme externe.
-->
<!ELEMENT layout ANY>
<!ATTLIST layout
        %id-attr;
        type CDATA      "text/smil-basic-layout"
>


<!--=================== L'élément region ===================================-->
<!ENTITY % viewport-attrs "
        height              CDATA    #IMPLIED
        width               CDATA    #IMPLIED
        background-color    CDATA    #IMPLIED
">

<!ELEMENT region EMPTY>
<!ATTLIST region
        %id-attr;
        %title-attr;
        %viewport-attrs;
        left                CDATA    "0"
        top                 CDATA    "0"
        z-index             CDATA    "0"
        fit                 (hidden|fill|meet|scroll|slice)    "hidden"
        %skip-attr;
>

<!--=================== L'élément root-layout ================================-->
<!ELEMENT root-layout EMPTY>
<!ATTLIST root-layout
        %id-attr;
        %title-attr;
        %viewport-attrs;
        %skip-attr;
>


<!--=================== L'élément meta =======================================-->
<!ELEMENT meta EMPTY>
<!ATTLIST meta
        name    NMTOKEN #REQUIRED
        content CDATA   #REQUIRED
        %skip-attr;
>

<!--=================== Le corps du document =================================-->
<!ENTITY % media-object "audio|video|text|img|animation|textstream|ref">
<!ENTITY % schedule "par|seq|(%media-object;)">
<!ENTITY % inline-link "a">
<!ENTITY % assoc-link "anchor">
<!ENTITY % link "%inline-link;">
<!ENTITY % container-content "(%schedule;)|switch|(%link;)">
<!ENTITY % body-content "(%container-content;)">

<!ELEMENT body (%body-content;)*>
<!ATTLIST body %id-attr;>

<!--=================== Les attributs de synchronisation ========================-->
<!ENTITY % sync-attributes "
        begin   CDATA   #IMPLIED
        end     CDATA   #IMPLIED
">

<!--=================== Les attributs paramètres de switch =======================-->
<!ENTITY % system-attribute "
        system-bitrate             CDATA                #IMPLIED
        system-language            CDATA                #IMPLIED
        system-required            NMTOKEN              #IMPLIED
        system-screen-size         CDATA                #IMPLIED
        system-screen-depth        CDATA                #IMPLIED
        system-captions            (on|off)             #IMPLIED
        system-overdub-or-caption  (caption|overdub)    #IMPLIED
">

<!--=================== L'attribut fill ====================================-->
<!ENTITY % fill-attribute "
        fill    (remove|freeze)    'remove'
">


<!--=================== L'élément par (parallèle) ==============================-->
<!ENTITY % par-content "%container-content;">
<!ELEMENT par    (%par-content;)*>
<!ATTLIST par
        %id-attr;
        %desc-attr;
        endsync CDATA           "last"
        dur     CDATA           #IMPLIED
        repeat  CDATA           "1"
        region  IDREF           #IMPLIED
        %sync-attributes;
        %system-attribute;
>

<!--=================== L'élément seq (séquentiel) ============================-->
<!ENTITY % seq-content "%container-content;">
<!ELEMENT seq    (%seq-content;)*>
<!ATTLIST seq
        %id-attr;
        %desc-attr;
        dur     CDATA           #IMPLIED
        repeat  CDATA           "1"
        region  IDREF           #IMPLIED
        %sync-attributes;
        %system-attribute;
>

<!--=================== L'élément switch ================================-->
<!-- Dans l'en-tête, un switch ne peut contenir que des éléments layout,
        et dans le corps, que des éléments conteneurs. Toutefois, cette
        contrainte ne peut exprimée dans la définition DTD (?),
        les deux sont donc autorisées :

-->
<!ENTITY % switch-content "layout|(%container-content;)">
<!ELEMENT switch (%switch-content;)*>
<!ATTLIST switch
        %id-attr;
        %title-attr;
>

<!--=================== Les éléments d'objets multimédias =============================-->
<!-- SMIL ne définit que la structure. Les données multimédias réelles
        sont appelées par l'attribut src des objets multimédias.
-->

<!-- En outre, ces éléments ont les attributs suivants comme défini
        dans la spécification SMIL :
-->
<!ENTITY % mo-attributes "
        %id-attr;
        %desc-attr;
        region     IDREF           #IMPLIED
        alt        CDATA           #IMPLIED
        longdesc   CDATA           #IMPLIED
        src        CDATA           #IMPLIED
        type       CDATA           #IMPLIED
        dur        CDATA           #IMPLIED
        repeat     CDATA           '1'
        %fill-attribute;
        %sync-attributes;
        %system-attribute;
">

<!--
     La plupart des informations sont dans les attributs ; les objets multimédias sont vides
     ou contiennent des éléments de lien associés :
-->
<!ENTITY % mo-content "(%assoc-link;)*">
<!ENTITY % clip-attrs "
        clip-begin      CDATA   #IMPLIED
        clip-end        CDATA   #IMPLIED
">

<!ELEMENT ref           %mo-content;>
<!ELEMENT audio         %mo-content;>
<!ELEMENT img           %mo-content;>
<!ELEMENT video         %mo-content;>
<!ELEMENT text          %mo-content;>
<!ELEMENT textstream    %mo-content;>
<!ELEMENT animation     %mo-content;>

<!ATTLIST ref           %mo-attributes; %clip-attrs;>
<!ATTLIST audio         %mo-attributes; %clip-attrs;>
<!ATTLIST video         %mo-attributes; %clip-attrs;>
<!ATTLIST animation     %mo-attributes; %clip-attrs;>
<!ATTLIST textstream    %mo-attributes; %clip-attrs;>
<!ATTLIST text          %mo-attributes;>
<!ATTLIST img           %mo-attributes;>

<!--=================== Les éléments de lien =====================================-->

<!ENTITY % smil-link-attributes "
        %id-attr;
        %title-attr;
        href            CDATA                   #REQUIRED
        show            (replace|new|pause)     'replace'
">


<!--=================== Élément de lien en-ligne ===============================-->
<!ELEMENT a (%schedule;|switch)*>
<!ATTLIST a
        %smil-link-attributes;
        href            CDATA                   #REQUIRED
>


<!--=================== Élément de lien associé ===========================-->
<!ELEMENT anchor EMPTY>
<!ATTLIST anchor
        %skip-attr;
        %smil-link-attributes;
        href            CDATA                   #IMPLIED
        %sync-attributes;
        coords          CDATA                   #IMPLIED
>

Références

[CSS2]
Les feuilles de style en cascade, niveau 2, B. Bos, H. Lie, C. Lilley, I. Jacobs, 12 mai 1998.
Disponible à http://www.w3.org/TR/REC-CSS2/
[HTML40]
La spécification HTML 4.0, D. Raggett, A. Le Hors, I. Jacobs, 24 avril 1998.
Disponible à http://www.w3.org/TR/REC-html40/
[ISO/IEC 10646]
ISO (International Organization for Standardization). ISO/IEC 10646-1993 (E). Information technology -- Universal Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane. [Geneva]: International Organization for Standardization, 1993 (plus amendments AM 1 through AM 7).
[NAMESPACES]
Les espaces de nommage dans XML, T. Bray, D. Hollander, A. Layman, 27 mars 1998.
Version de travail du W3C. Disponible à http://www.w3.org/TR/WD-xml-names
[PICS]
PICS 1.1 Label Distribution -- Label Syntax and Communication Protocols, 31 octobre 1996, T. Krauskopf, J. Miller, P. Resnick, W. Trees.
Disponible à http://www.w3.org/TR/REC-PICS-labels-961031
[RFC1738]
Uniform Resource Locators, T. Berners-Lee, L. Masinter, and M. McCahill, décembre 1994.
Disponible à ftp://ftp.isi.edu/in-notes/rfc1738.txt.
[RFC1766]
Tags for the Identification of Languages, H. Alvestrand, mars 1995.
Disponible à ftp://ftp.isi.edu/in-notes/rfc1766.txt.
[RFC1808]
Relative Uniform Resource Locators, R. Fielding, juin 1995.
Disponible à ftp://ftp.isi.edu/in-notes/rfc1808.txt.
[RFC2045]
Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies, N. Freed and N. Borenstein, novembre 1996.
Disponible à ftp://ftp.isi.edu/in-notes/rfc2045.txt. Remarquez que ce document RFC remplace RFC1521, RFC1522 et RFC1590.
[SMPTE]
Time and Control Codes for 24, 25 or 30 Frame-Per-Second Motion-Picture Systems - RP 136-1995. Society of Motion Picture & Television Engineers.
[URI]
Uniform Resource Identifiers (URI): Generic Syntax and Semantics, T. Berners-Lee, R. Fielding, L. Masinter, 4 mars 1998.
Disponible à http://www.ics.uci.edu/pub/ietf/uri/draft-fielding-uri-syntax-02.txt. C'est un travail en cours pour mettre à jour [RFC1738] et [RFC1808].
[XML10]
Le langage de balisage extensible (XML) 1.0, T. Bray, J. Paoli, C.M. Sperberg-McQueen, rédacteurs, 10 février 1998.
Disponible à http://www.w3.org/TR/REC-xml/

Annexe

L'extension de SMIL 1.0

(non normatif)

Une autre recommandation du W3C ou des extensions privées étendront peut-être le langage SMIL 1.0 dans le futur.

Afin de permettre ces extensions, on recommande de respecter les règles suivantes :

On recommande de préparer les lecteurs SMIL 1.0 pour manipuler les documents qui contiennent des extensions respectant ces deux règles.

Les extensions devraient être manipulées au moyen d'un mécanisme d'espace de nommage XML, dès qu'un tel mécanisme sera défini par une recommandation du W3C. Dans le reste de la section, la syntaxe et la sémantique des espaces de nommage XML définis dans la note du W3C [NAMESPACE] ne seront utilisées que pour les besoins de la démonstration.

Les cas suivants peuvent se présenter :

  1. Le document contient une déclaration d'espace de nommage de la spécification SMIL 1.0 qui définit un préfixe vide. Auquel cas, seuls sont admis dans le document les éléments et attributs non-SMIL 1.0 déclarés en utilisant un espace de nommage XML. Le document ne peut pas contenir de déclaration de type de document pour SMIL 1.0. Si c'est le cas, alors le document est invalide.
    Dans l'exemple suivant, l'élément new:a est une extension légale. Les éléments mytags:a et b ont une syntaxe erronée, car ils ne sont pas déclarés en utilisant un espace de nommage XML.
    <?xml:namespace ns="http://www.acme.com/new-smil" prefix="new" ?>
    <?xml:namespace ns="http://www.w3.org/TR/PR-smil" ?>
    <smil>
    
    <smil xmlns:new="http://www.acme.com/new-smil"
          xmlns="http://www.w3.org/TR/REC-smil">
    
      <body>
        <par>
          <new:a>
          ...
          </new:a>
          <mytags:a ... />
            ...
          </mytags:a>
          <b>
           ...
          </b>
        </par>
       </body>
     </smil>
    
  2. Le document ne contient pas de déclaration de type de document, ou il contient une déclaration de type de document d'une version SMIL supérieure à 1.0, ou il contient une déclaration d'espace de nommage d'une spécification SMIL ultérieure à la version 1.0. Pour que le lecteur SMIL 1.0 reconnaisse cette déclaration d'espace de nommage, on recommande que l'adresse URI des versions SMIL ultérieures commence par http://www.w3.org/TR/REC-smil, avec d'autres caractères à suivre, par exemple, un numéro de version.
    En ce cas, le lecteur SMIL 1.0 devrait supposer qu'il traite un document SMIL de version supérieure à 1.0.
    Les cas suivants peuvent advenir :
    Élément inconnu
    Les éléments inconnus sont ignorés.
    Un élément inconnu peut avoir un contenu d'éléments SMIL 1.0. La valeur de l'attribut skip-content détermine si ce contenu est ignoré ou traité. Si sa valeur est "true", ou si l'attribut est absent, le contenu n'est pas traité. Si sa valeur est "false", il est traité.
    Contenu dans un élément déclaré "EMPTY"
    Une version future de SMIL pourrait autoriser un contenu dans un élément déclaré vide dans SMIL 1.0.
    La valeur de l'attribut skip-content de l'élément anciennement vide détermine si ce contenu est ignoré ou traité. Si sa valeur est "true", le contenu n'est pas traité. Si sa valeur est "false", le contenu est traité.
    Attribut inconnu
    Les attributs inconnus sont ignorés.
    Valeur d'attribut inconnue
    Les attributs avec des valeurs inconnues sont ignorés.
  3. Le document contient une déclaration de type de document pour SMIL 1.0. Auquel cas, il ne peut pas contenir d'éléments non-SMIL 1.0, même s'ils sont déclarés en utilisant des espaces de nommage XML. Car de telles extensions rendraient le document invalide.

L'utilisation de SMIL 1.0 comme extension

Lorsqu'on utilise le mécanisme d'espace de nommage XML pour inclure des éléments et attributs SMIL dans d'autres documents basés sur XML, on recommande d'utiliser l'identificateur d'espace de nommage suivant : http://www.w3.org/TR/REC-smil