Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

I possibili errori presenti in questo documento, dovuti alla traduzione, sono di responsabilit� del traduttore e non sono in alcun modo imputabili al W3C. Per qualsiasi commento riguardo la traduzione rivolgersi a patrizia.andronico@iat.cnr.it.

Nella traduzione italiana di queste specifiche ci potrebbero essere degli errori. L'unica versione ufficiale di questo documento � la versione originale in inglese: http://www.w3.org/TR/REC-smil


 

W3C REC-smil-19980615

Synchronized Multimedia Integration Language (SMIL) 1.0:
Specifiche

W3C Recommendation 15-giugno-1998
Questa versione:
http://www.w3.org/TR/1998/REC-smil-19980615
Ultima versione:
http://www.w3.org/TR/REC-smil
Versione precedente:
http://www.w3.org/TR/1998/PR-smil-19980409
Copyright © 1998 W3C (MIT, INRIA, Keio), Tutti i diritti riservati. A questo documento vengono applicate tutte le regole del W3C riguardanti la responsabilità, il marchio, l'uso del documento  e la licenza del software. Le vostre interazioni con questo sito sono conformi con le nostre dichiarazioni di privacy pubbliche e per i Membri.

Circa questo documento

Questo documento è stato preparato dal Synchronized Multimedia Working Group (WG) del World Wide Web Consortium. Il gruppo WG era composto dalle seguenti persone: Riconoscimenti: Oltre ai membri del Working Group, anche le seguenti persone hanno contributo allo sforzo per la creazione di 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) and Koga Youichirou (W3C).

Editore: Philipp Hoschka, W3C (hoschka@w3.org)

Riassunto

Questo documento specifica la versione 1.0 del Synchronized Multimedia Integration Language (SMIL 1.0, pronuncia "smail"). SMIL permette l'integrazione di un insieme di oggetti multimediali indipendenti in una presentazione multimediale sincronizzata. Usando SMIL un autore può:
  1. descrivere il comportamento temporale di una presentazione
  2. descrivere il layoutdi una presentazione sullo schermo
  3. associare gli hyperlink ad oggetti multimediali
Questa presentazione è strutturata come segue: la Sezione 1 presenta l'approccio alle specifiche. La Sezione 2 definisce l'elemento "smil". La Sezione 3 definisce gli elementi che possono essere contenuti nella intestazione (head part) di un documento SMIL. La Sezione 4 definisce gli elementi che possono essere contenuti all'interno del corpo (body part) di un documento SMIL. In particolare questa Sezione definisce il modello temporale usato in SMIL. La Sezione 5 descrive la DTD di SMIL.

Stato di questo documento

Questo documento è stato revisionato dai membri del W3C e da altre parti interessate ed è stato approvato dal Direttore  come una Raccomandazione del W3C. E' un documento stabile e può essere usato come materiale di riferimento o citato come normativa di riferimento da un altro documento. Il ruolo del W3C nel fare la Raccomandazione è quello di attirare l'attenzione sulle specifiche e di promuovere la loro diffusione. Questo accresce la funzionalità e l'interoperabilità del Web.

I commenti su queste Raccomandazioni possono essere inviati alla lista di discussione pubblica listwww-smil@w3.org.

Lingue disponibili

La versione inglese di queste specifiche è l'unica versione a norma. Comunque, per le traduzioni in altre lingue, vedere alla URL http://www.w3.org/AudioVideo/SMIL/translations.

Errata

La lista degli errori noti in questa specifica è disponibile all'indirizzo http://www.w3.org/AudioVideo/SMIL/errata.

Tabella dei contenuti

1 Approccio alla specifica

I documenti SMIL sono documenti scritti in XML 1.0 [XML10]. Si presuppone che il lettore abbia familiarità con concetti e termini definiti in XML 1.0.

Queste specifiche non dipendono da particolari caratteristiche definite nelle URL che potenzialmente non possono essere espresse tramite URN. Quindi in questa specifica viene usato il termine più generico di URI [URI].

La sintassi dei documenti SMIL viene definita dalla DTD nella Sezione 5.2. La sintassi del valore di un attributo che non può essere definita usando la notazione DTD viene definita insieme al primo elemento usando un attributo che può contenere il valore dell'attributo stesso. La sintassi di tali valori viene definita usando la Extended Backus-Naur Form (EBNF) definita nella specifica di XML 1.0.

La definizione di un elemento è strutturata come segue: primo, tutti gli attributi di un elemento sono definiti in ordine alfabetico. Un attributo viene definito nel seguente modo: se l'attributo viene usato da un elemento per la prima volta nella specifica, viene definita la semantica dell'attributo. Se l'attributo è stato già usato da un altro elemento, la specifica si riferisce alla definizione dell'attributo nel primo elemento che lo ha usato. La definizione degli attributi degli elementi è seguita dalla definizione di ogni valore dell'attributo la cui sintassi non può essere definita usando la notazione DTD. La sezione finale nella definizione di un elemento specifica il contenuto dell'elemento.

2 L'elemento smil

Attributi dell'elemento

L'elemento "smil" può avere il seguente attributo:

id
Questo attributo identifica univocamente un elemento all'interno del documento. Il suo valore è un identificativo XML.
Contenuto dell'elemento

L'elemento "smil" può contenere i seguenti figli:

body
Definito nella Sezione 4.1
head
Definito nella Sezione 3.1

3 L'intestazione del documento (head)

3.1 L'elemento head

L'elemento "head" contiene informazioni che non sono legate all'andamento temporale della presentazione.

Attributi dell'elemento

L'elemento "head" può avere i seguenti attributi:

id
Definito nella Sezione 2
Contenuto dell'elemento

L'elemento "head" può contenere i seguenti figli:

layout
Definito nella Sezione 3.2
meta
Definito nella Sezione 3.4
switch
Definito nella Sezione 4.3
L'elemento "head" può contenere un numero qualsiasi di elementi "meta" e sia l'elemento "layout" che l'elemento "switch".

3.2 L'elemento layout

L'elemento "layout" determina come sono posizionati gli elementi del corpo (body) del documento su una superficie astratta di rendering (sia visuale che acustica).

Se il documento non contiene un elemento layout, la posizione degli elementi del body è dipendente dall'implementazione.

Un documento SMIL può contenere multipli layout alternativi includendo varii elementi di layout all'interno di un elemento "switch" (definito nella Sezione 4.3). Questo può essere usato per descrivere, per esempio, il layout del documento usando differenti linguaggi di layout.

L'esempio seguente mostra come i CSS2 possono essere usati in alternativa al linguaggio di layout di base di SMIL (definito nella Sezione 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>
(nota che in questo esempio entrambe le alternative di layout risultano nello stesso layout)

Attributi dell'elemento

id
Definito nella Sezione 2
type
Questo attributo specifica quale linguaggio di layout è usato nell'elemento layout. Se il player non comprende questo linguaggio allora deve saltare tutto il contenuto fino al successivo tag "</layout>" . Il valore di default dell'attributo type è "text/smil-basic-layout".
Contenuto dell'elemento

Se l'attributo type dell'elemento layout ha il valore "text/smil-basic-layout", allora può contenere i seguenti elementi:

region
Definito nella Sezione 3.3.1
root-layout
Definito nella Sezione 3.3.2
Se l'attributo type dell'elemento "layout" ha un altro valore, l'elemento contiene dati di carattere (character data).

3.3 Il linguaggio base di layout di SMIL

Questa sezione definisce un linguaggio base di layout per SMIL. Il layout base di SMIL è in accordo con il modello di resa visiva definito nei CSS2, esso riutilizza le proprietà di formattazione definite dalle specifiche dei CSS2, e introduce in modo nuovo l'attributo "fit" [CSS2]. Si presume che il lettore abbia familiarità con i concetti e i termini definiti nei CSS2.

Il layout base di SMIL controlla solo il layout degli elementi degli oggetti multimediali (definiti nella Sezione 4.2.3). E' illegale usare il layout base di SMIL per altri elementi di SMIL.

L'identificativo type per il layout base di SMIL è "text/smil-basic-layout".

Valori fissi per le proprietà

Il seguente foglio di stile definisce i valori "display" e "position" delle proprietà dei CSS2 che sono validi nel layout base di SMIL. Questi valori di proprietà sono fissati:

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}
Notare che come risultato di queste definizioni, tutti gli elementi con posizionamento assoluto (animation, img, ref, text, textstream e video) sono contenuti all'interno di un singolo blocco definito dal contenuto dell'elemento radice (smil).

Valori di default

Il layout di base di SMIL definisce i valori di default per tutti gli attributi relativi al layout. Questi sono consistenti con i valori iniziali delle proprietà corrispondenti nei CSS2.

Se un autore vuole selezionare i valori di default per tutti gli elementi degli oggetti multimediali del documento, il documento dovrà contenere un elemento di layout vuoto con attributo type "text/smil-basic-layout" come:

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

3.3.1 L'elemento region

L'elemento region controlla la posizione, la dimensione e la misura di scala degli elementi oggetto multimediali.

Nel seguente frammento di esempio la posizione di un elemento di testo è posta ad una distanza di 5 pixel dal bordo superiore della finestra di rendering:

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

L'elemento "region" può avere i seguenti attributi:

background-color
L'uso e la definizione di questo attributo sono identici alla proprietà "background-color" nelle specifiche dei CSS2, ad eccezione del fatto che il layout base di SMIL non richiede un supporto per "system colors".

Se l'attributo del colore di background è assente, il background è trasparente.
fit
Questo attributo specifica il comportamento se l'altezza e la larghezza intrinseca dell'oggetto visivo multimediale differiscono dai valori specificati dagli attributi di altezza e di larghezza nell'elemento "region". Questo attributo non ha una corrispondenza 1-1 nelle proprietà dei CSS2, ma può essere simulato con queste.

Questo attributo può avere i seguenti valori:
fill
Regola indipendentemente l'altezza e la larghezza dell'oggetto in modo che il contenuto tocchi appena tutti gli angoli della scatola.
hidden
  • Se l'altezza intrinseca (larghezza) dell'elemento oggetto multimediale è minore dell'altezza (larghezza) definita nell'elemento "region", l'oggetto verrà visualizzato a partire dall'angolo in alto (a sinistra) e la rimanente altezza (larghezza) sarà riempita con il colore di background.
  • Se l'altezza intrinseca (larghezza) dell'elemento oggetto multimediale è maggiore dell'altezza (larghezza) definita nell'elemento "region", l'oggetto verrà visualizzato a partire dall'angolo in alto (a sinistra) fino a raggiungere l'altezza (o larghezza) definita nell'elemento "region", e verrà tagliata la parte inferiore (e a destra) dell'altezza (larghezza).
meet
Regola l'oggetto visivo multimediale conservando le sue proporzioni finchè l'altezza e la larghezza sono uguali ai valori specificati dagli attributi di altezza e larghezza, il contenuto non viene tagliato. L'angolo superiore sinistro dell'oggetto viene posizionato alle coordinate superiori sinistre della scatola, e uno spazio bianco a sinistra o in basso viene riempito con il colore di background.
scroll
Quando i contenuti visualizzati dall'elemento superano i propri confini dovrebbe essere posto un meccanismo di scrolling.
slice
Regola l'oggetto visivo multimediale conservando le sue proporzioni in modo che la sua altezza o larghezza sono uguali al valore specificato dagli attributi di altezza e larghezza, mentre parte del contenuto potrebbe venir tagliato. A seconda dell'esatta situazione, viene visualizzata una parte orizzontale o una verticale dell'oggetto visivo multimediale. La larghezza eccedente viene tagliata dalla destra dell'oggetto multimediale. L'altezza eccedente viene tagliata dalla parte inferiore dell'oggetto multimediale.
Il valore di default di "fill" è "hidden".
height
L'uso e la definizione di questo attributo sono identici alla proprietà "height" delle specifiche dei CSS2. I valori dell'attributo possono essere valori di "percentage", e una variazione dei valori di "length" definiti nei CSS2. Per valori di "length", il layout base di SMIL supporta solo l'unità di pixel come definito nei CSS2. Questo permette di non scrivere l'identificativo di unità "px" nei valori in pixel (l'identificativo "px" è invece richiesto nei CSS2).
id
Definito nella Sezione 2

Un elemento region è applicato ad un elemento posizionabile settando l'attributo region dell'elemento posizionabile al valore di id della region.
Per gli elementi "region" è richiesto l'attributo "id".
left
L'uso e la definizione di questo attributo sono identici alla proprietà "left" delle specifiche dei CSS2. I valori dell'attributo hanno le stesse restrizioni dei valori dell'attributo "height".

Il valore di default è zero.
skip-content
Questo attributo è introdotto per estensioni future di SMIL (vedere Appendice). Viene interpretato nei due casi seguenti:
Se il valore dell'attributo "skip-conten" è "true", e viene applicato uno dei casi sopra descritti, il contenuto dell'elemento viene ignorato. Se il valore è "false", il contenuto dell'elemento viene processato.
Il valore di default per l'attributo "skip-content" è "true".
title
Questo attributo offre ulteriori informazioni circa l'elemento per il quale viene settato.Il valore dell'attributo title può essere visualizzato da uno user agent in diversi modi. Per esempio i browser grafici normalmente visualizzano il titolo come un "tool tip" (un breve messaggio che appare quando la periferica di puntamento si ferma sopra un oggetto).
Si raccomanda caldamente che tutti gli elementi "region" abbiano un attributo "title" con una descrizione significativa. I programmi autore dovrebbero assicurare che nessun elemento possa essere introdotto in un documento SMIL senza questo attributo.
top
L'uso e la definizione di questo attributo sono identiche alla proprietà "top" nelle specifiche CSS2. I valori dell'attributo hanno le stesse restrizioni dei valori dell'attributo "height".

Il valore di default è zero.
width
L'uso e la definizione di questo attributo sono identiche alla proprietà "height" delle specifiche CSS2. I valori dell'attributo hanno le stesse restrizioni dei valori dell'attributo "height".
z-index
L'uso e la definizione di questo attributo sono identiche alla proprietà "z-index" delle specifiche CSS2, con la seguente eccezione:

 

Contenuto dell'elemento

"region" è un elemento vuoto

3.3.2 L'elemento root-layout

L'elemento "root-layout" determina il valore delle proprietà di layout dell'elemento root, che a sua volta determina la dimensione dell'area di visualizzazione, per esempio la finestra in cui viene visualizzata la presentazione di SMIL.

Se il documento contiene più di un elemento "root-layout" c'è un errore, e il documento non dovrebbe essere visualizzato.

Attributi dell'elemento

L'elemento "root-layout" può avere i seguenti attributi:

background-color
Definito nella Sezione 3.3.1
height
Definito nella Sezione 3.3.1

Definisce l'altezza dell'elemento root. Sono permessi solo i valori della lunghezza.
id
Definito nella Sezione 2
skip-content
Definito nella Sezione 3.3.1
title
Definito nella Sezione 3.3.1
width
Definito nella Sezione 3.3.1
Definisce la larghezza dell'elemento root. Sono permessi solo i valori della lunghezza.
Contenuto dell'elemento

"root-layout" è un elemento vuoto.

3.4 L'elemento meta

L'elemento "meta" può essere usato per definire le proprietà di un documento (per es. autore, data di scadenza, una lista di parole chiavi, ecc.) e assegna i valori a queste proprietà. Ogni elemento "meta" specifica una singola coppia proprietà/valore.

Attributi dell'elemento

L'attributo "meta" può avere i seguenti attributi:

content
Questo attributo specifica il valore della proprietà definita nell'elemento meta.

Per ogni elemento "meta" è richiesto l'attributo "content".
id
Definito nella Sezione 2
name
Questo attributo identifica la proprietà definita nell'elemento meta.
Per ogni attributo "meta" è richiesto l'attributo "name".
skip-content
Definito nella Sezione 3.3.1
La lista delle proprietà è una lista aperta in qualsiasi direzione. Questa specifica definisce le seguenti proprietà:
base
Il valore di questa proprietà definisce la URI di base per tutte le URI relative usate nel documento.
pics-label or PICS-Label
Il valore di questa proprietà specifica una etichetta di qualità per il documento, come definito da [PICS].
title
Il valore di questa proprietà contiene il titolo della presentazione.
Contenuto dell'elemento

"meta" è un elemento vuoto.

4 Il Corpo del documento (Body)

4.1 L'elemento body

L'elemento "body" contiene informazioni relative al comportamento temporale e dei link del documento. Implicitamente definisce un elemento "seq" (definito nella Sezione 4.2.2, vedere Sezione 4.2.4 per una definizione della semantica temporale dell'elemento "body").

Attributi dell'elemento

L'elemento "body" può avere il seguente attributo:

id
Definito nella Sezione 2
Contenuto dell'elemento

L'elemento "body" può contenere i seguenti elementi figli:

a
Definito nella Sezione 4.5.1
animation
Definito nella Sezione 4.2.3
audio
Definito nella Sezione 4.2.3
img
Definito nella Sezione 4.2.3
par
Definito nella Sezione 4.2.1
ref
Definito nella Sezione 4.2.3
seq
Definito nella Sezione 4.2.2
switch
Definito nella Sezione 4.3
text
Definito nella Sezione 4.2.3
textstream
Definito nella Sezione 4.2.3
video
Definito nella Sezione 4.2.3

4.2 Elementi di sincronizzazione

4.2.1 L'elemento par

Gli elementi figli di un elemento par possono sovrapporsi nel tempo. L'ordine testuale dell'apparizione dei figli in par non è significativa per il tempo della presentazione.

Attributi dell'elemento

L'elento "par" può avere i seguenti attributi:

abstract
Una breve descrizione del contenuto presente nell'elemento.
author
Il nome dell'autore del contenuto presente nell'elemento.
begin
Questo attributo specifica il tempo dell'inizio esplicito di un elemento. Vedere Sezione 4.2.4 per una definizione della sua semantica.
Questo attributo può contenere i seguenti due tipi di valori:
delay-value
Un delay-value è un valore di tempo che misura la durata della presentazione. La durata della presentazione procede alla velocità della presentazione stessa. Essa si comporta come un codice di tempo visualizzato in un contatore di un mangianastri. Può essere fermato, diminuito o aumentato sia dalle azioni dell'utente sia dallo stesso player.
Le semantiche di un valore di ritardo dipendono dal primo elemento padre che è l'elemento di sincronizzazione (per es. gli antenati che sono elementi "a" o "switch" vengono ignorati):
  • Se questo antenato è un elemento "par", il valore definisce un ritardo dall' inizio effettivo di quell'elemento (vedere Figura 4.1).
  • Se questo antenato è un elemento "seq" (Definito nella Sezione 4.2.2), il valore definisce un ritardo dalla fine effettiva del primo predecessore lessicale che è un elemento di sincronizzazione (vedere Figura 4.2).
event-value
L'elemento inizia quando accade un certo evento (vedere Figura 4.3). Il suo valore è un elemento-evento (vedere Definizione sotto).

L'elemento che genera un evento deve essere "in scope". L'insieme degli elementi S "in scope" è determinato come segue:
  1. Prende tutti gli elementi figli dal primo elemento padre che è l'elemento di sincronizzazione e li aggiunge a S
  2. Rimuovi tutti gli elementi "a" e "switch" da S. Aggiunge i figli di tutti gli elementi "a" a S, a meno che essi non siano elementi "switch".
L'insieme S ottenuto è l'insieme degli elementi "in scope".

<par>
  <audio id="a" begin="6s" src="audio" />
</par>
delay in 'par' elementD


Figura 4.1: Uso del valore di delay all'interno di un elemento "par"
<seq>
  <audio src="audio1" />
  <audio begin="5s" src="audio2" />
</seq>
delay in 'seq' element
Figura 4.2: Uso del valore di delay all'interno di un elemento "seq"
<par>
  <audio id="a" begin="6s" ... />
  <img  begin="id(a)(4s)" ... />
</par>
element with event valueD


Figura 4.3: Attributo di sincronizzazione con il valore di evento dell'elemento
copyright
L'annotazione di copyright del contenuto presente nell'elemento.
dur
Questo attributo specifica la durata esplicita di un elemento. Vedere Sezione 4.2.4 per una definizione della sua semantica. Il valore dell'attributo può essere un valore di clock, o la stringa "indefinite".
end
Questo attributo specifica la fine esplicita di un elemento. Vedere Sezione 4.2.4 per una definizione della sua semantica. L'attributo può contenere gli stessi tipi di valori dell'attributo "begin".
endsync
Per una definizione della semantica di questo valore vedere la Sezione 4.2.4. Questo attributo può avere i seguenti valori:
Il valore di default di "endsync" è "last".
 
 
id
Definito nella Sezione 2
region
Questo attributo specifica una superficie di rendering astratta (sia visiva che acustica) definita all'interno della sezione di layout del documento. Il suo valore deve essere un identificatore XML valido. Se nella sezione layout non è definita nessuna superficie di rendering con questo id, i valori delle proprietà di formattazione di questo elemento sono determinati dal layout di default.
L'attributo "region" negli elementi "par" non può essere usato dal linguaggio di base della disposizione di SMIL definito in questa specifica. E' aggiunto per completezza in quanto potrebbe essere richiesto da altri linguaggi di layout.
repeat
Per una definizione della semantica di questo attributo vedere la Sezione 4.2.4. Questo valore di attributo può essere un intero o una stringa "indefinite". Il valore di default è 1.

system-bitrate
Definito nella Sezione 4.4
system-captions
Definito nella Sezione 4.4
system-language
Definito nella Sezione 4.4
system-overdub-or-caption
Definito nella Sezione 4.4
system-required
Definito nella Sezione 4.4
system-screen-size
Definito nella Sezione 4.4
system-screen-depth
Definito nella Sezione 4.4
title
Definito nella Sezione 3.3.1

Si raccomanda caldamente che tutti gli elementi "par" abbiano un attributo "title" con una descrizione significativa. I programmi autore dovrebbero assicurare che nessun elemento possa essere introdotto in documento SMIL senza questo attributo.
Note sulla sincronizzazione tra figli

La precisione della sincronizzazione tra i figli in un gruppo parallelo è dipendente dalla implementazione. Prendete l'esempio della sincronizzazione nel caso di un ritardo nel playback, cioè il comportamento dell'elemento "par" quando contiene due o più tipi di media continui come un audio o un video, e uno di questi ha un ritardo.

Un player può mostrare i seguenti comportamenti di sincronizzazione:

sincronizzazione forte
Il player sincronizza i figli dell'elemento "par" ad un orologio comune (vedere Figura 4.4 a).
 
sincronizzazione debole
 
Ogni figlio dell'elemento "par" ha il suo proprio orologio che gira indipendentemente dall'orologio degli altri figli dell'elemento "par" (vedere Figura 4.4 b).

hard synchronizationD

a) sincronizzazione forte: ritardo nel video: se l'audio viene bloccato o si abbassa qualche riquadro del video. Il comportamento esatto è dipendente dall'implementazione.

 

soft synchronizationD

b) sincronizzazione debole


Figura 4.4: effetto del ritardo su una schedulazione di playout per players che usano diverse politiche di sincronizzazione

Valori dell'attributo

clock value
I valori del clock hanno la seguente sintassi:
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")? ; default is "s"
Hours                 ::= 2DIGIT; any positive number
Minutes               ::= 2DIGIT; range from 00 to 59
Seconds               ::= 2DIGIT; range from 00 to 59
Fraction              ::= DIGIT+
Timecount             ::= DIGIT+
2DIGIT                ::= DIGIT DIGIT
DIGIT                 ::= [0-9]
Quelli che seguono sono esempi legali di valori di clock: Il valore seguente viene rappresentato da una frazione x con n cifre:

x * 1/10**n

Esempi:

00.5s = 5 * 1/10 secondi = 500 millisecondi
00:00.005 = 5 * 1/1000 secondi = 5 millisecondi

element-event value
Un valore di un elemento event specifica un particolare evento in un elemento di sincronizzazione.
Un elemento event ha la seguente sintassi:
Element-event     ::= "id(" Event-source ")(" Event ")"
Event-source      ::= Id-value
Event             ::= "begin" | Clock-val | "end"
Vengono definiti i seguenti eventi:
begin
Questo elemento viene generato all'effettivo inizio dell'elemento.
Esempio di utilizzo: begin="id(x)(begin)"
clock-val
Questo evento viene generato quando un clock associato ad un elemento raggiunge un valore particolare. Il clock parte da 0 all'inizio effettivo dell'elemento. Per gli elementi "par" e "seq", il clock fornisce il tempo mancante dall'effettivo inizio dell'elemento. Per elementi di oggetti di tipo media la semantica è dipendente dall'implementazione. Il clock può dare sia il tempo trascorso dall'inizio effettivo, che il tempo medio dell'oggetto. Quest'ultimo può differire dal tempo della presentazione che è passato da quando è cominciato per esempio a causa del rendering o del ritardo nella rete, ed è l'approccio raccomandato.
E' un errore usare un valore di clock che superi il valore dell'effettiva durata dell'elemento che genera l'evento.

Esempio di uso: begin="id(x)(45s)"

end
Questo evento viene generato al termine effettivo dell'elemento.
Esempio di uso: begin="id(x)(end)"
Contenuto dell'elemento

L'elemento par può contenere i seguenti figli:

a
Definito nella Sezione 4.5.1
animation
Definito nella Sezione 4.2.3
audio
Definito nella Sezione 4.2.3
img
Definito nella Sezione 4.2.3
par
Definito nella Sezione 4.2.1
ref
Definito nella Sezione 4.2.3
seq
Definito nella Sezione 4.2.2
switch
Definito nella Sezione 4.3
text
Definito nella Sezione 4.2.3
textstream
Definito nella Sezione 4.2.3
video
Definito nella Sezione 4.2.3
Tutti questi elementi possono apparire in tempi multipli come figli diretti di un elemento par.

4.2.2 L'elemento seq

I figli di un elemento "seq" formano una sequenza temporale.

Attributi

L'elemento seq può avere i seguenti attributi:

abstract
Definito nella Sezione 4.2.1
author
Definito nella Sezione 4.2.1
begin
Definito nella Sezione 4.2.1
copyright
Definito nella Sezione 4.2.1
dur
Definito nella Sezione 4.2.1
end
Definito nella Sezione 4.2.1
id
Definito nella Sezione 2
region
Definito nella Sezione 4.2.1
L'attributo region degli elementi "seq" non può essere usato dal linguaggio base di layout di SMIL definito in questa specifica. Viene aggiunto per completezza, poichè potrebbe essere richiesto da altri linguaggi di layout.
repeat
Definito nella Sezione 4.2.1
system-bitrate
Definito nella Sezione 4.4
system-captions
Definito nella Sezione 4.4
system-language
Definito nella Sezione 4.4
system-overdub-or-caption
Definito nella Sezione 4.4
system-required
Definito nella Sezione 4.4
system-screen-size
Definito nella Sezione 4.4
system-screen-depth
Definito nella Sezione 4.4
title
Definito nella Sezione 3.3.1

Si raccomanda caldamente che tutti gli elementi "seq" hanno un attributo "title" con una descrizione significativa. I programmi autore dovrebbero assicurare che non venga introdotto nessun elemento in un documento SMIL senza questo attributo.
Contenuto dell'elemento

L'elemento seq può contenere i seguenti figli:

a
Definito nella Sezione 4.5.1
animation
Definito nella Sezione 4.2.3
audio
Definito nella Sezione 4.2.3
img
Definito nella Sezione 4.2.3
par
Definito nella Sezione 4.2.1
ref
Definito nella Sezione 4.2.3
seq
Definito nella Sezione 4.2.2
switch
Definito nella Sezione 4.3
text
Definito nella Sezione 4.2.3
textstream
Definito nella Sezione 4.2.3
video
Definito nella Sezione 4.2.3

4.2.3 Elementi Oggetto di tipo multimediale: gli elementi ref, animation, audio,img, video,text e textstream

Gli elementi oggetto di tipo multimediale permettono l'inclusione di oggetti di tipo multimediale in una presentazione SMIL. Gli oggetti di tipo multimediale sono inclusi con un riferimento (usando una URI).

Ci sono due tipi di oggetti multimediale: quelli con una durata intrinseca (video, audio) (chiamati anche "media continui") e quelli senza una durata intrinseca (testo, immagini) (chiamati anche "media discreti").

Le ancore e i link possono essere fissati ad oggetti di tipo media visivi, cioè gli oggetti media resi su una superficie di rappresentazione astratta visiva.

Quando viene riavvolto un oggetto multimediale, il player non deve derivare l'esatto tipo dell'oggetto multimediale dal nome dell'elemento dell'oggetto multimediale. Deve invece dipendere solamente da altre sorgenti del tipo, come l'informazione di tipo contenuta nell'attributo "type", o l'informazione di tipo comunicata da un server o dal sistema operativo.

Gli autori, comunque, dovrebbero assicurarsi che il gruppo entro cui cade l'oggetto multimediale (animazione, audio, img, video, testo o teststream) viene riflesso nel nome dell'elemento. Questo per poter aumentare la leggibilità di un documento SMIL. Quando si è in dubbio sul gruppo dell'oggetto multimediale, gli autori dovrebbero usare un generico elemento "ref".

Attributi dell'elemento

Gli elementi dell'oggetto multimediale possono avere i seguenti attributi:

abstract
Definito nella Sezione 4.2.1
alt
Questo attributo specifica il testo alternativo nel caso di user agent che non possono visualizzare un particolare oggetto-multimediale. E' fortemente raccomandato che tutti gli elementi dell'oggetto multimediale abbiano un attributo "alt" con una descrizione significativa. I tool autore dovrebbero assicurare l'impossibilità di introdurre elementi in un documento SMIL che non abbiano questo attributo.
author
Definito nella Sezione 4.2.1
begin
Definito nella Sezione 4.2.1
clip-begin
L'attributo clip-begin specifica l'inizio di un sub-clip di un oggetto multimediale continuo come offset dall'inizio dell'oggetto multimediale.
La sintassi per i valori dell'attributo clip-begin è la seguente:
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
Il valore di questo attributo consiste di uno specificatore metrico, seguito da un valore di tempo la cui sintassi e semantica dipendono dallo specificatore metrico. Sono permessi i seguenti formati:
SMPTE Timestamp
Per una definizione più accurata dei livelli di frame possono essere usati i codici del tempo SMPTE [SMPTE]. Lo specificatore metrico può avere i seguenti valori:
smpte
smpte-30-drop
Questi valori indicano l'uso del formato "SMPTE 30 drop" con 29.97 frame per secondo. Il campo "frames" nel valore tempo può assumere valori da 0 a 29. La differenza tra 30 e 29,97 frame per secondo viene controllata abbassando il primo indice di frame di ogni minuto (valori 00 e 01), eccetto ogni decimo di minuto.
smpte-25
Il campo "frames" nella specifica di tempo può assumere valori da 0 a 24.
Il formato per il valore tempo è ore:minuti:secondi:frame:sottoframe. Se il valore del frame è zero, può essere omesso. I sottoframe vengono misurati in un centesimo di un frame.
Esempio:
clip-begin="smpte=10:12:33:20"
Normal Play Time
Normal Play Time esprime il tempo secondo i valori di clock di SMIL. Lo specificatore metrico è "npt" e la sintassi per il valore di tempo è identica alla sintassi per i valori di clock di SMIL.
Esempio:
clip-begin="npt=123.45s"
clip-begin="npt=12:05:35.3"
clip-end
L'attributo clip-end specifica la fine di un sub-clip di un oggetto multimediale continuo (come audio, video o altra presentazione) che dovrebbe essere girato. Usa la stessa sintassi per il valore dell'attributo come l'attributo clip-begin.
Se il valore dell'attributo "clip-end" supera la durata dell'oggetto multimediale, il valore viene ignorato, e la clip-end viene settata uguale alla fine effettiva dell'oggetto multimediale.
copyright
Definito nella Sezione 4.2.1
dur
Definito nella Sezione 4.2.1
end
Definito nella Sezione 4.2.1
fill
Per una definizione della semantica di questo attributo, vedere la Sezione 4.2.4. Questo attributo può avere i valori "remove" e "freeze".
id
Definito nella Sezione 2
longdesc
Questo attributo specifica un link (URI) ad una descrizione lunga di un oggetto multimediale. Questa descrizione dovrebbe integrare la descrizione breve fornita usando l'attributo alt. Quando un oggetto multimediale viene associato ad un'ancora, queste attributo dovrebbe fornire informazioni sui contenuti dell'ancora.
region
Definito nella Sezione 4.2.1
src
Il valore dell'attributo src è la URI dell'oggetto multimediale.
system-bitrate
Definito nella Sezione 4.4
system-captions
Definito nella Sezione 4.4
system-language
Definito nella Sezione 4.4
system-overdub-or-caption
Definito nella Sezione 4.4
system-required
Definito nella Sezione 4.4
system-screen-size
Definito nella Sezione 4.4
system-screen-depth
Definito nella Sezione 4.4
title
Definito nella Sezione 3.3.1

Si raccomanda caldamente che tutti gli elementi oggetto multimediale abbiano un attributo "title" con una descrizione significativa. I programmi autore dovrebbero assicurare che nessun elemento possa essere introdotto in un documento SMIL senza questo attributo.
type
Il tipo MIME di un oggetto multimediale riferito all'attributo "src".
Contenuto dell'elemento

Gli elementi oggetto multimediale possono contenere il seguente elemento:

anchor
Definito nella Sezione 4.5.2

4.2.4 Il modello di tempo di SMIL

4.2.4.Valori del modello di tempo
Nella seguente discussione il termine "elemento" si riferisce solo ad elementi di sincronizzazione.

Per ciascun elemento definiamo l'inizio, la durata e la fine, implicita, esplicita, desiderata ed effettiva.

L'effettivo inizio/durata/fine specifica quello che l'utente del documento percepirà.

I valori impliciti, espliciti e desiderati sono valori ausiliari usati per definire i valori effettivi.

Nella sezione seguente sono descritte le regole per il calcolo di ciascuno di questi valori per gli elementi definiti in SMIL 1.0.

  1. Ogni elemento in SMIL ha un inizio implicito.
  2. Ad ogni elemento può essere assegnato un inizio esplicito aggiungendo un attributo "begin" all'elemento:
  3. begin = "value of explicit-begin"
    E' un errore se l'inizio esplicito precede l'inizio implicito di un elemento.
  4. Ogni elemento in SMIL ha una fine implicita.
  5. Ad ogni elemento può essere assegnata una fine esplicita aggiungendo un attributo "end" all'elemento.
  6. end = "value of explicit-end"
  7. La durata implicita di un elemento è la differenza tra la fine e l'inizio implicito.
  8. Ad ogni elemento di SMIL può essere assegnata una durata esplicita aggiungendo un attributo "dur" all'elemento:
  9. dur = "value of explicit-duration"
  10. L'inizio desiderato di un elemento è uguale all'inizio esplicito, se è stato assegnato, altrimenti è uguale all'inizio implicito.
  11. Ogni elemento ha una fine desiderata.
  12. La durata desiderata di un elemento è la differenza tra la fine e l'inizio desiderati.
  13. Ogni elemento ha un inizio effettivo.
  14. Ogni elemento ha una fine effettiva. (NOTA: la fine effettiva di un elemento figlio non può mai seguire la fine effettiva del suo genitore.)
  15. La durata effettiva di un elemento è la differenza tra la fine e l'inizio effettivi.
4.2.4.2 Determinare i valori del modello di tempo per gli elementi di SMIL 1.0
Questa sezione definisce come vengono calcolati i valori del modello di tempo per la sincronizzazione degli elementi di SMIL 1.0 nei casi non coperti dalle regole definite nella Sezione 4.2.4.1.

Determinazione dell'inizio implicito di un elemento

Determinazione della fine implicita di un elemento

La prima descrizione corrispondente all'elemento è quella che deve essere usata:

Determinazione della fine desiderata di un elemento

Determinazione dell'inizio desiderato di un elemento

L'inizio desiderato di un elemento è determinato dall'uso delle regole 7 nella Sezione 4.2.4.1.

Determinazione dell'inizio effettivo di un elemento

L'inizio effettivo di un elemento è uguale all'inizio desiderato di un elemento, a meno che la fine effettiva di un elemento padre sia minore di questo tempo, nel qual caso l'elemento non viene mostrato per niente.

Determinazione della fine effettiva di un elemento

4.3 L'elemento switch

L'elemento switch permette all'autore di specificare un insieme di elementi alternativi fra i quali è possibile sceglierne uno solo accettabile. Un elemento è accettabile se è un elemento di SMIL 1.0, il tipo di media può essere codificato e tutti gli attributi di testo (vedere Sezione 4.4) dell'elemento posti a "true".

Un elemento viene selezionato come segue: il player valuta gli elementi nell'ordine in cui compaiono nell'elemento switch. Il primo elemento accettato viene selezionato ad esclusione di tutti gli altri elementi all'interno di switch. 

Quindi, gli autori dovrebbero ordinare le alternative dalle più desiderabili alle meno desiderabili. Inoltre, gli autori dovrebbero porre una alternativa sicura come ultima scelta nello <switch> in modo che venga scelto almeno un oggetto all'interno dello <switch> (a meno che questo non sia esplicitamente non desiderato).

Le implementazioni non dovrebbero selezionare arbitrariamente un oggetto all'interno di <switch> quando gli attibuti di test falliscono per tutti.

Nota che gli http URI forniscono una opzione sul formato dei dati, che in alcuni casi potrebbe essere una alternativa all'uso dell'elemento "switch".

Attributes

L'elemento switch può avere i seguenti attributi:

id
Definito nella Sezione 2
title
Definito nella Sezione 3.3.1

Si raccomanda caldamente che tutti gli elementi switch abbiano un attributo "title" con una descrizione significativa. I tool autore dovrebbero assicurare che non possa essere introdotto nessun elemento in un documento SMIL senza questo attributo.
Contenuto dell'elemento

Se l'elemento "switch" viene usato come figlio diretto o indiretto di un elemento "body", allora può contenere i seguenti figli:

a
Definito nella Sezione 4.5.1
animation
Definito nella Sezione 4.2.3
audio
Definito nella Sezione 4.2.3
img
Definito nella Sezione 4.2.3
par
Definito nella Sezione 4.2.1
ref
Definito nella Sezione 4.2.3
seq
Definito nella Sezione 4.2.2
switch
Definito nella Sezione 4.3
text
Definito nella Sezione 4.2.3
textstream
Definito nella Sezione 4.2.3
video
Definito nella Sezione 4.2.3
Tutti questi elementi possono comparire più volte come figli di un elemento "switch".

Se l'elemento "switch" viene usato all'interno dell'elemento "head", allora può contenere il seguente figlio:

layout
Definito nella Sezione 3.2

All'interno dell'elemento switch possono essere presenti elementi multipli di layout.

4.4 Attributi di test

Questa specifica definisce una lista di attributi di test che può essere aggiunta ad ogni elemento di sincronizzazione, e che verifica le capacità e i setting del sistema. Concettualmente questi attributi rappresentano test di tipo booleano. Quando uno degli attributi di test specificato per un elemento viene valutato come "false", l'elemento che porta questo attributo viene ignorato.

All'interno della lista sottostante si può presentare il concetto di "preferenze per l'utente". Le preferenze per l'utente vengono normalmente definite dal motore di playback usando una box di dialogo per le preferenze, ma in questa specifica non si hanno restrizioni su come queste preferenze vengono comunicate dallo user al player di SMIL.

In SMIL 1.0 sono definiti i seguenti attributi di testo:

system-bitrate
Questo attributo specifica, in bit per secondo, l'ampiezza di banda approssimativa disponibile sul sistema. La misura dell'ampiezza di banda è una specifica dell'applicazione, cioè, l'applicazione può usare misure sofisticate di connettività end-to-end o un semplice settaggio statico controllato dall'utente. Nel secondo caso questo potrebbe per esempio essere usato per fare una scelta sulla connessione dell'utente alla rete. I valori tipici dei modem degli utenti dovrebbero essere 14400, 28800, 56000 bit/s, e così via. Viene posto a "true" se il sistema bitrate disponibile è uguale o maggiore del valore dato. Viene posto a "false" se il sistema bitrate disponibile è minore del valore dato.
Questo attributo può assumere qualsiasi valore intero più grande di 0. Se il valore eccede il valore di ampiezza di banda definito dall'implementazione, l'attributo prende sempre il valore "false".
system-captions
Questo attributo permette agli autori di distinguere tra un testo ridondante equivalente ad una porzione di audio della presentazione (intesa per una platea di quelle con disabilità uditive o di quelle che imparano a leggere e che vogliono o necessitano di questa informazione) e testo inteso per una platea estesa. Questo attributo può avere il valore "on" se l'utente ha indicato il desiderio di vedere informazioni sottotitolate, ed ha valore "off" se l'utente ha indicato che non vuole vedere questa informazione. Viene posto a "true" se il valore è "on", e viene posto a "false" se il valore è "off".
system-language
Il valore di questo attributo è una lista di nomi di linguaggi separati da virgole come definito nel [RFC1766].
Viene posto a "true" se uno dei linguaggi indicati dalle preferenze dell'utente equivale esattamente a uno dei linguaggi dati nel valore di questo parametro, o se uno dei linguaggi indicati dalle preferenze dell'utente equivale esattamente al prefisso di uno dei linguaggi dati in questo parametro in modo che il primo carattere di tag che segue il prefisso sia "-".
Altrimenti viene posto a "false".

Nota: Questo utilizzo di una regola del prefisso non implica che i tag del linguaggio vengano assegnati ai linguaggi in modo tale che è sempre vero che se un utente comprende il linguaggio con un certo tag, allora l'utente comprenderà sempre tutti i linguaggi di tag per i quali questo tag è un prefisso.

La regola del prefisso permette semplicemente l'uso dei tags di prefisso se questo è il caso.

Note sull'implementazione: quando vengono scelte le preferenze linguistiche disponibili per l'utente, gli implementatori dovrebbero tener conto del fatto che gli utenti non sono familiari con i dettagli del matching di linguaggio come descritto sotto, e dovrebbero fornire una guida appropriata. Come esempio, l'utente può assumere che selezionando "en-gb" gli verrà fornito qualsiasi tipo di documento inglese se non è disponibile l'inglese britannico. L'interfaccia utente per la scelta delle preferenze dovrebbe guidare l'utente ad aggiungere "en" per ottenere il miglior comportamento di matching.

POSSONO essere elencati diversi linguaggi per il contenuto che è destinato a differenti platee. Per esempio, l'interpretazione di "Treat of Waitangi", presentato contemporaneamnete in versione originale Maori e Inglese, verrebbe chiamata con:

            <audio src="foo.rm" system-language="mi, en"/>
In ogni caso, proprio perchè diversi linguaggi vengono presentati all'interno di oggetti che hanno l'attributo per il test sul linguaggio di sistema, non significa che è destinato a platee linguistiche diverse. Un esempio potrebbe essere un sillabario di lingua per principianti, come "A first lesson in Latin", che è chiaramente rivolto ad un pubblico che sa leggere e scrivere in inglese. In questo caso, l'attributo per il test del linguaggio di sistema dovrebbe esclusivamente includere "en".

Note per gli autori: gli autori dovrebbero realizzare che, se in uno "switch" sono inclusi varii oggetti di linguaggi alternativi, e nessuno di questi corrisponde, questo può portare a situazioni come un video che viene mostrato senza traccia audio. Viene dunque raccomandato di includere una scelta di "catch-all" alla fine di questo tipo di switch che viene accettato in ogni caso.

system-overdub-or-caption
Questo attributo determina se gli utenti preferiscono cambiare audio o sottotitolare quando è disponibile l'opzione. L'attributo può assumere i valori "caption" e "overdub". Viene posto a "true" se le preferenze dell'utente corrispondono al valore di questo attributo. Viene posto a "false" nel caso in cui non corrispondono.
system-required
Questo attributo specifica il nome di una estensione. Viene posto a "true" se l'estensione viene supportata dall'implementazione, altrimenti viene posto a "false". In una futura versione di SMIL il valore di questo attributo sarà un namespace di XML [NAMESPACES].
system-screen-size
I valori dell'attributo hanno la seguente sintassi::

screen-size-val ::= screen-height"X"screen-width
Ciascuno di questi è il valore di un pixel e deve essere un valore intero maggiore di 0. Viene posto a "true" se il sistema di playback di SMIL è in grado di visualizzare una presentazione della dimensione data. Viene posto a "false" se il sistema di playback di SMIL è in grado di visualizzare solo una presentazione più piccola.
system-screen-depth
Questo attributo specifica l'ampiezza in bit della palette di colori dello schermo, richiesta per visualizzare l'elemento. Il valore deve essere più grande di 0. Valori tipici sono 1, 8, 24 .... Viene posto a "true" se il sistema di playback di SMIL è in grado di visualizzare immagini o video con la profondità di colore data. Viene posto a "false" se il sistema di playback di SMIL è in grado di visualizzare solo immagini o video con una profondità di colore minore.
Esempi

1) Scegliere fra contenuto con diverso velocità di trasmissione

In una situazione comune, le implementazioni possono desiderare di permettere una selezione attraverso un parametro sugli elementi di "sistem-bitrate". Il player multimediale valuta ciascuna delle "scelte" (elementi all'interno di switch) una sola volta, cercando un bitrate accettabile date le caratteristiche conosciute del link tra il player multimediale e il server.

...
<par>
  <text .../>
  <switch>
    <par system-bitrate="40000">
    ...
    </par>
    <par system-bitrate="24000">
    ...
    </par>
    <par system-bitrate="10000">
    ........
    </par>
  </switch>
</par>
...
2) Scelta tra risorse audio con diversi bitrate

Gli elementi all'interno dello switch possono essere qualsiasi combinazione di elementi. Per esempio, uno potrebbe semplicemente specificare una traccia audio alternativa::

...
<switch>
   <audio src="joe-audio-better-quality" system-bitrate="16000" />
   <audio src="joe-audio" system-bitrate="8000" />
</switch>
...
3) Scelta tra risorse audio in diversi linguaggi

Nel seguente esempio, una risorsa audio è disponibile sia in inglese che in francese. Il player può scegliere una di queste risorse audio, basate sul linguaggio preferito dall'utente.

...
<switch>
   <audio src="joe-audio-french" system-language="fr"/>
   <audio src="joe-audio-english" system-language="en"/>
</switch>
...
4) Scelta tra contenuto scritto per diversi monitor

Nell'esempio seguente la presentazione contiene parti alternative disegnate per monitor con differenti risoluzioni e profondità di colore. A seconda delle caratteristiche particolari dello schermo, il player può scegliere una delle alternative.

...
<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) Distinguere tracce di sottotitolatura da telescrivente

Nell'esempio seguente le sottotitolature sono mostrate solo se l'utente le vuole attivate.

...
<seq>
  <par>
    <audio      src="audio.rm"/>
    <video      src="video.rm"/>
    <textstream src="stockticker.rtx"/>
    <textstream src="closed-caps.rtx" system-captions="on"/>
  </par>
</seq>
...
6) Scelta tra il linguaggio per il cambio di audio e le tracce di sottotitolatura

Nel seguente esempio è disponibile un film in lingua francese con cambio di audio e titoli in inglese, tedesco e olandese. Il segmento di SMIL che segue esprime proprio questo e si attiva le alternative che l'utente preferisce.

...
<par>
  <switch>
    <audio src="movie-aud-en.rm" system-language="en"
                system-overdub-or-caption="overdub"/>
    <audio src="movie-aud-de.rm" system-language="de"
                system-overdub-or-caption="overdub"/>
    <audio src="movie-aud-nl.rm" system-language="nl"
                system-overdub-or-caption="overdub"/>
     <!-- French for everyone else -->
     <audio src="movie-aud-fr.rm"/>
   </switch>
   <video src="movie-vid.rm"/>
   <switch>
     <textstream src="movie-caps-en.rtx" system-language="en"
                 system-overdub-or-caption="caption"/>
     <textstream src="movie-caps-de.rtx" system-language="de"
                system-overdub-or-caption="caption"/>
     <textstream src="movie-caps-nl.rtx" system-language="nl"
                 system-overdub-or-caption="caption"/>
     <!-- French captions for those that really want them -->
     <textstream src="movie-caps-fr.rtx" system-captions="on"/>
   </switch>
</par>
...

4.5 Elementi di hyperlink

Gli elementi per i link permettono una descrizione dei link di navigazione tra gli oggetti.

SMIL si preoccupa solo degli elementi di link in-linea. I link sono limitati a link unidirezionali e con una singola testata. (cioè, tutti i link hanno esattamente una origine e una risorsa di destinazione). Tutti i link di SMIL sono attivati dall'utente.

Manipolare i link in documenti incapsulati

A causa della sua natura integrante, la presentazione di un documento di SMIL può implicare altre applicazioni o plug-in (non-SMIL). Per esempio, un browser SMIL può usare un plug-in HTML per visualizzare una pagina incapsulata HTML. Viceversa, un browser HTML può usare un plug-in SMIL per visualizzare un documento SMIL incapsulato in una pagina HTML.

In presentazioni di questo tipo, i link possono essere definiti da documenti a livelli diversi e possono far sorgere dei conflitti. In questo caso, il link definito dal documento contenente dovrebbe avere la precedenza sul link definito dall'oggetto incapsulato. Nota che da quando questo potrebbe richiedere la comunicazione tra il browser e il plug-in, l'implementazione di SMIL può scegliere di non adeguarsi con questa raccomandazione.

Se viene definito un link in un documento SMIL incapsulato, il link interessato agisce solo sul documento SMIL incapsulato.

Se viene definito un link in un documento non-SMIL incapsulato in un documento SMIL, il link interessato può agire solo sulla presentazione del documento incapsulato e non sulla presentazione contenente il documento SMIL. Questa restrizione può essere eliminata in versioni future di SMIL.

Indirizzamento

SMIL supporta l'identificatore di fragmento di nome e il connettore '#'. Questo significa che SMIL supporta locators così come vengono usati abitualmente in HTML (per esempio usa il locator nella forma "http://foo.com/some/path#anchor1").

Link a frammenti SMIL

Un locator che punta ad un documento SMIL può contenere una parte frammento (per esempio: http://www.w3.org/test.smi#par1). La parte frammento è un valore di id che identifica uno degli elementi all'interno del documento SMIL referenziato. Se è seguito da un link contenente una parte di frammento, la presentazione dovrebbe iniziare come se l'utente avesse fatto uno scorrimento veloce in avanti.

Possono capitare i seguenti casi speciali:

  1. L'elemento indirizzato dal link ha un attributo "repeat"
    1. Se il valore dell'attributo "repeat" è N, vengono girate tutte le ripetizioni N dell'elemento
    2. Se il valore dell'attributo "repeat" è "indefinite", il playback termina in accordo con le regole definite per il valore "indefinite" di "repeat"
  2. L'elemento indirizzato dal link è contenuto all'interno di un altro elemento che contiene un attributo "repeat"
    1. Se il valore dell'attributo "repeat" è N, il playback parte all'inizio dell'elemento indirizzato dal link, seguito da N-1 ripetizioni dell'elemento contenente l'attributo "repeat"
    2. Se il valore dell'attributo "repeat" è "indefinite", il playback parte all'inizio dell'elemento indirizzato dal link. Il playback termina in accordo con le regole definite dal valore "indefinite" di "repeat"
  3. L'elemento indirizzato dal link è contenuto nell'elemento "switch": è proibito linkare a elementi che sono il contenuto degli elementi "switch".

4.5.1 L'elemento a

La funzionalità dell'elemento "a" è molto simile alla funzionalità dell'elemento "a" in HTML 4.0 [HTML40]. SMIL aggiunge un attributo "show" che controlla il comportamento temporale di un sorgente quando è seguito da un link. A scopi di sincronizzazione, l'elemento "a" è trasparente, cioè non influenza la sincronizzazione dei suoi elementi figli. Gli elementi "a" possono essere annidati. Un elemento "a" deve avere un attributo href.

Attributi

L'elemento "a" può avere i seguenti attributi:

id
Definito nella Sezione 2
href
Questo attributo contiene la URI di destinazione del link
E' richiesto l'attributo "href" per gli elementi "a".
show
Questo attributo controlla il comportamento di un documento sorgente contenente il link quando segue il link. Può avere uno dei seguenti valori:
Il valore di default di "show" è "replace".
title
Definito nella Sezione 3.3.1

Si raccomanda caldamente che tutti gli elementi "a" abbiano un attributo "title" con una descrizione significativa. I programmi autore dovrebbero assicurare che nessun elemento possa essere introdotto in un documento SMIL senza questo attributo.
Contenuto dell'elemento

L'elemento "a" può contenere i seguenti figli:

animation
Definito nella Sezione 4.2.3
audio
Definito nella Sezione 4.2.3
img
Definito nella Sezione 4.2.3
par
Definito nella Sezione 4.2.1
ref
Definito nella Sezione 4.2.3
seq
Definito nella Sezione 4.2.2
switch
Definito nella Sezione 4.3
text
Definito nella Sezione 4.2.3
textstream
Definito nella Sezione 4.2.3
video
Definito nella Sezione 4.2.3
Esempi

Esempio 1

Il link da avvio alla nuova presentazione sostituendo la presentazione che stava girando.

<a href="http://www.cwi.nl/somewhereelse.smi">
     <video src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>
Nell'esempio, la seconda linea può essere sostituita da un riferimento a qualsiasi sottoalbero valido di una presentazione SMIL.

Esempio 2

Il link da avvio alla nuova presentazione insieme alla presentazione che stava girando.

<a href="http://www.cwi.nl/somewhereelse.smi" show="new">
     <video src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>
Per esempio, questo permette ad un player di SMIL di controllare un browser HTML.

Esempio 3

Il link da inizio alla nuova presentazione e mette in pausa la presentazione che stava girando.

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

L'esempio seguente contiene un link da un elemento in una presentazione A alla metà di un'altra presentazione B. Questo dovrebbe far girare la presentazione B iniziando esattamente dall'inizio dell'elemento con id "next".

Presentation A:

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


Presentation B (http://www.cwi.nl/presentation):

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

4.5.2 L'elemento anchor

La funzionalità di un elemento "a" è limitata dal fatto che permette di associare un link solo con oggetti multimediali completi. Le mappe sensibili di HTML hanno dimostrato che è utile associare dei link a sottoparti spaziali di un oggetto. L'elemento anchor realizza funzionalità simili per SMIL.
  1. L'elemento anchor permette di associare un link a sottoparti spaziali e temporali di un oggetto multimediale, usando l'attributo "href" (al contrario, l'elemento "a" permette solo di associare un link ad un oggetto multimediale completo).
  2. L'elemento anchor permette ad una sottoparte di un oggetto multimediale di diventare la destinazione di un link, usando l'attributo "id".
  3. L'elemento anchor permette di dividere un oggetto in sottoparti spaziali, usando l'attributo "coords"
  4. L'elemento anchor permette di dividere un oggetto in sottoparti temporali, usando gli attributi "begin" e "end". I valori degli attributi begin e end sono relativi all'effettivo inizio dell'oggetto multimediale.

Attributi

L'elemento anchor può avere i seguenti attributi:

begin
Definito nella Sezione 4.2.1
coords
Il valore di questo attributo specifica un rettangolo all'interno dell'area di visualizzazione di un oggetto multimediale visivo. La sintassi e la semantica di questo attributo sono simili a quelle dell'attributo coords delle mappe sensibili in HTML, quando il link è associato ad una figura rettangolare. Il rettangolo è specificato da quattro valori di lunghezza: i primi due valori specificano le coordinate dell'angolo superiore sinistro del rettangolo. I secondi due valori specificano le coordinate dell'angolo inferiore destro del rettangolo. Le coordinate sono relative all'angolo in alto a sinistra dell'oggetto multimediale visivo (vedere figura 4.5). Se una coordinata è specificata come valore in percentuale, questa è relativa all'altezza e alla larghezza totali dell'area di visualizzazione dell'oggetto multimediale.
Un attributo con un valore di coords errato viene ignorato (x-destro minore o uguale di x-sinistro, y-inferiore minore o uguale di y-superiore). Se il rettangolo definito dagli attributi di coords supera l'area delimitata dall'oggetto multimediale, l'altezza e la larghezza eccedenti vengono tagliate ai bordi dell'oggetto multimediale.
I valori dell'attributo di coords hanno la seguente sintassi:
coords-value ::= left-x "," top-y "," right-x "," bottom-y

semantics of coords attributeD


Figura 4.5: Semantica dell'attributo "coords"

end
Definito nella Sezione 4.2.1
id
Definito nella Sezione 2
show
Definito nella Sezione 4.5.1
skip-content
Definito nella Sezione 3.3.1
title
Definito nella Sezione 3.3.1

Si raccomanda caldamente che tutti gli elementi anchor abbiano un attributo "title" con una descrizione significativa. I programmi autore dovrebbero assicurare che nessun elemento possa essere introdotto in un documento SMIL senza questo attributo.
Esempi

1) Associazione di link con sottoparti spaziali

Nell'esempio che segue lo spazio di schermo occupato da un video clip è diviso in due sezioni. A ciascuna di queste sezioni viene associato un link differente.

<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) Associazione di link con sottoparti temporali

Nell'esempio che segue la durata di un video clip viene divisa in due sotto intervalli. A ciascuno di questi intervalli viene associato un link differente.

<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) Salto alla sottoparte di un oggetto


L'esempio che segue contiene un link da un elemento di una presentazione A a metà di un oggetto video contenuto in un'altra presentazione B. Questo dovrebbe far partire la presentazione B iniziando dal secondo 5 del video (cioè la presentazione partirebbe come se l'utente avesse portato avanti velocemente l'intera presentazione al punto in cui inizia il frammento video designato nel "CoolStuff").

Presentation A:

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


Presentation B:

<video src="http://www.w3.org/CoolStuff">
  <anchor id="joe" begin="0s" end="5s"/>
  <anchor id="tim" begin="5s" end="10s"/>
</video>
4) Combinare usi diversi di link

L'esempio che segue mostra come gli usi diversi dei link associati possono essere utilizzati in combinazione.

Presentation A:

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


Presentation B:

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

5 La DTD di SMIL

5.1 Relazione con XML

Un documento SMIL 1.0 può facoltativamente contenere una dichiarazione di tipo di documento che nomina la definizione di tipo di documento (DTD) in uso per il documento. Per SMIL, la dichiarazione di tipo di documento dovrebbe apparire come segue (le doppie virgolette possono essere sostituite dalle virgolette singole).

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

La specifica XML 1.0 fornisce un modo per estendere la DTD usando l'elemento <!DOCTYPE>, per esempio aggiungendo un nuovo insieme di definizioni di entità. Gli autori non dovrebbero usare questa caratteristica con SMIL poichè molti player di SMIL non la supporteranno.

Quello che segue non è legale in SMIL:

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

5.2 DTD

<!--

    This is the XML document type definition (DTD) for SMIL 1.0.

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

    Authors: 
        Jacco van Ossenbruggen <jrvosse@cwi.nl> 
        Sjoerd Mullender       <sjoerd@cwi.nl>
        
    Further information about SMIL is available at:

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

-->

<!-- Generally useful entities -->
<!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
">

<!--=================== SMIL Document =====================================-->
<!--
     The root element SMIL contains all other elements.
-->
<!ELEMENT smil (head?,body?)>
<!ATTLIST smil
        %id-attr;
>

<!--=================== The Document Head =================================-->
<!ENTITY % layout-section "layout|switch">

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

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


<!--=================== Layout Element ====================================-->
<!--
     Layout contains the region and root-layout elements defined by
     smil-basic-layout or other elements defined an external layout 
     mechanism.
-->
<!ELEMENT layout ANY>
<!ATTLIST layout
        %id-attr;
        type CDATA      "text/smil-basic-layout"
>


<!--=================== Region Element ===================================-->
<!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;
>

<!--=================== Root-layout Element ================================-->
<!ELEMENT root-layout EMPTY>
<!ATTLIST root-layout
        %id-attr;
        %title-attr;
        %viewport-attrs;
        %skip-attr;
>


<!--=================== Meta Element=======================================-->
<!ELEMENT meta EMPTY>
<!ATTLIST meta
        name    NMTOKEN #REQUIRED
        content CDATA   #REQUIRED
        %skip-attr;
>

<!--=================== The Document Body =================================-->
<!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;>

<!--=================== Synchronization Attributes ========================-->
<!ENTITY % sync-attributes "
        begin   CDATA   #IMPLIED
        end     CDATA   #IMPLIED
">

<!--=================== Switch Parameter Attributes =======================-->
<!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
">

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


<!--=================== The Parallel Element ==============================-->
<!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;
>

<!--=================== The Sequential Element ============================-->
<!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;
>

<!--=================== The Switch Element ================================-->
<!-- In the head, a switch may contain only layout elements,
     in the body, only container elements. However, this
     constraint cannot be expressed in the DTD (?), so
     we allow both:
-->
<!ENTITY % switch-content "layout|(%container-content;)">
<!ELEMENT switch (%switch-content;)*>
<!ATTLIST switch
        %id-attr;
        %title-attr;
>

<!--=================== Media Object Elements =============================-->
<!-- SMIL only defines the structure. The real media data is
     referenced by the src attribute of the media objects.
-->

<!-- Furthermore, they have the following attributes as defined
     in the SMIL specification:
-->
<!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;
">

<!--
     Most info is in the attributes, media objects are empty or
     contain associated link elements:
-->
<!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;>

<!--=================== Link Elements =====================================-->

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


<!--=================== Inline Link Element ===============================-->
<!ELEMENT a (%schedule;|switch)*>
<!ATTLIST a
        %smil-link-attributes;
>


<!--=================== Associated Link Element ===========================-->
<!ELEMENT anchor EMPTY>
<!ATTLIST anchor
        %skip-attr;
        %smil-link-attributes;
        %sync-attributes;
        coords          CDATA                   #IMPLIED
>

Riferimenti

[CSS2]
"Cascading Style Sheets, level 2", B. Bos, H. Lie, C. Lilley, I. Jacobs, 12 May 1998.
Disponibile all'indirizzo: http://www.w3.org/TR/REC-CSS2/.
[HTML40]
"HTML 4.0 Specification", D. Raggett, A. Le Hors, I. Jacobs, 24 April 1998.
Disponibile all'indirizzo: http://www.w3.org/TR/REC-html40/.
[ISO/IEC 10646]
ISO (International Organization for Standardization). ISO/IEC 10646-1993 (E). Information technology -- Universal Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane. [Geneva]: International Organization for Standardization, 1993 (plus amendments AM 1 through AM 7).
[NAMESPACES]
"Namespaces in XML", T. Bray, D. Hollander, A. Layman, 27 March 1998

W3C working draft. Disponibile all'indirizzo: http://www.w3.org/TR/WD-xml-names.
[PICS]
"PICS 1.1 Label Distribution -- Label Syntax and Communication Protocols", 31 October 1996, T. Krauskopf, J. Miller, P. Resnick, W. Trees

Disponibile all'indirizzo: http://www.w3.org/TR/REC-PICS-labels-961031
[RFC1738]
"Uniform Resource Locators", T. Berners-Lee, L. Masinter, and M. McCahill, December 1994.

Disponibile all'indirizzo: ftp://ftp.isi.edu/in-notes/rfc1738.txt.
[RFC1766]
"Tags for the Identification of Languages", H. Alvestrand, March 1995.

Disponibile all'indirizzo: ftp://ftp.isi.edu/in-notes/rfc1766.txt.
[RFC1808]
"Relative Uniform Resource Locators", R. Fielding, June 1995.

Disponibile all'indirizzo: ftp://ftp.isi.edu/in-notes/rfc1808.txt.
[RFC2045]
"Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", N. Freed and N. Borenstein, November 1996.

Disponibile all'indirizzo: ftp://ftp.isi.edu/in-notes/rfc2045.txt. Note that this RFC obsoletes RFC1521, RFC1522, and RFC1590.
[SMPTE]
"Time and Control Codes for 24, 25 or 30 Frame-Per-Second Motion-Picture Systems - RP 136-1995".  Society of Motion Picture & Television Engineers.
[URI]
"Uniform Resource Identifiers (URI): Generic Syntax and Semantics", T. Berners-Lee, R. Fielding, L. Masinter, 4 March 1998.

Disponibile all'indirizzo: http://www.ics.uci.edu/pub/ietf/uri/draft-fielding-uri-syntax-02.txt. This is a work in progress that is expected to update [RFC1738] and [RFC1808].
[XML10]
"Extensible Markup Language (XML) 1.0", T. Bray, J. Paoli, C.M. Sperberg-McQueen, editors, 10 February 1998.

Disponibile all'indirizzo: http://www.w3.org/TR/REC-xml/

Appendice

Estensioni di SMIL 1.0

(non-normative)

In futuro SMIL 1.0 potrebbe essere esteso da un'altra raccomandazione del W3C o da estensioni private.

Per queste estensioni, è raccomandabile che vengano osservate le regole che seguono:

Si raccomanda che i player SMIL vengano preparati per manipolare i documenti che contengono estensioni che osservano queste due regole.

Le estensioni dovrebbero essere manipolate usando il meccanismo di namespace di XML, una volta che tale meccanismo diventa una raccomandazione del W3C. Nel resto della sezione viene usata la sintassi e la semantica dei namespace di XML definiti nella note del W3C [NAMESPACE] solo come dimostrazione:

Possono presentarsi i seguenti casi:

  1. Il documento contiene una dichiarazione di namespace per la specifica SMIL 1.0 che definisce un prefisso vuoto. In questo caso un elemento non SMIL 1.0 e gli attributi non sono accettati in un documento se sono dichiarati usando un namespace XML. Il documento può non contenere una dichiarazione di tipo di documento per SMIL 1.0. Se è così non è valido. Nell'esempio che segue l'elemento "new:a" è una estensione legale. L'elemento "mytags:a" e "b" sono errori di sintassi poichè non sono stati dichiarati usando il namespace di XML.
    <?xml:namespace ns="http://www.acme.com/new-smil" prefix="new" ?>
    <?xml:namespace ns="http://www.w3.org/TR/PR-smil" ?>
    <smil>
      <body>
        <par>
          <new:a>
          ...
          </new:a>
          <mytags:a ... />
            ...
          </mytags:a>
          <b>
           ...
          </b>
        </par>
       </body>
     </smil>
  2. Il documento non contiene dichiarazione del tipo di documento, ma contiene una dichiarazione di tipo di documento per una versione di SMIL superiore a 1.0, o contiene una dichiarazione di namespace per una specifica di SMIL con una versione superiore di 1.0. Per un player SMIL 1.0 capace di riconoscere questo tipo di dichiarazione di namespace, si raccomanda che la URI delle versioni future di SMIL inizino con http://www.w3.org/TR/REC-smil, e siano seguite da più caratteri che possono essere per esempio il numero della versione.
    In questo caso un player SMIL 1.0 dovrebbe assumere che viene processato un documento SMIL con un numero di versione maggiore di 1.0.
    Possono presentarsi i seguenti casi:
    Unknown element
    Gli elementi unknown vengono ignorati
    Un elemento unknown può contenere contenuto consistente in elementi di SMIL 1.0. Se questo tipo di contenuto viene ignorato o processato dipende dal valore dell'attributo "skip-content". Se l'attributo è posto a "true", o l'attributo è assente, il contenuto non viene processato. Se è posto a "false" il contenuto viene processato.

    Conteuto in elementi che venivano dichiarati "Empty"
    Una versione futura di SMIL può permettere il contenuto negli elementi che sono dichiarati come "empty" in SMIL 1.0.
    Se questo contenuto viene ignorato o meno dipende dal valore dell'attributo "skip-content" nell'elemento precedentemente vuoto. Se l'attributo è posto a "true", il contenuto non viene processato. Se è posto a "false" il contenuto viene processato.
    Unknown Attribute
    Gli attributi sconosciuti vengono ignorati.
    Unknown Attribute Value
    Gli attributi con valori di attributo sconosciuti vengono ignorati.
  3. Il documento contiene una dichiarazione di tipo di documento per SMIL 1.0. In questo caso, potrebbe contenere elementi non SMIL 1.0, anche se vengono dichiarati nel namespace di XML. Questo perchè questo tipo di estensioni renderebbero il documento non valido.

L'uso di SMIL 1.0 come estensione

Quando il meccanismo di namespace di XML viene usato per includere elementi e attributi SMIL in altri documenti basati su XML, viene raccomandato di usare il seguente identificatore di namespace: http://www.w3.org/TR/REC-smil