Cette section est informative.
Depuis la publication de SMIL 1.0 [SMIL10], l'intérêt pour l'intégration des concepts SMIL dans HTML, le Langage de Balise HyperTexte [HTML4], et les autres langages XML a augmenté. De plus, le Groupe de Travail HTML au W3C a spécifié XHTML, le Langage de Balise HyperTexte Extensible [XHTML10], en vue d'en créer un sous-ensemble, de l'étendre, et de l'intégrer dans d'autres langages. La stratégie prise en compte pour intégrer des fonctionnalités respectives avec d'autres langages basés sur XML est fondée sur les concepts de modularisation et de profilage [SMIL-MOD], [XMOD].
La modularisation est une approche selon laquelle une fonctionnalité de balisage est spécifiée comme un ensemble de modules qui contiennent des éléments, des attributs et des valeurs d'attributs sémantiquement liés à XML. Le profilage est la création d'un langage basé sur XML par la combinaison de ces modules, dans le but de fournir la fonctionnalité requise par une application particulière.
Le profilage introduit la capacité de façonner un langage basé sur XML pour des besoins spécifiques, i.e. optimiser la présentation et l'interaction selon les capacités du client. Le profilage ajoute aussi la capacité d'intégrer des fonctionnalités à partir d'autres langages balisés, libérant ainsi l'auteur du langage de la spécification de ces fonctionnalités. De surcroît, cela renforce la cohérence du balisage grâce à l'utilisation d'un même modèle pour intégrer une fonction. Des constructions identiques facilitent la conception, avec,du côté de l'agent utilisateur, un potentiel de ré-utilisation du code. Par exemple, une application de planification gérant les fonctionnalités de temporisation et de synchronisation SMIL pourrait être utilisée avec des documents SMIL, des documents XHTML + SMIL et des documents SVG.
La modularisation permet aux concepteurs de langage de spécifier un balisage dédié destiné à une intégration dans d'autres profils de langage existants. Des exemples de spécifications destinées à une telle intégration sont MathML et XForms [MathML], [XFORMS].
La modularisation et le profilage utilisent les propriétés d'extensibilité de XML, ainsi que des technologies apparentées comme les espaces de nommage XML et les schémas XML [XML10], [XML-NS], [XSCHEMA].
Cette partie de la spécification de SMIL 2.0 décrit la charpente sur laquelle la modularisation et le profilage XML reposent, spécifie les modules de SMIL 2.0, leurs identifiants, ainsi que les exigences pour la conformité au sein de cette charpente.
Cette section est informative.
L'approche de la modularisation utilisée dans cette spécification dérive de celle utilisée dans la modularisation de XHTML [XMOD]. La charpente sur laquelle la modularisation et le profilage SMIL reposent est décrite ici simplement.
Un module est une collection d'éléments, d'attributs et de valeurs d'attribut sémantiquement liés à XML, qui représente une unité de fonctionnalité. Les modules sont définis dans des ensembles cohérents. Cette cohérence est exprimée dans le fait que les éléments de ces modules sont associés au même espace de nommage.
Un profil de langage est une combinaison de ces modules. Les modules sont atomiques, i.e. ils ne peuvent être divisés en sous-ensembles quand ils sont inclus dans un profil de langage. En outre, une spécification de module peut inclure un ensemble conditions préalables d'intégration, auxquelles les profils de langage contenant le module doivent satisfaire.
Généralement, il y a un profil de langage principal qui inclut pratiquement tous les modules associés à un même espace de nommage. Par exemple, le profil de langage SMIL 2.0 utilise la plupart des modules SMIL 2.0. D'habitude, le même nom est utilisé pour référencer approximativement les deux - "SMIL 2.0" dans l'exemple. Aussi, le nom « profil » est utilisé pour signifier « profil de langage ».
D'autres profils de langage peuvent être spécifiés comme sous-ensemble du plus important, ou comme incorporant un mélange de modules associés à différents espaces de nommage. SMIL 2.0 Basic est un exemple du premier, XHTML+SMIL du dernier.
Un module spécial dans le profil de langage est celui appelé module Structure, dans lequel est contenu l'élément racine du profil de langage, i.e. <smil> ou <html>. N'importe lequel des profils de langage qui inclut des modules associés avec un seul espace de nommage inclura le module Structure associé à cet espace de nommage.
Les autres modules qui requièrent une attention particulière sont ceux qui caractérisent le noyau des fonctionnalités de l'espace de nommage. Ceci s'exprime par les notions de langage hôte et d'ensemble d'intégration. Les deux se rapportent à un ensemble d'exigences de conformité pour les profils de langage, parmi celles-ci l'obligation d'incorporer au moins le jeu des modules de base. Cet ensemble de conditions peut être différent entre un langage hôte et un ensemble d'intégration. Un langage hôte doit incorporer le module Structure ; un ensemble d'intégration peut ne pas l'inclure. Il peut également exister d'autres différences.
Le but principal de la conformité du profil de langage est d'améliorer l'interopérabilité. De préférence, les modules obligatoires pour la conformité avec le langage hôte sont définis de sorte que n'importe quel document interchangé dans un profil de langage conforme va produire une présentation raisonnable si le moteur de rendu, tout en gérant le jeu des modules obligatoires associés, devait ignorer tous les autres éléments et attributs (inconnus). Ici, l'expression « présentation raisonnable » est à comprendre comme quelque chose d'intelligible, ce qui n'est pas nécessairement un reflet proche des intentions originelles de l'auteur. Pour obtenir ce dernier résultat, une négociation devrait être conduite pour s'entendre sur les profils de langage spécifiques qui devront être utilisés pour les communications entre les documents.
Cette section est normative.
La fonctionnalité de SMIL se partage entre 10 domaines fonctionnels. Dans chacun de ces domaines de fonctionnalité, un autre partitionnement est appliqué en modules. Chacun de ces modules, et seulement ces modules, sont associés à l'espace de nommage SMIL.
Les domaines fonctionnels et leurs modules correspondants sont :
Cette section est informative.
Chacun de ces modules introduit un ensemble d'éléments, de propriétés et d'attributs reliés sémantiquement. Chaque domaine fonctionnel a une section correspondante dans le document de spécification. D'autres détails sur chacun de ces modules sont spécifiés dans ces sections.
Les modules peuvent être indépendants ou complémentaires. Par exemple, le module SyncMaster requiert et se construit sur le module SyncBehavior, mais les modules PrefetchControl et SkipContentControl sont indépendants l'un de l'autre. En plus, certains modules requièrent des modules d'autres domaines fonctionnels.
Les modules spécifient leurs exigences d'intégration. Quand un module requiert un autre module pour certaines fonctionnalités de base comme condition préalable, le profil de langage doit inclure le second module pour pouvoir inclure le premier. Le premier module est défini comme dépendant du second module. Les dépendances peuvent être imbriquées, en cela qu'un module peut être dépendant d'un autre qui est lui-même dépendant.
Le tableau 1 présente les modules SMIL 2.0 ainsi que les modules dont ils dépendent.
| Module | Dépendances |
| AccessKeyTiming | AUCUNE |
| AudioLayout | BasicLayout |
| BasicAnimation | BasicInlineTiming |
| BasicContentControl | AUCUNE |
| BasicInlineTiming | AUCUNE |
| BasicLayout | AUCUNE |
| BasicLinking | AUCUNE |
| BasicMedia | AUCUNE |
| BasicTimeContainers | AUCUNE |
| BasicTransitions | AUCUNE |
| BrushMedia | AUCUNE |
| CustomTestAttributes | BasicContentControl |
| EventTiming | AUCUNE |
| ExclTimeContainers | AUCUNE |
| FillDefault | BasicTimeContainers et/ou ExclTimeContainers et/ou TimeContainerAttributes |
| HierarchicalLayout | BasicLayout |
| InlineTransitions | AUCUNE |
| LinkingAttributes | AUCUNE |
| MediaAccessibility | MediaDescription |
| MediaClipMarkers | MediaClipping |
| MediaClipping | BasicMedia |
| MediaDescription | AUCUNE |
| MediaMarkerTiming | AUCUNE |
| MediaParam | BasicMedia |
| MetaInformation | AUCUNE |
| MinMaxTiming | AUCUNE |
| MultiArcTiming | AccessKeyTiming et/ou BasicInlineTiming et/ou EventTiming et/ou MediaMarkerTiming et/ou RepeatValueTiming et/ou SyncbaseTiming et/ou WallclockTiming |
| MultiWindowLayout | BasicLayout |
| ObjectLinking | BasicLinking |
| PrefetchControl | AUCUNE |
| RepeatTiming | AUCUNE |
| RepeatValueTiming | AUCUNE |
| RestartDefault | RestartTiming |
| RestartTiming | AUCUNE |
| SkipContentControl | AUCUNE |
| SplineAnimation | BasicAnimation |
| Structure | BasicContentControl et BasicInlineTiming et BasicLayout et BasicLinking et BasicMedia et BasicTimeContainers et SkipContentControl et SyncbaseTiming |
| SyncbaseTiming | AUCUNE |
| SyncBehavior | BasicTimeContainers et/ou ExclTimeContainers et/ou TimeContainerAttributes |
| SyncBehaviorDefault | SyncBehavior |
| SyncMaster | SyncBehavior |
| TimeContainerAttributes | AUCUNE |
| TimeManipulations | AUCUNE |
| TransitionModifiers | BasicTransitions et/ou InlineTransitions |
| WallclockTiming | AUCUNE |
Cette section est informative.
SMIL est un langage basé sur XML et il est conforme au Noyau du DOM (XML) [DOM1], [DOM2]. Dans le futur, une recommandation DOM spécifique à SMIL pourra spécifier une gestion de la temporisation et la synchronisation, de l'intégration de médias et d'autres fonctionnalités multimédias synchronisées.
Un profil de langage peut comprendre une gestion du DOM. La granularité de DOM qui est gérée correspond aux modules actuellement gérés dans ce profil de langage. Comme pour tous les autres modules, la gestion qui est requise pour le DOM est une option du profil de langage.
Cette section est informative.
Cette section spécifie les identifiants pour l'espace de nommage de SMIL 2.0 et les modules SMIL 2.0. Chaque profil de langage conforme au langage hôte SMIL est tenu de déclarer explicitement l'URI de l'espace de nommage qui doit être utilisé pour l'identifier. Cet URI d'espace de nommage doit se conformer aux " exigences pour les identifiants des profils de langage conformes au langage hôte SMIL 2.0", définies ci-dessous.
Cette section est normative.
Les documents conçus dans des profils de langage qui incluent
le module Structure de SMIL peuvent être associés avec le type
MIME "application/smil".
Les documents utilisant le type MIME "application/smil"
sont tenus d'être conformes au langage hôte.
Cette section est normative.
L'identifiant d'espace de nommage XML pour le jeu complet des modules SMIL 2.0, et des éléments et attributs qui y sont contenus, est :
http://www.w3.org/2001/SMIL20/
Cette section est normative.
Chaque module dans cette spécification se voit associer un identifiant unique. Ceux-ci sont destinés à identifier chacun des modules de façon unique et cohérente. Ils devraient être utilisés comme valeurs dans un test pour vérifier si une implémentation inclut, ou non, un module spécifique, ou dans d'autres circonstances où il est nécessaire de faire référence à un module SMIL spécifique.
Le tableau 2 résume les identifiants pour les modules SMIL 2.0.
| Nom du module | Identifiant |
| AccessKeyTiming | http://www.w3.org/2001/SMIL20/AccessKeyTiming |
| AudioLayout | http://www.w3.org/2001/SMIL20/AudioLayout |
| BasicAnimation | http://www.w3.org/2001/SMIL20/BasicAnimation |
| BasicContentControl | http://www.w3.org/2001/SMIL20/BasicContentControl |
| BasicInlineTiming | http://www.w3.org/2001/SMIL20/BasicInlineTiming |
| BasicLayout | http://www.w3.org/2001/SMIL20/BasicLayout |
| BasicLinking | http://www.w3.org/2001/SMIL20/BasicLinking |
| BasicMedia | http://www.w3.org/2001/SMIL20/BasicMedia |
| BasicTimeContainers | http://www.w3.org/2001/SMIL20/BasicTimeContainers |
| BasicTransitions | http://www.w3.org/2001/SMIL20/BasicTransitions |
| BrushMedia | http://www.w3.org/2001/SMIL20/BrushMedia |
| CustomTestAttributes | http://www.w3.org/2001/SMIL20/CustomTestAttributes |
| EventTiming | http://www.w3.org/2001/SMIL20/EventTiming |
| ExclTimeContainers | http://www.w3.org/2001/SMIL20/ExclTimeContainers |
| FillDefault | http://www.w3.org/2001/SMIL20/FillDefault |
| HierarchicalLayout | http://www.w3.org/2001/SMIL20/HierarchicalLayout |
| InlineTransitions | http://www.w3.org/2001/SMIL20/InlineTransitions |
| LinkingAttributes | http://www.w3.org/2001/SMIL20/LinkingAttributes |
| MediaAccessibility | http://www.w3.org/2001/SMIL20/MediaAccessibility |
| MediaClipMarkers | http://www.w3.org/2001/SMIL20/MediaClipMarkers |
| MediaClipping | http://www.w3.org/2001/SMIL20/MediaClipping |
| MediaDescription | http://www.w3.org/2001/SMIL20/MediaDescription |
| MediaMarkerTiming | http://www.w3.org/2001/SMIL20/MediaMarkerTiming |
| MediaParam | http://www.w3.org/2001/SMIL20/MediaParam |
| Metainformation | http://www.w3.org/2001/SMIL20/Metainformation |
| MinMaxTiming | http://www.w3.org/2001/SMIL20/MinMaxTiming |
| MultiArcTiming | http://www.w3.org/2001/SMIL20/MultiArcTiming |
| MultiWindowLayout | http://www.w3.org/2001/SMIL20/MultiWindowLayout |
| ObjectLinking | http://www.w3.org/2001/SMIL20/ObjectLinking |
| PrefetchControl | http://www.w3.org/2001/SMIL20/PrefetchControl |
| RepeatTiming | http://www.w3.org/2001/SMIL20/RepeatTiming |
| RepeatValueTiming | http://www.w3.org/2001/SMIL20/RepeatValueTiming |
| RestartDefault | http://www.w3.org/2001/SMIL20/RestartDefault |
| RestartTiming | http://www.w3.org/2001/SMIL20/RestartTiming |
| SkipContentControl | http://www.w3.org/2001/SMIL20/SkipContentControl |
| SplineAnimation | http://www.w3.org/2001/SMIL20/SplineAnimation |
| Structure | http://www.w3.org/2001/SMIL20/Structure |
| SyncbaseTiming | http://www.w3.org/2001/SMIL20/SyncbaseTiming |
| SyncBehavior | http://www.w3.org/2001/SMIL20/SyncBehavior |
| SyncBehaviorDefault | http://www.w3.org/2001/SMIL20/SyncBehaviorDefault |
| SyncMaster | http://www.w3.org/2001/SMIL20/SyncMaster |
| TimeContainerAttributes | http://www.w3.org/2001/SMIL20/TimeContainerAttributes |
| TimeManipulations | http://www.w3.org/2001/SMIL20/TimeManipulations |
| TransitionModifiers | http://www.w3.org/2001/SMIL20/TransitionModifiers |
| WallclockTiming | http://www.w3.org/2001/SMIL20/WallclockTiming |
En plus des identifiants de modules ci-dessus, il peut y avoir des fonctionnalités différentes et des variantes d'un profil de langage à l'autre qui ne s'expriment pas en termes de gestion ou non gestion d'un module particulier. Ces fonctionnalités peuvent être exprimées en utilisant les identifiants suivants :
http://www.w3.org/2001/SMIL20/NestedTimeContainers
http://www.w3.org/2001/SMIL20/DeprecatedFeatures
Les implémentations qui gèrent le module BasicContentControl de SMIL doivent les admettre comme identifiants à utiliser avec le mécanisme d'espace de nommage XML et doivent permettre l'utilisation de l'identifiant d'espace de nommage associé avec l'attribut de test systemRequired. Les profils doivent identifier les attributs pour lesquels une implémentation doit retourner la valeur "true" (ceci est une condition préalable d'intégration). Les implémentations doivent retourner la valeur "false" pour les modules ou les fonctionnalités qui ne sont pas entièrement gérées.
Les modules peuvent aussi être identifiés collectivement. On définit les quatre collections de modules suivantes :
http://www.w3.org/2001/SMIL20/
http://www.w3.org/2001/SMIL20/Language
http://www.w3.org/2001/SMIL20/HostLanguage
http://www.w3.org/2001/SMIL20/IntegrationSet
Cette section est informative.
Dans cette section nous spécifierons les règles de conformité pour le langage hôte SMIL et pour l'ensemble d'intégration SMIL. Les exigences pour la conformité avec le langage hôte et la conformité avec l'ensemble d'intégration sont tout d'abord données. Les exigences sont similaires à celles de la conformité du type de document pour le langage hôte XHTML et de la conformité du type de document pour l'ensemble d'intégration XHTML [XMOD]. Dans la section finale, on donne les exigences pour les identifiants des profils de langage conformes au langage hôte.
Pour l'instant, il existe trois profils de langage utilisant les modules SMIL 2.0. Ce sont le profil de langage SMIL 2.0, le profil de langage SMIL 2.0 Basic et le profil de langage XHTML+SMIL 2.0 [XHTML+SMIL]. Les deux premiers sont conformes au langage hôte SMIL, le troisième est conforme à l'ensemble d'intégration SMIL.
Cette section est normative.
Les deux tableaux suivants listent les noms utilisés pour faire référence commune à certains ensembles des éléments et attributs de SMIL 2.0. Ils sont utilisés dans les définitions des gestions minimales dans les deux sections ci-dessous sur la conformité avec le langage hôte SMIL et sur la conformité avec l'ensemble d'intégration SMIL. Le terme « gestion minimale » est utilisé pour faire référence à l'ensemble minimum d'éléments qu'un élément peut contenir, et à l'ensemble minimum d'attributs qui peut être utilisé sur un élément.
| Nom de l'ensemble des éléments | Éléments |
| TIMING-ELMS | par, seq |
| MEDIA-ELMS | ref, animation, audio, img, video, text, textstream |
| EMPTY | aucun élément n'est requis comme minimum |
| Nom de l'ensemble d'attributs | Attributs |
| TIMING-ATTRS | begin, end, dur, repeatDur, repeatCount, max, min, fill, endsync |
| CONTCTRL-ATTRS | systemBitrate, systemCaptions, systemLanguage, systemRequired, systemScreenSize, systemScreenDepth, systemOverdubOrSubtitle, systemAudioDesc, , systemCPU, systemComponent |
| MEDIA-ATTRS | src, type |
| LINKING-ATTRS | href, sourceLevel, destinationLevel, sourcePlaystate, destinationPlaystate, show, accesskey, tabindex, target, external, actuate, alt |
| COMMON-ATTRS | id, class, xml:lang, title |
Cette section est normative.
Un profil de langage est dit être conforme au langage hôte SMIL 2.0 s'il inclut les modules suivants :
De plus, les exigences suivantes doivent être satisfaites :
| Élément | Gestion minimale | |
| Éléments | Attributs | |
| smil | head, body | COMMON-ATTRS, CONTCTRL-ATTRS, xmlns |
| head | layout, switch | COMMON-ATTRS |
| body | TIMING-ELMS, MEDIA-ELMS, switch, a | COMMON-ATTRS |
| layout | root-layout, region | COMMON-ATTRS, CONTCTRL-ATTRS, type |
| root-layout | EMPTY | COMMON-ATTRS, backgroundColor, height, width, skip-content |
| region | EMPTY | COMMON-ATTRS, backgroundColor, bottom, fit, height, left, right, showBackground, top, width, z-index, skip-content, regionName |
| ref, animation, audio, img, video, text, textstream | area | COMMON-ATTRS, CONTCTRL-ATTRS, TIMING-ATTRS, repeat, MEDIA-ATTRS, region |
| a | MEDIA-ELMS | COMMON-ATTRS, LINKING-ATTRS |
| area | EMPTY | COMMON-ATTRS, LINKING-ATTRS, TIMING-ATTRS, repeat, shape, coords, nohref |
| par, seq | TIMING-ELMS, MEDIA-ELMS, switch, a | COMMON-ATTRS, CONTCTRL-ATTRS, TIMING-ATTRS, repeat |
| switch | TIMING-ELMS, MEDIA-ELMS, a, layout | COMMON-ATTRS, CONTCTRL-ATTRS |
La gestion des éléments et attributs dépréciés est exigée pour la conformité avec le langage hôte SMIL 2.0, pour tous les modules que le langage en question gère. Par exemple, si un langage hôte SMIL 2.0 gère le module MultiArcTiming, il doit gérer la syntaxe dépréciée définie dans le module MultiArcTiming.
Puisque le module Structure SMIL 2.0 peut seulement être utilisé dans un profil conforme au langage hôte SMIL, ceci implique que le module Structure SMIL 2.0 doit au moins être accompagné des neufs autres modules ( cités ci-dessus) requis pour la conformité du langage. Ces modules eux-mêmes peuvent toujours être utilisés dans d'autres profils de langage, non conformes au langage hôteSMIL.
Cette section est normative.
Un profil de langage est dit conforme à l'ensemble d'intégration SMIL 2.0 s'il inclut les modules suivants :
De plus, les exigences suivantes doivent être satisfaites :
| Elément | Support Minimum | |
| Eléments | Attributs | |
| ref, animation, audio, img, video, text, textstream | CONTCTRL-ATTRS, TIMING-ATTRS, MEDIA-ATTRS | |
| par, seq | TIMING-ELMS, MEDIA-ELMS, switch, a | CONTCTRL-ATTRS, TIMING-ATTRS |
| switch | TIMING-ELMS, MEDIA-ELMS | CONTCTRL-ATTRS |
La gestion des éléments et attributs dépréciés n'est pas requise pour la conformité avec l'ensemble d'intégration SMIL 2.0. Cependant, quand ils sont inclus, les exigences ci-dessus s'appliquent également à leurs attributs et à leurs éléments. Aussi, quand ils sont gérés, il est nécessaire que tous les éléments et attributs dépréciés de tous les modules inclus soient gérés dans leur totalité.
Cette section est informative.
Un profil de langage est spécifié au travers de sa DTD ou de son schéma XML. Leurs identifiants peuvent être utilisés pour identifier le profil de langage. SMIL 1.0 spécifiait la déclaration de l'espace de nommage par défaut dans son élément racine, smil, comme identifiant décisif pour distinguer celui-ci des autres profils de langage [SMIL10]. Pour cela, SMIL 1.0 spécifiait
http://www.w3.org/TR/REC-smil
comme identifiant de l'espace de nommage pour SMIL 1.0.
Cette section est normative.
Dans le but d'identifier la version ainsi que le profil de langage utilisés, les documents conformes au langage hôte SMIL doivent satisfaire aux exigences suivantes :
Cette section est normative.
Les erreurs de syntaxe dans un document conforme au langage hôte SMIL sont gérées selon les règles XML établies pour un document XML valide ou bien formé [XML10].
Des erreurs sémantiques peuvent apparaître à différents niveaux. L'une survient quand les valeurs d'attributs déclarées ont des valeurs inconnues. Une autre survient si la présentation mise en oeuvre est (éventuellement) en conflit, comme dans le cas où des objets médias se disputent l'espace d'affichage ou quand ils sont synchronisés de façon ambiguë. Ces derniers cas, à moins que l'erreur ne soit intentionnelle de la part de l'auteur, ne sont pas considérés comme des erreurs et l'agent utilisateur va produire une présentation selon les règles de définition définies dans cette spécification.
Cette section est normative.
Les erreurs dans les valeurs d'attributs peuvent rester indétectables par l'analyseur, parce que le type de la valeur est déclaré comme valeur CDATA, ou parce que la portée de la valeur est sans limites fixes, comme dans le cas des événements par exemple. Cependant, les erreurs dans les valeurs d'attribut peuvent être détectées à l'intérieur d'un profil de langage donné, où le profil de langage définit l'ensemble des valeurs reconnues. Les spécifications des profils de langage sont tenues de spécifier la gestion d'erreur applicable quand une telle erreur de valeur se produit.
Cette section est informative.
Cette section décrit comment les profils de langage peuvent être définis avec les DTD modulaires de SMIL 2.0. Le lecteur est supposé être familier avec les mécanismes définis dans « La modularisation XHTML » [XMOD], en particulier l'Annexe D [XMOD-APPD] et l'Annexe E [XMOD-APPE]. En général, les DTD modulaires de SMIL utilisent le même mécanisme qu'utilisent les DTD modulaires de XHTML. Les exceptions à cela sont :
Ci-dessous, nous donnons une courte description des fichiers qui sont utilisés pour définir les DTD modulaires de SMIL 2.0. Voir le tableau et la fin de la section pour avoir une liste complète des fichiers impliqués.
Suivant les mêmes mécanismes que les DTD modulaires de XHTML, la spécification de SMIL 2.0 place les déclarations des éléments XML (i.e., <!ELEMENT...>) et les déclarations des listes d'attributs (i.e., <!ATTLIST...>) de tous les éléments de SMIL 2.0 dans des fichiers séparés, les fichiers de module SMIL. Un fichier de module SMIL est fourni pour tous les domaines fonctionnels de la spécification de SMIL 2.0 (on a donc un fichier de module SMIL pour l'animation, la la disposition, la temporisation, etc.).
Les fichiers de module SMIL sont utilisés dans les définitions normatives des spécifications des profils de langage de SMIL 2.0. Le traitement des mêmes fichiers de module pour définir d'autres profils SMIL est recommandé, mais pas obligatoire. Les conditions préalables que les profils de langage SMIL doivent suivre sont exposés dans la spécification de SMIL 2.0, mais pas dans le code des DTD.
Pour faire en sorte que les fichiers de modules de SMIL soient indépendants les uns des autres, et indépendants des profils de langage, les déclarations d'attributs et d'éléments font une utilisation massive des entités XML. Cela donne des profils avec les crochets nécessaires pour définir les modèles de contenu réels et les attributs des éléments SMIL.
Le profil de langage SMIL 2.0 donne des exemples qui définissent comment les fichiers de modules SMIL peuvent être utilisés. La plupart des fichiers de DTD sont réutilisés au travers des différents profils. Ce qui est réutilisé, ce sont les fichiers de module SMIL, les fichiers qui définissent le type des données et les attributs communs, le fichier "qname" qui prend soin d'ajouter des préfixes d'espaces de nommage, si nécessaire, et le fichier cadre, qui prend soin d'ajouter les fichiers dans l'ordre approprié.
Les fichiers qui sont différents pour chacun des profils sont les fichiers de gestion, et les fichiers de modèle de document. Cela s'applique aussi, en général, aux nouveaux profils : pour définir un nouveau profil de langage, on doit écrire le (ou les) module(s) d'extension, le fichier pilote qui définit quels sont les modules utilisés, et un fichier de modèle de document qui définit le modèle de document étendu. Le fichier pilote et celui du modèle de document sont décrits ci-dessous plus en détail.
Le fichier pilote.
C'est le fichier qui doit être référencé par une déclaration de DOCTYPE d'un document. Sa principale fonction est de définir quel fichier de modèle de document et quels fichiers de module SMIL le profil utilise. Il peut aussi définir un espace de nommage optionnel à utiliser dans tous les préfixes d'espaces de nommage. Par exemple, pour préfixer tous les noms d'éléments avec "foobar", on peut rajouter en début de profil ceci :
<!ENTITY % SMIL.prefixed "INCLUDE" >
<!ENTITY % SMIL.prefix "foobar" >
Les éléments définis dans leurs modules comme, par exemple, <video> seront analysés comme <foobar:video>. Cela s'applique aussi pour les attributs SMIL qui apparaissent dans d'autres éléments, donc, par exemple, "begin" devient "foobar:begin". Par défaut, le préfixe de qname est vide, c'est-à-dire, il est effectivement désactivé par défaut.
Après ces définitions, le fichier pilote inclut le fichier cadre (qui va inclure plus tard le fichier de type de données, celui des attributs communs, celui de qname et celui de modèle de document), après quoi les fichiers de modules SMIL sont inclus et utilisés par ce profil.
Le fichier de modèle de document.
Le fichier de modèle de document contient les entités XML qui sont utilisées par les fichiers de module SMIL pour définir les modèles de contenu et les listes d'attributs des éléments dans ce profil.
Les modèles de contenu diffèrent généralement d'un profil à l'autre, ou alors ils contiennent des éléments provenant d'autres modules. Pour éviter ces dépendances dans les fichiers de modules SMIL, les modèles de contenu doivent être définis dans un fichier de modèle de document. Le modèle de contenu par défaut (factice), comme défini dans les fichiers de module SMIL, est "EMPTY" pour tous les autres éléments de SMIL 2.0.
Pour les mêmes raisons, les fichiers de module SMIL définissent seulement une liste d'attributs par défaut pour leurs éléments. Cette liste par défaut contient seulement les attributs principaux de SMIL 2.0 ainsi que les attributs qui sont définis dans le même fichier de module SMIL. Tous les autres attributs doivent être ajoutés à cette liste par défaut en définissant les entités XML appropriées. Par exemple, le fichier de module des objets médias n'ajoute que le noyau et les attributs de média concernés sur les objets médias ; les autres attributs, comme ceux de temporisation, sont ajoutés à cette liste par le fichier du modèle de document.
| Les fichiers pilotes pour les profils prédéfinis | |
| -//W3C//DTD SMIL 2.0//EN | http://www.w3.org/2001/SMIL20/SMIL20.dtd |
| Les fichiers de modèles de document pour les profils prédéfinis | |
| -//W3C//ENTITIES SMIL 2.0 Document Model 1.0//EN | http://www.w3.org/2001/SMIL20/smil-model-1.mod |
| Les fichiers de module SMIL 2.0 | |
| -//W3C//ELEMENTS SMIL 2.0 Animation//EN | http://www.w3.org/2001/SMIL20/SMIL-anim.mod |
| -//W3C//ELEMENTS SMIL 2.0 Content Control//EN | http://www.w3.org/2001/SMIL20/SMIL-control.mod |
| -//W3C//ELEMENTS SMIL 2.0 Layout//EN | http://www.w3.org/2001/SMIL20/SMIL-layout.mod |
| -//W3C//ELEMENTS SMIL 2.0 Linking//EN | http://www.w3.org/2001/SMIL20/SMIL-link.mod |
| -//W3C//ELEMENTS SMIL 2.0 Media Objects//EN | http://www.w3.org/2001/SMIL20/SMIL-media.mod |
| -//W3C//ELEMENTS SMIL 2.0 Document Metainformation//EN | http://www.w3.org/2001/SMIL20/SMIL-metainformation.mod |
| -//W3C//ELEMENTS SMIL 2.0 Document Structure//EN | http://www.w3.org/2001/SMIL20/SMIL-struct.mod |
| -//W3C//ELEMENTS SMIL 2.0 Timing//EN | http://www.w3.org/2001/SMIL20/SMIL-timing.mod |
| -//W3C//ELEMENTS SMIL 2.0 Transition//EN | http://www.w3.org/2001/SMIL20/SMIL-transition.mod |
| Autres utilitaires : les fichiers de type de données, d'attributs communs, de qname et cadre | |
| -//W3C//ENTITIES SMIL 2.0 Datatypes 1.0//EN | http://www.w3.org/2001/SMIL20/smil-datatypes-1.mod |
| -//W3C//ENTITIES SMIL 2.0 Common Attributes 1.0//EN | http://www.w3.org/2001/SMIL20/smil-attribs-1.mod |
| -//W3C//ENTITIES SMIL 2.0 Qualified Names 1.0//EN | http://www.w3.org/2001/SMIL20/smil-qname-1.mod |
| -//W3C//ENTITIES SMIL 2.0 Modular Framework 1.0//EN | http://www.w3.org/2001/SMIL20/smil-framework-1.mod |