Recommandation du W3C du 15 juin 1998
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.
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)
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 :
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.
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.
Seule la version en anglais de la spécification est normative. Toutefois, pour des traductions, consultez http://www.w3.org/AudioVideo/SMIL/translations.
La liste des erreurs connues dans cette spécification est disponible à http://www.w3.org/AudioVideo/SMIL/errata.
smil
body
par
seq
ref, animation, audio, img, video, text et textstream
switch
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.
smilAttributs de l'élément
L'élément smil admet les attributs suivants :
id
Contenu de l'élément
L'élément smil peut avoir les sous-éléments suivants :
body
head
headL'é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
Contenu de l'élément
L'élément head peut avoir les sous-éléments suivants :
layout
meta
switch
L'élément head peut contenir un nombre quelconque d'éléments meta,
et un élément layout ou bien un élément switch.
layoutL'é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
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
root-layout
Si l'attribut type de l'élément layout a une autre valeur,
alors l'élément contient des donnés textuelles.
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>
regionL'é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
couleurs systèmen'est pas imposée par la mise en forme de base SMIL.
background-color est absent, l'arrière-plan est transparent.
fit
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.fill
hidden
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.
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
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 scroll
slice
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
pourcentageou une valeur de type
longueurdé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é
pxpour les valeurs en pixels (le qualificatif
pxest obligatoire dans CSS2).
id
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.id est obligatoire sur l'élément region.
left
height.skip-content
skip-content contrôle si un
lecteur SMIL 1.0 lira ou non ce contenu ;
skip-content contrôle si le lecteur SMIL 1.0 ignorera ce contenu
ou produira une erreur de syntaxe.
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
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).
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
height.width
height.
z-index
Contenu de l'élément
L'élément region est un élément vide.
root-layoutL'é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
height
id
skip-content
title
width
Contenu de l'élément
L'élément root-layout est un élément vide.
metaL'é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
meta.content est obligatoire dans l'élément meta .
id
name
meta.name est obligatoire dans l'élément meta.
skip-content
La liste des propriétés est ouverte. Cette spécification définit les propriétés suivantes :
base
pics-label ou PICS-Label
title
Contenu de l'élément
L'élément meta est un élément vide.
bodyL'é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
Contenu de l'élément
L'élément body peut avoir les sous-éléments suivants :
a
animation
audio
img
par
ref
seq
switch
text
textstream
video
parLes 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
author
begin
a ou switch sont ignorés) :
par, la valeur définit un retard depuis le
début effectif de cet élément (cf. Figure 4.1) ;
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).
à portéeLe jeu d'éléments S
à portéeest déterminé ainsi :
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>
par
<seq> <audio src="audio1" /> <audio begin="5s" src="audio2" /> </seq>
seq
<par> <audio id="a" begin="6s" ... /> <img begin="id(a)(4s)" ... /> </par>
copyright
dur
indefinite".
end
begin.
endsync
firstid-refid-ref ::= "id(" valeur-id ")"lastLa valeur par défaut de l'attribut endsync est "last".
id
region
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
indefinite".
La valeur par défaut est "1".
system-bitrate
system-captions
system-language
system-overdub-or-caption
system-required
system-screen-size
system-screen-depth
title
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 :
par par rapport à une horloge commune
(cf. Figure 4.4 a).
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).
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
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
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
Element-event ::= "id(" Event-source ")(" Event ")"
Event-source ::= Id-value
Event ::= "begin" | Clock-val | "end"
begin="id(x)(begin)"
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.Exemple d'utilisation : begin="id(x)(45s)"
begin="id(x)(end)"
Contenu de l'élément
L'élément par peut avoir les sous-éléments suivants :
a
animation
audio
img
par
ref
seq
switch
text
textstream
video
Tous ces éléments peuvent apparaître à plusieurs reprises comme sous-éléments directs d'un élément par.
seqLes sous-éléments de l'élément seq forment une séquence temporelle.
Attributes
L'élément seq admet les attributs suivants :
abstract
author
begin
copyright
dur
end
id
region
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
system-bitrate
system-captions
system-language
system-overdub-or-caption
system-required
system-screen-size
system-screen-depth
title
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
animation
audio
img
par
ref
seq
switch
text
textstream
video
ref, animation, audio, img, video, text et textstreamLes é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
alt
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
begin
clip-begin
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.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 :
smpte
smpte-30-drop
SMPTE 30 dropà 29,97 images par seconde. Le champs
framesaccepte 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
framesde 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"
nptet la syntaxe de la valeur de temps est identique à celle des valeurs d'horloge SMIL.
clip-begin="npt=123.45s"
clip-begin="npt=12:05:35.3"
clip-end
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.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
dur
end
fill
remove" et "freeze".
id
longdesc
alt. Lorsque des ancres sont associées
à l'objet multimédia, cet attribut devrait fournir des informations à propos du contenu des ancres.
region
src
src est l'adresse URI de l'objet multimédia.
system-bitrate
system-captions
system-language
system-overdub-or-caption
system-required
system-screen-size
system-screen-depth
title
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
src.
Contenu de l'élément
Les éléments d'objets multimédias peuvent contenir les éléments suivants :
anchor
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.
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.
end :
end = "valeur de fin explicite"
dur :
dur = "valeur de durée explicite"
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.
body correspond au commencement
de la lecture du document. Ce commencement n'est pas traité dans cette spécification ;
par équivaut au début effectif
de l'élément par ;
seq équivaut au début effectif
de l'élément seq ;
seq équivaut au temps de fin souhaitée
du sous-élément précédent dans l'élément seq.
La première description à correspondre à l'élément est celle à utiliser.
repeat valant "indefinite"
a une fin implicite immédiatement après son début effectif ;
repeat dont la valeur est autre que "indefinite"
a une fin implicite égale à la fin implicite d'un élément seq ayant le
nombre déclaré de copies de l'élément sans attribut repeat comme sous-éléments ;
seq a une fin implicite équivalant à la fin souhaitée de son dernier sous-élément ;
par a une fin implicite qui dépend de la valeur de l'attribut endsync.
La fin implicite équivaut à la somme du début effectif de l'élément par
et de la durée implicite, et elle se détermine ainsi :endsync vaut "last", ou s'il est absent,
la par correspond au maximum d'entre les
endsync vaut "first", la par est le minimum d'entre les endsync est de type id-ref,
la par équivaut à la
id-ref.
Le début souhaité d'un élément est déterminé par la règle 7 dans la section 4.2.4.1.
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é.
body dépend du lecteur. La fin
effective est au moins aussi tardive que la fin souhaitée, mais qu'elle soit encore plus tardive dépend de la mise en œuvre ;
par ainsi :
fill valant "freeze",
la fin effective du sous-élément équivaut à la fin effective de son parent.fill valant "remove",
la fin effective du sous-élément est le minimum d'entre la fin effective du parent et la fin souhaitée du sous-élément ;
fill, la fin effective du sous-élément dépend de la présence ou non
d'une durée ou d'une fin explicites :
fill valant "remove" ;
fill valant "freeze".
seq de la même façon que
pour la fin effective d'un sous-élément d'élément par ;
seq ainsi :
fill valant "freeze",
la fin effective du sous-élément équivaut au début effectif de l'élément suivant ;
fill valant "remove",
la fin effective du sous-élément correspond au minimum d'entre le début effectif de l'élément suivant
et la fin souhaitée du sous-élément fill, la fin effective du sous-élément dépend de la présence ou non
d'une durée ou d'une fin explicites :
fill valant "remove" ;
fill valant "freeze".
switchL'é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
title
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
animation
audio
img
par
ref
seq
switch
text
textstream
video
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
layout peuvent apparaître dans l'élément switch.
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
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.false".
system-captions
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
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
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
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
screen-size-val ::= screen-height"X"screen-widthtrue" 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
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>
...
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 :
repeat :
repeat est N,
toutes les N répétitions de l'élément sont lues ;
repeat vaut "indefinite",
la lecture se termine conformément aux règles définies pour une valeur de répétition "indefinite".
repeat :
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 ;
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".
switch :
les liens vers des éléments formant le contenu d'un élément switch sont proscrits.
aLa 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
href
href est obligatoire avec l'élément a.
show
La valeur par défaut de l'attribut show est "replace".
title
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
audio
img
par
ref
seq
switch
text
textstream
video
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>
...
anchorLa 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 :
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) ;
anchor peut faire d'un sous-ensemble de l'objet multimédia la destination d'un lien
avec l'attribut id ;
anchor permet de découper un objet en sous-ensembles spatiaux avec l'attribut coords ;
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
coords
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.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.coords ont la syntaxe suivante :coords-value ::= left-x "," top-y "," right-x "," bottom-y
D
Figure 4.5 : Sémantique de l'attribut coords
end
id
show
skip-content
title
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>
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; ]>
<!--
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
>
(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 :
skip-content
(défini dans la section 3.3.1) si un lecteur SMIL 1.0 est susceptible de lire leur contenu ;
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 :
new:aest une extension légale. Les éléments
mytags:aet
bont 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>
http://www.w3.org/TR/REC-smil, avec d'autres caractères à suivre, par exemple, un numéro de version.
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é.
videdans SMIL 1.0.
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é.
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