précédent   suivant   sommaire  

13. Le profil de langage SMIL 2.0

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


Table des matières

13.1 Résumé

Le profil SMIL 2.0 décrit les modules SMIL 2.0 inclus dans le langage SMIL 2.0 et détaille comment ces modules sont intégrés. Il contient la gestion de tous les fonctionnalités majeures de SMIL 2.0 incluant l'animation, le contrôle de contenu, la la disposition, les liens, l'objet média, la méta-information, la structure, la temporisation et les effets de transition. Il est conçu pour les clients Web qui gèrent une lecture directe du balisage SMIL 2.0.


13.2 Le profil SMIL 2.0

Cette section est informative.

Le profil SMIL 2.0 est défini comme un langage balisé. La syntaxe de ce langage est formellement décrite dans une définition de type de document (DTD) ou un schéma XML qui est basé sur les modules SMIL comme défini dans « Les modules SMIL 2.0 ».

Les conditions requises pour la conception du profil SMIL 2.0 sont :

  1. S'assurer que le profil est entièrement compatible avec SMIL 1.0 ;
  2. S'assurer que toute la sémantique des modules garde une compatibilité avec la sémantique SMIL (ceci inclut le contenu et la temporisation) ;
  3. Adopter les nouvelles recommandations du W3C quand il le faut, sans conflit avec les autres conditions requises.

13.3 La définition normative du profil de langage SMIL 2.0

Cette section est normative.

13.3.1 La conformité du document

Cette version de SMIL fournit une définition des documents strictement conforme avec SMIL 2.0, qui sont limités aux balises et attributs de l'espace de nommage SMIL 2.0. La section « L'extension du langage SMIL 2.0 » fournit l'information pour l'utilisation de SMIL 2.0 avec d'autres espaces de nommage, par exemple, en incluant de nouvelles balises dans les documents SMIL 2.0.

13.3.2 La conformité du langage SMIL 2.0

Les documents SMIL 2.0 conformes

Un document SMIL 2.0 est un document SMIL 2.0 conforme s'il adhère à la spécification décrite dans ce document (spécification du profil du Langage d'Intégration Multimédias Synchronisés (SMIL) 2.0) incluant le DTD de SMIL 2.0 (voir « La définition du type du document »). Un document SMIL 2.0 conforme doit respecter tous les critères suivants :

  1. L'élément racine du document doit être l'élément smil ;
  2. Le document doit être un document XML bien formé ;
  3. Il doit se conformer aux recommandations du W3C suivantes :
  4. Un document SMIL 2.0 peut contenir la déclaration DOCTYPE suivante :

    Le DOCTYPE du langage SMIL 2.0 est :

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

    Si un document contient cette déclaration, ça doit être un document XML valide. Notez que ceci implique que les extensions à la syntaxe définie dans le DTD ne sont pas autorisées. Si le document n'est pas valide, l'agent utilisateur devrait produire une erreur ;

  5. Un document doit déclarer un espace de nommage par défaut pour ses éléments avec un attribut xmlns sur l'élément racine smil avec son identificateur URI :
    <smil xmlns="http://www.w3.org/2001/SMIL20/Language">
       ...
    </smil>
    

    La déclaration de l'espace de nommage par défaut doit être xmlns="http://www.w3.org/2001/SMIL20/Language" ;

  6. Un document peut afficher une déclaration de DOCTYPE XML (comme défini dans [XML10]) et une ou plusieurs déclarations d'espace de nommage XML (comme défini dans [XML-NS]). Pour être reconnu comme un document SMIL 2.0 par un agent utilisateur SMIL 2.0 conforme, le document doit inclure l'identifiant de l'espace de nommage SMIL 2.0 en tant qu'espace de nommage par défaut sur la balise <smil>. Par exemple :

    Déclarons un document SMIL 2.0 avec des extensions personnalisées conformes à un DTD personnalisé :

    <!DOCTYPE smil SYSTEM "http://www.example.org/myveryownSMIL.dtd">
    <smil xmlns="http://www.w3.org/2001/SMIL20/Language"
    	xmlns:mysmil="http://www.example.org/2001/SMIL30/Language">
    	<mysmil:foo>
    	...
    	</mysmil:foo>
    </smil>
    
  7. Un document qui ne déclare ni un DOCTYPE ni un espace de nommage par défaut sera traité comme un document SMIL 1.0. Des éléments ou des attributs d'extension non définis par l'espace de nommage SMIL 1.0 devraient être déclarés en utilisant le mécanisme d'espace de nommage XML ;
  8. Ceci étant dit, au moment de la rédaction, les DTD n'ont aucun moyen de décrire la recevabilité des extensions à un espace de nommage qualifié, et que ces extensions aux documents SMIL 2.0 conformes doivent être qualifiées par un espace de nommage ; voici l'algorithme à utiliser pour valider des documents comprenant des extensions :

    Si tous les éléments et attributs d'un espace de nommage non-SMIL 2.0 et tous les attributs xmlns qui se rapportent à des éléments d'un espace de nommage non-SMIL 2.0 sont retirés du document donné et si la déclaration <!DOCTYPE ... > approprié qui pointe sur le DTD de SMIL 2.0 est inclus, le résultat est un document XML valide ;

  9. De nombreux attributs SMIL 2.0 sont associés à plusieurs espaces de nommage SMIL 2.0, incluant les espaces de nommage de module, de collection de modules, du langage SMIL 2.0 et l'espace de nommage SMIL 2.0 global. Les attributs dans les espaces de nommage SMIL 2.0 ayant la même partie locale sont considérés comme étant le même attribut jusque dans la syntaxe du document du langage SMIL 2.0. Il est illégal d'utiliser un attribut SMIL 2.0 plusieurs fois pour un élément, même si chaque occurrence est qualifiée par un espace de nommage SMIL 2.0 différent, et les agents utilisateurs SMIL traiteront ceci comme une erreur de syntaxe. Par exemple, le fragment de document suivant est erronné, parce que l'attribut begin apparaît deux fois pour le même élément ref:
    <smil xmlns="http://www.w3.org/2001/SMIL20/Language"
    	xmlns:BasicInlineTiming="http://www.w3.org/2001/SMIL20/BasicInlineTiming">
    ...
    <ref begin="5s" BasicInlineTiming:begin="5s"/>
    ...
    </smil>
    

Le langage SMIL 2.0 ou ces critères de conformité ne fournissent aucune limite de taille sur n'importe quel aspect du contenu SMIL 2.0. Il n'y a aucune limite supérieure sur le nombre d'éléments, la quantité de données textuelles ou le nombre de caractères dans les valeurs d'attribut.

SMIL 2.0 déprécie base comme valeur de propriété pour l'attribut content de l'élément meta de SMIL 1.0 en faveur des mécanismes d'URI plus généraux de XML Base.

Le profil de langage SMIL 2.0 gère la recommandation XML Base [XMLBase]. XML Base est géré sur tous les éléments et affecte l'interprétation des URI, comme spécifié dans les modules individuels définissant les attributs d'URI. En particulier, tout URI de base XML Base applicable doit être appliqué pour l'interprétation de l'attribut href des éléments de lien a, area et anchor, ainsi que de l'attribut src des éléments médias audio, video, img, animation, textstream, text et ref. XML Base doit aussi être appliqué aux attributs longdesc de tous les éléments du langage SMIL 2.0.

Les règles ci-dessus devraient être révisées une fois qu'un schéma XML normatif pour SMIL 2.0 sera disponible. Cette révision prendra en compte la validation du schéma XML.

Les agents utilisateurs conformes au langage SMIL 2.0

Un agent utilisateur SMIL 2.0 est un programme qui peut analyser et traiter un document SMIL 2.0 et rendre le contenu du document sur un média de sortie. Un agent utilisateur SMIL 2.0 conforme doit satisfaire à tous les critères suivants :

  1. Afin d'être cohérent avec la recommandation XML 1.0 [XML10], l'agent utilisateur doit analyser et évaluer un document SMIL 2.0 pour savoir s'il est bien formé. Si l'agent utilisateur prétend être un agent utilisateur validant, il doit également valider les documents contre leur DTD référencé, selon [XML10] ;
  2. Quand l'agent utilisateur prétend gérer la fonctionnalité de SMIL 2.0 au travers des éléments et attributs SMIL 2.0 et de la sémantique associée à ces éléments et attributs, il doit donc le faire de manière cohérente avec cette spécification ;
  3. L'agent utilisateur doit être capable d'analyser et de traiter avec succès n'importe quel document SMIL 2.0 conforme, et de gérer et implémenter correctement la sémantique de toutes les fonctionnalités du profil de langage SMIL 2.0 ;
  4. L'analyseur XML de l'agent utilisateur doit être capable d'analyser et de traiter les constructions XML définies dans [XML10] et [XML-NS] ;
  5. L'espace de nommage par défaut de l'élément racine smil reconnu par l'agent utilisateur se rangera dans l'un de ces trois types :
    1. L'espace de nommage par défaut de l'élément racine smil reconnu dans son intégralité par l'agent utilisateur. L'agent utilisateur devrait traiter le document dans la version identifiée par l'espace de nommage reconnu. Tout élément, attribut ou autre syntaxe non définie par l'espace de nommage par défaut pour l'élément racine smil doivent être entièrement qualifiés par un espace de nommage en utilisant les mécanismes XML standard pour la déclaration des espaces de nommage des éléments et attributs, décrits dans [XML-NS]. Le mécanisme "skip-content" (défini dans le module SkipContent) sera appliqué aux éléments d'extension non-reconnus par l'agent utilisateur. Les éléments non-qualifiés qui ne font pas partie de l'espace de nommage par défaut sont illégaux et doivent résulter en une erreur.

      Exemples :

      1) Un document SMIL 1.0 pur :

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

      2) Un document SMIL 2.0 pur :

      <smil xmlns="http://www.w3.org/2001/SMIL20/Language">
       ...
      </smil>
      

      3) Un document SMIL 1.0 qui a été étendu pour utiliser l'élément excl :

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

      4) Un document SMIL 2.0 qui a été étendu pour utiliser l'élément "foo" d'une version SMIL 3.0 fictive de SMIL :

      <smil xmlns="http://www.w3.org/2001/SMIL20/Language"
            xmlns:smil30="http://www.example.org/2001/SMIL30/" >
        <smil30:foo>
         ...
        </smil30:foo>
      </smil>
      
    2. Aucune déclaration d'espace de nommage par défaut n'est présente pour l'élément racine smil dans le document. Le document sera traité comme un document SMIL 1.0 ;
    3. Une déclaration d'espace de nommage par défaut pour l'élément racine smil non-reconnue. Un agent utilisateur SMIL ne reconnaîtra pas le document comme étant une quelconque version de SMIL et doit produire une erreur.
  6. L'agent utilisateur doit gérer les recommandations du W3C suivantes en ce qui concerne le contenu SMIL 2.0 :
  7. L'agent utilisateur ignore les éléments qualifiés par préfixe d'espace de nommage issus d'espaces de nommage non-reconnus et doit gérer les attributs skip-content. Si aucun attribut skip-content n'est déclaré, la valeur est sensée être "true" ;
  8. L'agent utilisateur ignore les éléments avec des déclarations d'espaces de nommage par défaut inconnus et doit gérer l'attribut skip-content. Si aucun attribut skip-content n'est déclaré, la valeur est sensée être "true" ;
  9. L'agent utilisateur doit émettre une erreur pour une valeur d'attribut qui n'est pas conforme à la syntaxe spécifiée pour cet attribut ;
  10. La détection d'une erreur de syntaxe dans un document du profil de langage SMIL 2.0 doit aboutir à ce que l'agent utilisateur émette une erreur et ne joue pas le document ;
  11. Quand la version dépréciée (comportant un trait d'union) et la nouvelle version (en casse alternée) de la syntaxe d'un attribut sont utilisées dans le même document, les agents utilisateurs SMIL 2.0 devraient seulement prendre en compte la version en casse alternée ;
  12. Les agents utilisateurs du langage SMIL 2.0 doivent jouer les documents SMIL 1.0 comme spécifié dans la recommandation SMIL 1.0 [SMIL10].

L'Initiative d'Accessibilité au Web (WAI) définit « Les directives pour l'accessibilité des agents utilisateurs 1.0 » [UAAG]. Les développeurs sont encouragés à concevoir des agents utilisateurs qui répondent au moins aux exigences du Niveau A de ce document. Si UAAG 1.0 devient une Recommandation du W3C, une future version de SMIL est susceptible d'exiger la conformité avec le Niveau A de UAAG 1.0 comme faisant partie de la conformité d'un agent utilisateur SMIL.

13.3.3 Le profil de langage SMIL 2.0

Le profil de langage SMIL 2.0 gère les fonctionnalités multimédias axées sur un plan de montage chronologique des modules SMIL 2.0. Il utilise seulement les modules de la recommandation SMIL 2.0. Comme le profil de langage inclut les modules obligatoires, c'est un profil de langage conforme au langage hôte SMIL. Ce profil de langage inclut les modules SMIL 2.0 suivants :

Les noms de collection contenus dans le tableau suivant définissent le vocabulaire du profil SMIL 2.0.

Profil SMIL 2.0
Nom de la collection Éléments de la collection
Animation animate, set, animateMotion, animateColor
ContentControl switch, prefetch
Layout region, root-layout, layout, regPoint, topLayout
LinkAnchor a, area (anchor)
MediaContent text, img, audio, video, ref, animation, textstream, brush, param
Metainformation meta,
Structure smil, head, body
Schedule par, seq, excl
Transition transition

Dans les sections suivantes, nous définissons l'ensemble des éléments et attributs utilisés dans chaque module compris dans le profil SMIL 2.0. Le modèle de contenu est décrit pour chaque élément. Le modèle de contenu d'un élément est une description des éléments qui peuvent apparaître en tant qu'enfants directs. Le modèle de contenu spécial "EMPTY" signifie qu'un élément donné ne peut pas avoir d'enfant.

Nom de la collection Attributs de la collection
Core id (ID), class (NMTOKEN), title (CDATA), alt (CDATA), longdesc (CDATA), xml:base vf (CDATA)
I18n xml:lang (NMTOKEN)

Les attributs id, class et title de la collection Core sont définis pour tous les éléments du profil SMIL 2.0. L'attribut id est utilisé dans le profil de langage SMIL 2.0 pour assigner un identifiant XML unique à chaque élément d'un document SMIL. Dans ce document, les attributs et éléments équivalents, mais dépréciés, sont entre parenthèses.

13.3.4 Le module d'animation

Le module d'animation fournit un cadre pour l'intégration d'une animation dans un environnement de temporisation et un mécanisme pour la composition des effets de plusieurs animations. Le module d'animation utilise les modules de temporisation inclus dans ce profil pour modèle sous-jacent du temps. Le profil SMIL 2.0 inclut la fonctionnalité d'animation du module BasicAnimation. Le module BasicAnimation définit la sémantique des éléments animate, set, animateMotion et animateColor.

Dans le profil de langage SMIL 2.0, les éléments d'animation peuvent avoir les attributs et le modèle de contenu suivants :

Module d'animation
Éléments Attributs Modèle de contenu
animate Core, I18n, basicTiming, Test, attributeName, attributeType, targetElement, from, to, by, values, calcMode, accumulate, additive, skip-content, customTest, fill (freeze | remove | hold | auto | default), fillDefault ( remove | freeze | hold | transition | auto | inherit ) EMPTY
set Core, I18n, basicTiming, Test, attributeName, attributeType, targetElement, to, skip-content, customTest, fill (freeze | remove | hold | auto | default), fillDefault ( remove | freeze | hold | transition | auto | inherit ) EMPTY
animateMotion Core, I18n, basicTiming, Test, targetElement, origin, from, to, by, values, calcMode, accumulate, additive, skip-content, customTest, fill (freeze | remove | hold | auto | default), fillDefault ( remove | freeze | hold | transition | auto | inherit ) EMPTY
animateColor Core, I18n, basicTiming, Test, attributeName, attributeType, targetElement, from, to, by, values, calcMode, accumulate, additive, skip-content, customTest, fill (freeze | remove | hold | auto | default), fillDefault ( remove | freeze | hold | transition | auto | inherit ) EMPTY

Ce profil ajoute les éléments animate, set, animateMotion et animateColor au modèle de contenu des éléments par, seq, excl et priorityClass dans « Les modules de temporisation et de synchronisation ». Il ajoute également ces éléments au modèle de contenu de l'élément body du module Structure.

Spécification de l'élément cible de l'animation

Les éléments cibles d'animation gérés dans le profil SMIL 2.0 sont l'élément region, défini dans « Les modules de disposition », l'élément area (anchor), défini dans « Les modules de lien », et les éléments text, img, audio, animation, video, ref, textstream et brush, définis dans « Les modules d'objet média ».

Le profil de langage SMIL 2.0 utilise l'attribut targetElement pour identifier l'élément qui doit être affecté par les éléments d'animation. Comme recommandé dans « Le module BasicAnimation », quand l'attribut targetElement est géré, ce profil exclut les attributs XLink href, type, actuate et show des éléments animate, set, animateMotion et animateColor.

Spécification de l'attribut cible de l'animation

Les attributs cibles des animations sont un sous-ensemble de ceux de region, area (anchor) et des éléments médias. Les attributs que l'on peut animer, des éléments region, area (anchor) et des éléments médias, sont listés dans le tableau ci-dessous.

L'élément area (anchor) a l'attribut coords qui peut être sujet à une animation. L'attribut coords est considéré être du type chaîne dans ce profil. Ceci signifie que seule une animation discrète non-additive est gérée par cet attribut.

Les éléments médias ont les attributs de sous-région suivants, qui peuvent être sujets à une animation : left, right, top, bottom, width, height, z-index et backgroundColor.

Éléments Élément cible Attributs cibles
animate region soundLevel, left, right, top, bottom, width, height, z-index, backgroundColor (background-color), regionName
area (anchor) coords (chaîne)
text, img, audio, animation, video, ref, textstream left, right, top, bottom, width, height, z-index, backgroundColor
brush left, right, top, bottom, width, height, z-index, backgroundColor (background-color), color
set region soundLevel, left, right, top, bottom, width, height, z-index, backgroundColor, regionName
area (anchor) coords (chaîne)
text, img, audio, animation, video, ref, textstream left, right, top, bottom, width, height, z-index, backgroundColor
brush left, right, top, bottom, width, height, z-index, color
animateMotion region Anime les attributs top et left de la région.
text, img, audio, animation, video, ref, textstream Anime les attributs top et left de la sous-région associée à l'élément média.
animateColor region backgroundColor (background-color)
text, img, audio, animation, video, ref, textstream backgroundColor
brush color

Définitions d'intégration

Le profil de langage SMIL 2.0 définit un ensemble de définitions d'intégration comme cela est exigé par les modules d'animation. Ces définitions sont :

13.3.5 Les modules de contrôle de contenu

Les modules de contrôle de contenu fournissent un environnement de développement pour choisir le contenu en fonction d'un ensemble d'attributs de test. Les modules de contrôle de contenu définissent une sémantique pour les éléments switch, prefetch, customAttributes et customTest. Le profil SMIL 2.0 inclut les fonctionnalités de contrôle du contenu des modules BasicContentControl, CustomTestAttributes, PrefetchControl et SkipContentControl.

Dans le profil de langage SMIL 2.0, les éléments de contrôle de contenu peuvent avoir les attributs et le modèle de contenu suivants :

Module de contrôle de contenu
Éléments Attributs Modèle de contenu
switch Core, I18n, Test, customTest (Schedule | priorityClass | MediaContent | ContentControl | LinkAnchor | Animation | layout )*
prefetch Core, I18n, Test, Timing, mediaSize, mediaTime, bandwidth, src, clipBegin (clip-begin), clipEnd (clip-end), skip-content, customTest EMPTY
customAttributes Core, I18n, Test, skip-content customTest+
customTest Core, I18n, skip-content, defaultState (true|false) 'false', override (visible | hidden) 'hidden', uid (URI) EMPTY

Ce profil ajoute l'élément switch au modèle de contenu des éléments par, seq et excl dans « Les modules de temporisation et de synchronisation », au modèle de contenu des éléments body et head dans « Le module de structure », au modèle de contenu de l'élément a dans « Les modules de lien ». Le profil ajoute l'élément customAttributes au modèle de contenu de l'élément head et l'élément customTest au modèle de contenu de l'élément customAttributes.

Les fonctionnalités de contrôle de contenu sont utilisée pour définir l'ensemble d'attributs "Test" :

Nom de la collection Attributs de la collection
Test systemBitrate (system-bitrate), systemCaptions (system-captions), systemLanguage (system-language), system-overdub-or-caption, systemRequired (system-required), systemScreenSize (system-screen-size), systemScreenDepth (system-screen-depth), systemOverdubOrSubtitle, systemAudioDesc, systemOperatingSystem, systemCPU, systemComponent

La collection d'attributs Test est ajoutée à tous les éléments définis dans le profil SMIL 2.0, à l'exception de customTest et customAttributes. Un agent utilisateur SMIL 2.0 doit gérer toutes les valeurs des attributs systemOperatingSystem et systemCPU, listées dans les modules de contrôle de contenu. De plus, l'agent utilisateur devrait accepter les valeurs avec un espace de nommage comme de futures extensions et ne pas déclarer d'erreur de syntaxe. L'agent utilisateur devrait renvoyer une valeur "false" pour les valeurs inconnues des attributs systemOperatingSystem et systemCPU .

13.3.6 Les modules de disposition

Les modules de disposition fournissent un environnement de développement pour la disposition spatiale des composants visuels. Les modules de disposition définissent la sémantique des éléments region, root-layout, topLayout, layout et regPoint. Le profil SMIL 2.0 inclut les fonctionnalités de disposition des modules BasicLayout, AudioLayout, MultiWindowLayout et HierarchicalLayout.

Dans le profil de langage SMIL 2.0, les éléments de disposition peuvent avoir les attributs et le modèle de contenu suivants :

Module de disposition
Éléments Attributs Modèle de contenu
region Core, I18n, Test, backgroundColor (background-color), showBackground (always | whenActive), bottom, fit (fill | hidden | meet | scroll | slice), width, height, left, right, top, soundLevel, z-index, skip-content, customTest, regionName region*
root-layout Core, I18n, Test, backgroundColor (background-color), width, height, skip-content, customTest EMPTY
topLayout Core, I18n, Test, backgroundColor (background-color), width, height, open, close, skip-content, customTest region*
layout Core, I18n, Test, type, customTest (root-layout | region | topLayout | regPoint)*
regPoint Core, I18n, Test, top, bottom, left, right, regAlign ( topLeft|topMid | topRight | midLeft | center | midRight | bottomLeft | bottomMid | bottomRight ), skip-content, customTest EMPTY

(**) L'attribut "background-color" de SMIL 1.0 est déprécié en faveur de "backgroundColor", mais les deux sont gérés.

La collection d'attributs SubregionAttributes est définie comme suit :

Nom de la collection Attributs de la collection
SubregionAttributes top, left, bottom, right, width, height, z-index, fit, backgroundColor (background-color), regPoint, regAlign

Ce profil ajoute l'élément layout au modèle de contenu de l'élément head dans « Le module de structure ». Il ajoute également cet élément au modèle de contenu de l'élément switch dans « Les modules de contrôle de contenu », quand l'élément switch est un enfant de l'élément head.

13.3.7 Les modules de lien

Les modules de lien fournissent un environnement de développement pour mettre en rapport des documents avec un contenu, d'autres documents ou fragments de document. Les modules de lien définissent la sémantique des éléments a et area (anchor). Ils définissent également la sémantique d'un ensemble d'attributs définis pour ces éléments. Le profil SMIL 2.0 inclut les fonctionnalités de lien des modules BasicLinking, LinkingAttributes et ObjectLinking.

Les deux éléments a et area ont un attribut href, dont la valeur doit être un URI valide.

La gestion des URI avec une syntaxe d'identifiant de fragment XPointer n'est pas exigée.

Dans le profil de langage SMIL 2.0, les éléments de lien peuvent avoir les attributs et le modèle de contenu suivants :

Module de lien
Éléments Attributs Modèle de contenu
a Core, I18n, basicTiming, Test, href, sourceLevel, destinationLevel, sourcePlaystate (play | pause | stop) 'pause', destinationPlaystate (play | pause | stop) 'play', show (new | replace | pause) 'replace', accesskey, tabindex, target, external, actuate, customTest (Schedule | MediaContent | ContentControl | Animation )*
area (anchor) Core, I18n, basicTiming, Test, shape, coords, href, nohref, sourceLevel, destinationLevel, sourcePlaystate, destinationPlaystate, show, accesskey, tabindex, target, external, actuate, shape, fragment, skip-content, customTest (animate | set)*

Ce profil ajoute les éléments area et a au modèle de contenu des éléments par, seq et excl dans « Les modules de temporisation et de synchronisation ». Il ajoute également ces éléments au modèle de contenu de l'élément body dans « Le module de structure » errata-E17.

Dans le profil de langage SMIL 2.0, une valeur fixée à onLoad pour l'attribut actuate indique que le lien est automatiquement activé quand l'élément de lien devient actif. Pour les éléments de lien contenant une temporisation SMIL, c'est quand la durée active de l'élément de lien débute.

L'attribut tabindex spécifie la position de l'élément dans l'ordre de tabulation à un instant particulier pour le document courant. L'ordre de tabulation définit l'ordre dans lequel les éléments recevront le focus quand ils sont parcourus par l'utilisateur via un dispositif d'entrée tel qu'un clavier. À tout point particulier dans le temps, seuls les éléments actifs sont pris en compte pour l'ordre de tabulation ; les éléments inactifs sont ignorés.

Quand un élément d'objet média a un attribut tabindex et devient actif, alors son index de tabulation ordonné est inséré dans l'index de tabulation de SMIL à l'emplacement spécifié par la valeur de l'attribut tabindex de l'objet média. Ceci suppose que l'objet média en question possède un index tabulé, tel qu'un document HTML incorporé avec des attributs tabindex. Ceci permet à tous les points de départ des liens dans une présentation SMIL d'avoir une place dans la liste ordonnée pour leur parcours avec la touche tabulation, y compris les liens des présentations incorporées.

Pour une compatibilité avec SMIL 1.0, l'élément anchor est valide mais déprécié en faveur de l'élément area. L'élément anchor reconnaît les mêmes attributs que area, les nouveaux attributs SMIL 2.0 et les attributs SMIL 1.0 qui sont définis dans [SMIL10].

Compatibilité avec SMIL 1.0 : La valeur pause de l'attribut show est déprécié en faveur du paramétrage des attributs show à la valeur new et sourcePlaystate à la valeur pause.

13.3.8 Les modules d'objet média

Les modules d'objet média fournissent un environnement de développement pour déclarer des médias. Les modules d'objet média définissent une sémantique pour les éléments ref, animation, audio, img, video, text, textstream et brush. Le profil SMIL 2.0 inclut les fonctionnalités de média des modules BasicMedia, MediaClipping, MediaClipMarkers, MediaParam, BrushMedia et MediaAccessibility.

Dans le profil de langage SMIL 2.0, les éléments médias peuvent avoir les attributs et le modèle de contenu suivants :

Modules d'objet média
Éléments Attributs Modèle de contenu
text, img, audio, animation, video, ref, textstream Core, I18n, Timing, Test, SubregionAttributes, region, fill (freeze | remove | hold | transition | auto | default), author, copyright, abstract, src, type, erase, mediaRepeat, sensitivity, tabindex, customTest, transIn, transOut, clipBegin (clip-begin), clipEnd (clip-end), readIndex (param | area (anchor) | switch | Animation)*
brush Core, I18n, Timing, Test, SubregionAttributes, abstract, region, fill (freeze | remove | hold | transition | auto | default), author, copyright, color, skip-content, erase, sensitivity, tabindex, customTest, transIn, transOut, readIndex (param | area (anchor) | switch | Animation)*
param Core, I18n, Test, name, value, valuetype (data | ref | object), type, skip-content EMPTY
Ce profil ajoute les éléments ref, animation, audio, img, video, text, textstream et brush au modèle de contenu des éléments par, seq, et excl dans « Les modules de temporisation et de synchronisation ». Il ajoute également ces éléments au modèle de contenu de l'élément body dans « Le module de structure ». Il ajoute également ces éléments au modèle de contenu de l'élément a dans « Les modules de lien ».

SMIL 1.0 autorise l'utilisation de anchor seulement comme élément enfant d'un élément média. En plus de anchor, les éléments suivants sont maintenant autorisés comme enfants d'un objet média SMIL : area, param, animate, set, animateColor, animateMotion (notez que l'élément a n'est pas inclus). L'élément switch est autorisé, avec la restriction que, dans ce cas, le contenu du switch peut seulement provenir d'un même ensemble d'éléments.

Les types MIME généralement reconnus

Cette section est informative.

Les membres du Groupe de Travail SYMM du W3C pensent que les types MIME suivants seront généralement reconnus par les agents utilisateurs SMIL :

Les développeurs des agents utilisateurs SMIL devraient, par conséquent, s'efforcer de fournir une gestion de chacun de ces types. Notez, cependant, que cette section n'est pas normative et que la gestion de ces types MIME n'est pas une condition préalable pour la conformité avec cette spécification.

Les auteurs sont encouragés à coder des objets médias en utilisant un des types MIME généralement reconnus quand c'est possible. Ceci assurera que leurs documents SMIL puissent être joués par un large éventail d'agents utilisateurs SMIL.

Si les auteurs utilisent un type MIME qui ne fait pas partie de la liste des types généralement reconnus, ils devraient fournir une version alternative codée en utilisant un format de base. Ceci peut être réalisé en utilisant un élément switch comme dans l'exemple suivant :

<switch>
  <audio src="objet-format-pas-de-base" />
  <audio src="objet-format-de-base" />
</switch>

Dans cet exemple, un agent utilisateur gérant le format qui n'est pas un format de base jouera le premier objet média audio, et un agent utilisateur ne gérant pas ce premier format jouera le deuxième objet média audio.

Les obligations pour l'intégration d'un objet média

Cette section est normative.

Le module MediaParam définit l'attribut erase, et reporte la définition de la « zone d'affichage » dans le profil de langage. Une « zone d'affichage », pour le langage SMIL 2.0, correspond à l'élément region du module BasicLayout de SMIL. Les effets de erase="never" s'appliquent après la durée active de l'objet média et une éventuelle période de remplissage (définie par la temporisation et la synchronisation de SMIL), et seulement jusqu'à ce qu'un autre média se joue dans la région ciblée par l'objet média, ou jusqu'à ce que le même objet média recommence.

13.3.9 Le module de méta-information

Le module de méta-information fournit un environnement de développement pour décrire un document, soit pour informer l'utilisateur humain, soit pour aider à l'automatisation. Le module de méta-information définit la sémantique des éléments meta et . Le profil SMIL 2.0 inclut la fonctionnalité de méta-information du module Metainformation.

Dans le profil de langage SMIL 2.0, les éléments de méta-information peuvent avoir les attributs et le modèle de contenu suivant :

Module de méta-information
Éléments Attributs Modèle de contenu
meta Core, I18n, skip-content, content (CDATA), name (CDATA) EMPTY
Core, I18n, skip-content EMPTY

Ce profil ajoute l'élément meta au modèle de contenu de l'élément head dans « Le module de structure ».

Le modèle de contenu de l'élément metadata est vide. Les profils qui étendent le profil de langage SMIL 2.0 peuvent définir le schéma RDF (cadre de description de ressource) à utiliser, en étendant le modèle de contenu de l'élément metadata. Le cadre de description de ressource est défini dans la recommandation RDF [RDFsyntax] du W3C.

13.3.10 Le module de structure

Le module de structure fournit un environnement de développement pour structurer un document SMIL. Le module de structure définit une sémantique pour les éléments smil, head, et body. Le profil SMIL 2.0 inclut la fonctionnalité de structure du module Structure.

Dans le profil de langage SMIL 2.0, les éléments de structure peuvent avoir les attributs et le modèle de contenu suivants :

Module de structure
Éléments Attributs Modèle de contenu
smil Core, I18n, Test, xmlns (head?, body?)
head Core, I18n (meta*, (customAttributes,meta*)?,(,meta*)?,((layout|switch),meta*)?, (transition+,meta*)?)
body Core, I18n, Timing, fill, abstract, author, copyright (Schedule | MediaContent | ContentControl | a )*

L'élément body agit comme élément racine pour encadrer l'arbre de temporisation. L'élément body a le comportement d'un élément seq. Une temporisation sur l'élément body est gérée. La base de synchronisation de l'élément body est le temps du début de l'application, qui est dépendant de l'implémentation, tout comme l'est le temps de fin de l'application. Notez que l'effet de l'attribut fill sur l'élément body a lieu entre la fin de la présentation et le temps de fin de l'application, et de ce fait l'effet de fill est dépendant de l'implémentation.

13.3.11 Les modules de temporisation et de synchronisation

Les modules de temporisation et de synchronisation fournissent un environnement de développement pour décrire la structure de temporisation, les propriétés du contrôle de la temporisation et les relations temporelles entre les éléments. Les modules de temporisation et de synchronisation définissent une sémantique pour les éléments par, seq, excl et priorityClass. De plus, ces modules définissent une sémantique pour les attributs incluant begin, dur, end, repeat (déprécié), repeatCount, repeatDur, syncBehavior, syncTolerance, syncBehaviorDefault, syncToleranceDefault, restartDefault, fillDefault, restart, min, max. Le profil SMIL 2.0 inclut les fonctionnalités de temporisation des modules BasicInlineTiming, SyncbaseTiming, EventTiming, MinMaxTiming, RepeatTiming, RepeatValueTiming, WallclockTiming, MultiArcTiming, AccessKeyTiming, BasicTimeContainers, ExclTimeContainers, RestartTiming, SyncBehavior, SyncBehaviorDefault, RestartDefault et FillDefault.

Dans le profil de langage SMIL 2.0, les éléments de temporisation et de synchronisation peuvent avoir les attributs et le modèle de contenu suivants :

Module de temporisation et de synchronisation
Éléments Attributs Modèle de contenu
par Core, I18n, Timing, Test, endsync, customTest, fill (freeze | remove | hold | auto | default), abstract, author, copyright, region (Schedule | MediaContent | ContentControl | a | Animation)*
seq Core, I18n, Timing, Test, customTest, fill (freeze | remove | hold | auto | default), abstract, author, copyright, region (Schedule | MediaContent | ContentControl | a | Animation *
excl Core, I18n, Timing, Test, endsync, skip-content, customTest, fill (freeze | remove | hold | auto | default ), abstract, author, copyright, region ((Schedule | MediaContent | ContentControl | a | Animation)* | priorityClass+)
priorityClass Core, I18n, Test, peers ( stop | pause| defer | never ) 'stop', higher ( stop | pause ) 'pause', lower ( defer | never ) 'defer', skip-content, pauseDisplay, customTest, abstract, author, copyright ((Schedule | MediaContent | ContentControl | a | Animation)*)

Les collections d'attributs Timing et basicTiming sont définies comme suit :

Nom de la collection Attributs de la collection
Timing begin, dur, end, repeat (déprécié), repeatCount, repeatDur, syncBehavior ( canSlip | locked | independent | default), syncTolerance, syncBehaviorDefault ( canSlip | locked | independent | inherit ) 'inherit', syncToleranceDefault, restartDefault (always | whenNotActive | never), fillDefault ( remove | freeze | hold | transition | auto | inherit ), restart (always | whenNotActive | never | default), min, max
basicTiming begin, dur, end, repeat (déprécié), repeatCount, repeatDur, min, max

Ce profil ajoute les éléments par, seq, et excl au modèle de contenu de l'élément body dans « Le module de structure » et ajoute ces éléments au modèle de contenu des éléments a et area dans « Les modules de lien » errata-E18.

Les éléments des modules d'objet média ont les attributs décrivant la temporisation et les propriétés des contenus.

Les symboles d'événement reconnus

Le profil de langage SMIL 2.0 spécifie quels types d'événement peuvent être utilisés en tant que valeur pour les attributs begin et end. Les événements reconnus sont décrits comme symboles d'événement selon la syntaxe introduite dans « Les modules de temporisation et de synchronisation de SMIL ».

Les symboles d'événement gérés dans le profil de langage SMIL 2.0 sont :

Événement exemple
focusInEvent (Dans DOM Niveau 2 : "DOMFocusIn") end="foo.focusInEvent + 3s"
focusOutEvent (Dans DOM Niveau 2 : "DOMFocusOut") begin="foo.focusOutEvent"
activateEvent (Dans DOM Niveau 2 : "DOMActivate") begin="foo.activateEvent"
beginEvent begin="foo.beginEvent + 2s"
endEvent end="foo.endEvent + 2s"
repeatEvent end="foo.repeatEvent"
inBoundsEvent end="foo.inBoundsEvent"
outOfBoundsEvent begin="foo.outOfBoundsEvent + 5s"
topLayoutCloseEvent end="toplayout1.topLayoutCloseEvent"
topLayoutOpenEvent end="toplayout2.topLayoutOpenEvent+5s"

La sémantique des événements

focusInEvent :
Provoqué quand un élément média a le focus du clavier dans son espace de rendu, i.e., quand il devient l'élément média auquel toute information d'évènement du clavier ultérieure est passée. Une fois qu'un élément a le focus du clavier, il continu de l'avoir jusqu'à une action de l'utilisateur ou l'appel d'une méthode DOM soit pour lui retirer le focus, soit pour donner le focus à un autre élément média, ou jusqu'à ce que son espace de rendu soit retiré. Un seul élément média peut avoir le focus à un moment particulier. L'événement focusInEvent n'est délivré qu' aux éléments médias et ne bouillonne pas.
focusOutEvent :
Provoqué quand un élément média perd le focus du clavier dans son espace de rendu, i.e., quand il s'arrête d'être l'élément média auquel toute l'information d'évènement du clavier ultérieure est passée. L'événement focusOutEvent n'est délivré qu'aux éléments média et ne bouillonne pas.
activateEvent :
Provoqué quand l'utilisateur active un élément média par un clic de souris dans son espace de rendu visible ou par une touche du clavier spécifique quand l'élément a le focus du clavier. L'événement activateEvent n'est délivré qu'aux éléments médias et ne bouillonne pas.
beginEvent :
Provoqué quand l'élément commence effectivement à jouer sa durée active. Si un élément ne commence jamais à jouer, cet évènement n'est jamais déclenché. Si un élément a un nombre de répétition défini, l'événement beginEvent est déclenché seulement au début de la première itération. L'événement beginEvent est délivré aux éléments qui gèrent la temporisation, tels que les éléments médias et les conteneurs de temps, et ne bouillonne pas.
endEvent :
Provoqué quand un élément se termine effectivement de jouer ; c'est quand sa durée active est écoulée ou toutes les fois qu'un élément en train d'être joué est arrêté. Dans l'exemple suivant,
<ref id="x" end="30s" src="15s.mpg" />
<ref id="y" end="10s" src="20s.mpg" />
<ref id="z" repeatCount="4" src="5s.mpg" />

l'événement x.endEvent se produit à peu près à 30s quand la durée active est écoulée, L'événement y.endEvent se produit à peu près à 10s quand la lecture du média continu se termine précocement, car la durée active est atteinte, et l'événement z.endEvent se produit à peu près à 20s quand la quatrième et dernière répétition se termine, en atteignant la fin de sa durée active. L'événemnt endEvent est délivré aux éléments qui gèrent la temporisation, tels que les éléments médias et les conteneurs de temps, et ne bouillonne pas.

repeatEvent :
Déclenché quand la deuxième itération et celles suivantes d'un élément répété commencent à jouer. Un élément qui n'a pas d'attribut repeatDur, repeatCount ou repeat, mais qui se joue deux ou plusieurs fois en raison de plusieurs temps de début, ne provoquera pas d'événement repeatEvent quand il redémarrera. En outre, les enfants d'un conteneur de temps qui se répète ne provoqueront pas leurs propres repeatEvent quand leur parent se répétera et qu'ils commenceront à jouer de nouveau. L'événement beginEvent est délivrés aux éléments qui gèrent la temporisation, tels que les éléments médias et les conteneurs de temps, et ne bouillonne pas errata-E16.
inBoundsEvent :
Provoqué quand un des cas suivants survient :

Les limites d'un élément média sont contraintes par les limites de la région dans laquelle il est contenu, i.e., les limites d'un élément média ne s'étendent pas au-delà des limites de sa région. L'événement inBoundsEvent est délivré à un seul élément média et ne bouillonne pas.

Notez que, à la différence du focus clavier qui ne peut être actif que sur un seul objet à la fois, l'état consistant à se tenir dans les limites d'un objet peut être vrai pour plusieurs objets simultanément. Par exemple, si un objet est au-dessus d'un autre et que le curseur est placé sur les deux objets, tous les deux auraient déclenché auparavant un événement inBoundsEvent plutôt qu'un éventuel événement outOfBoundsEvent respectif.

outOfBoundsEvent :
Provoqué quand un des cas suivants survient :

Les limites d'un élément média sont contraintes par les limites de sa région, i.e., les limites d'un élément média ne s'étendent pas au-delà des limites de sa région. L'événement outOfBoundsEvent est délivré seulement aux éléments médias et ne bouillonne pas.

topLayoutCloseEvent
Provoqué quand une fenêtre topLayout se ferme, pour une raison quelconque. Cet évènement est délivré à ce topLayout. Si un topLayout se réouvre quand un média supplémentaire devient actif dans sa ou ses régions, cet évènement sera provoqué à nouveau si et quand le topLayout se fermera à nouveau, et sera provoqué ultérieurement à chaque fois qu'il se fermera. Cet évènement est délivré seulement aux éléments topLayout et ne bouillonne pas.
topLayoutOpenEvent
Provoqué quand une fenêtre topLayout s'ouvre. Cet évènement est délivré à ce topLayout. Si un topLayout se ferme et puis se réouvre quand un média supplémentaire devient actif dans sa ou ses régions, cet évènement sera provoqué à nouveau, et sera provoqué ultérieurement à chaque fois qu'elle se réouvrira. Cet évènement est délivré seulement aux éléments topLayout et ne bouillonne pas.

L'ordre de déclenchement d'événements simultanés :

Il y aura des cas où des événements se produiront simultanément. Pour s'assurer que chaque implémentation du langage SMIL 2.0 les manipule dans le même ordre, l'ordre suivant doit être utilisé pour résoudre les indécisions :

  1. InBoundsEvent
  2. focusInEvent (devrait suivre 1)
  3. OutOfBoundsEvent
  4. activateEvent (devrait suivre 2)
  5. focusOutEvent (devrait suivre 3)
  6. endEvent
  7. beginEvent (doit suivre 6)
  8. repeatEvent
  9. topLayoutCloseEvent
  10. topLayoutOpenEvent (doit suivre 9)

Les événements sont listés par ordre de priorité, par exemple, si l'événement #6 dans la liste se produit en même temps que l'événement #7, alors #6 doit se déclencher avant #7.

Les événements InBoundsEvent, focusInEvent, OutOfBoundsEvent, activateEvent et focusOutEvent ne bouillonnent pas et sont délivrés à l'élément média cible.

Les événements beginEvent, endEvent et repeatEvent ne bouillonnent pas et sont délivrés à l'élément temporisé sur lequel l'événement se produit.

Les événements topLayoutOpenEvent et topLayoutCloseEvent ne bouillonnent pas et sont délivrés à l'élément topLayout sur lequel l'événement se produit.

L'extension du jeu d'événements reconnus

Le profil de langage SMIL 2.0 gère un jeu d'événements extensible. Afin de résoudre les conflits de noms possibles avec les événements qui sont gérés dans ce profil, les noms d'événement qualifiés sont gérés. Des préfixes d'espace de nommage sont utilisés pour qualifier les noms d'événement. En conséquence, le caractère deux-points est réservé dans les attributs end et begin à la qualification des noms d'événement.

Par exemple :

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

Les définitions d'intégration

Le temps de début d'un document SMIL est défini au moment où l'agent utilisateur entame le plan de montage chronologique pour tout le document. Le temps de fin d'un document SMIL est défini comme étant égal au temps de fin de l'élément body.

13.3.12 Les modules des effets de transition

Les modules des effets de transition fournissent un environnement de développement pour décrire des transitions tels que des fondus et des balayages. Les modules des effets de transition définissent une sémantique de l'élément transition. Le profil SMIL 2.0 inclut les fonctionnalités des modules BasicTransitions et TransitionModifiers.

Dans le profil de langage SMIL 2.0, les éléments des effets de transition ont les attributs et le modèle de contenu suivants :

Module des effets de transition
Éléments Attributs Modèle de contenu
transition Core, I18n, Test, dur, type, subtype, startProgress, endProgress, direction, fadeColor, horzRepeat, vertRepeat, borderWidth, borderColor, skip-content, customTest EMPTY

Ce profil ajoute l'élément transition au modèle de contenu de l'élément head dans « Le module de structure ».

Les modules des effets de transition ajoutent les attributs transIn et transOut aux éléments ref, animation, audio, img, video, text, textstream et brush dans « Les modules d'objet média ».

Les modules des effets de transition ajoutent la valeur "transition" à l'attribut fill pour tous les éléments pour lesquels cette valeur de l'attribut fill est gérée.

13.4 L'extension du langage SMIL 2.0

Cette section est normative

Dans l'avenir, le langage SMIL 2.0 pourra être étendu par d'autres recommandations du W3C, ou par des extensions privées. Pour ces extensions, les règles suivantes doivent être respectées :

Les agents utilisateurs SMIL 2.0 conformes sont conçus pour manipuler des documents contenant des extensions qui obéissent à ces deux règles.

13.5 Annexe A : La définition du type du document SMIL 2.0

Cette section est normative.

La définition du type de document du profil de langage SMIL 2.0 est définie comme un ensemble de modules SMIL 2.0. Tous les modules SMIL 2.0 sont intégrés selon les directives de la Note du W3C « Les modules multimédias synchronisés basés sur SMIL 1.0 » [SMIL-MOD] et définis dans les sections respectives de leur module.

13.6 Annexe B : schéma XML de SMIL 2.0

Cette section est informative.

Se référer à la section « Le schéma XML pour le profil de langage SMIL 2.0 ».


précédent   suivant   sommaire