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: * Stephan Bugaj, Lucent/Bell Labs * Dick Bulterman, CWI * Bruce Butterfield, RealNetworks * Wo Chang, NIST * Guy Fouquet, Alcatel * Christian Gran, GMD * Mark Hakkinen, The Productivity Works * Lynda Hardman, CWI * Peter Hoddie, Apple * Klaus Hofrichter, GMD * Philipp Hoschka, W3C * Jack Jansen, CWI * George Kerscher, DAISY Consortium * Rob Lanphier, RealNetworks * Nabil Layaïda, INRIA * Stephanie Leif, RealNetworks * Sjoerd Mullender, CWI * Didier Pillet, CNET/DSM * Anup Rao, Netscape * Lloyd Rutledge, CWI * Patrick Soquet, Havas * Warner ten Kate, Philips * Jacco van Ossenbruggen, CWI * Michael Vernick, Lucent/Bell Labs * Jin Yu, DEC */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 list www-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 <#specification> * 2 L'elemento smil <#smil> * 3 L'intestazione del documento (head) <#document-head> o 3.1 L'elemento head <#head> o 3.2 L'elemento layout <#layout> o 3.3 Il linguaggio di layout di base di SMIL <#layout-elements> + 3.3.1 L'elemento region <#region> + 3.3.2 L'elemento root-layout <#root-layout> o 3.4 L'elemento meta <#meta> * 4 Il corpo del documento (body) <#document-body> o 4.1 L'elemento body <#body> o 4.2 Elementi di sincronizzazione <#synchronization-elements> + 4.2.1 L'elemento par <#par> + 4.2.2 L'elemento seq <#seq> + 4.2.3 L'elemento oggetto multimediale <#media-object>: elementi ref, animation, audio, img, video, text e textstream + 4.2.4 Il modello di tempo di SMIL <#SMIL_Time_Model> # 4.2.4.1 Valori del modello di tempo <#Time_Model_Variables> # 4.2.4.2 Determinare i valori del modello di tempo per gli elementi di SMIL 1.0 <#Determining_Values> o 4.3 L'elemento switch <#switch> o 4.4 Attributi di test <#test> o 4.5 Elementi di hyperlink <#hyperlinking> + 4.5.1 L'elemento a <#a> + 4.5.2 L'elemento anchor <#anchor> * 5 La DTD di SMIL <#smil-dtd> o 5.1 Relazione con XML <#relation> o 5.2 DTD <#dtd> * Appendice <#Appendix> o Estensioni di SMIL 1.0 <#handling-extensions> o L'uso di SMIL 1.0 come estensione <#Using> 1 Approccio alla specifica I documenti SMIL sono documenti scritti in XML 1.0 [XML10] <#ref-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] <#ref-URI>. La sintassi dei documenti SMIL viene definita dalla DTD nella Sezione 5.2 <#dtd>. 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 <#body> head Definito nella Sezione 3.1 <#head> 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 <#smil> *Contenuto dell'elemento* L'elemento "head" può contenere i seguenti figli: layout Definito nella Sezione 3.2 <#layout> meta Definito nella Sezione 3.4 <#meta> switch Definito nella Sezione 4.3 <#switch> 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 <#switch>). 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 <#layout-elements>): [region="r"] { top: 20px; left: 20px } (nota che in questo esempio entrambe le alternative di layout risultano nello stesso layout) *Attributi dell'elemento* id Definito nella Sezione 2 <#smil> 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 "" . 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 <#region> root-layout Definito nella Sezione 3.3.2 <#root-layout> 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] <#ref-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 <#media-object>). 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: 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: *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 <#smil> Un elemento region è applicato ad un elemento posizionabile settando l'attributo region <#loc> 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 <#Appendix>). Viene interpretato nei due casi seguenti: * Se in una futura versione di SMIL viene introdotto un nuovo elemento, e questo elemento fornisce elementi di SMIL 1.0 come contenuto di elemento, l'attributo "skip-content" controlla se questo contenuto viene processato da un player di SMIL 1.0. * se un elemento vuoto nella versione SMIL 1.0 diventa un elemento non-vuoto nelle future versioni di SMIL, l'attributo "skip-content" controlla se questo contenuto viene ignorato da un player di SMIL 1.0 o se genera un errore di sintassi.. 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: * Se due riquadri generati dagli elementi A e B hanno lo stesso livello nella pila, allora 1. Se la visualizzazione di un elemento A inizia dopo la visualizzazione di un elemento B, il riquadro di A viene posizionato in cima alla pila dal riquadro di B (ordine temporale). 2. Se la visualizzazione degli elementi ha inizio nello stesso momento, e in un documento SMIL di testo un elemento A occorre più tardi rispetto ad un elemento B, il riquadro di A viene posto sopra al riquadro di B (ordine dell'albero del documento come definito nei CSS2) *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 <#region> height Definito nella Sezione 3.3.1 <#region> Definisce l'altezza dell'elemento root. Sono permessi solo i valori della lunghezza. id Definito nella Sezione 2 <#smil> skip-content Definito nella Sezione 3.3.1 <#region> title Definito nella Sezione 3.3.1 <#region> width Definito nella Sezione 3.3.1 <#region>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 <#smil> 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 <#region> 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] <#ref-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 <#smil> *Contenuto dell'elemento* L'elemento "body" può contenere i seguenti elementi figli: a Definito nella Sezione 4.5.1 <#a> animation Definito nella Sezione 4.2.3 <#media-object> audio Definito nella Sezione 4.2.3 <#media-object> img Definito nella Sezione 4.2.3 <#media-object> par Definito nella Sezione 4.2.1 <#par> ref Definito nella Sezione 4.2.3 <#media-object> seq Definito nella Sezione 4.2.2 <#seq> switch Definito nella Sezione 4.3 <#switch> text Definito nella Sezione 4.2.3 <#media-object> textstream Definito nella Sezione 4.2.3 <#media-object> video Definito nella Sezione 4.2.3 <#media-object> 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 <#SMIL_Time_Model> 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 <#seq>), 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". ------------------------------------------------------------------------ delay in 'par' elementD ------------------------------------------------------------------------ /Figura 4.1: Uso del valore di delay all'interno di un elemento "par"/ ------------------------------------------------------------------------ delay in 'seq' elementD ------------------------------------------------------------------------ /Figura 4.2: Uso del valore di delay all'interno di un elemento "seq"/ ------------------------------------------------------------------------ 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 <#SMIL_Time_Model> 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 <#SMIL_Time_Model> 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: o first Per una definizione della semantica di questo attributo vedere Sezione 4.2.4. o id-ref Il valore di questo attributo ha la seguente sintassi: id-ref ::= "id(" id-value ")" dove "id-value" deve essere un identificatore XML valido. Per una definzione della semantica di questo valore vedere la Sezione 4.2.4. o last Per una definizione della semantica di questo valore vedere la Sezione 4.2.4. Il valore di default di "endsync" è "last". id Definito nella Sezione 2 <#smil> 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 <#SMIL_Time_Model>. Questo valore di attributo può essere un intero o una stringa "indefinite". Il valore di default è 1. system-bitrate Definito nella Sezione 4.4 <#test> system-captions Definito nella Sezione 4.4 <#test> system-language Definito nella Sezione 4.4 <#test> system-overdub-or-caption Definito nella Sezione 4.4 <#test> system-required Definito nella Sezione 4.4 <#test> system-screen-size Definito nella Sezione 4.4 <#test> system-screen-depth Definito nella Sezione 4.4 <#test> title Definito nella Sezione 3.3.1 <#region> 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: * Valore totale di clock: 02:30:03 = 2 ore, 30 minuti e 3 secondi * Valore parziale di clock: 02:33 = 2 minuti e 33 secondi * Valori di timecount: 3h = 3 ore 45min = 45 minuti 30s = 30 secondi 5ms = 5 millisecondi 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 <#a> animation Definito nella Sezione 4.2.3 <#media-object> audio Definito nella Sezione 4.2.3 <#media-object> img Definito nella Sezione 4.2.3 <#media-object> par Definito nella Sezione 4.2.1 <#par> ref Definito nella Sezione 4.2.3 <#media-object> seq Definito nella Sezione 4.2.2 <#seq> switch Definito nella Sezione 4.3 <#switch> text Definito nella Sezione 4.2.3 <#media-object> textstream Definito nella Sezione 4.2.3 <#media-object> video Definito nella Sezione 4.2.3 <#media-object> 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 <#par> author Definito nella Sezione 4.2.1 <#par> begin Definito nella Sezione 4.2.1 <#par> copyright Definito nella Sezione 4.2.1 <#par> dur Definito nella Sezione 4.2.1 <#par> end Definito nella Sezione 4.2.1 <#par> id Definito nella Sezione 2 <#smil> region Definito nella Sezione 4.2.1 <#par> 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 <#par> system-bitrate Definito nella Sezione 4.4 <#test> system-captions Definito nella Sezione 4.4 <#test> system-language Definito nella Sezione 4.4 <#test> system-overdub-or-caption Definito nella Sezione 4.4 <#test> system-required Definito nella Sezione 4.4 <#test> system-screen-size Definito nella Sezione 4.4 <#test> system-screen-depth Definito nella Sezione 4.4 <#test> title Definito nella Sezione 3.3.1 <#region> 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 <#a> animation Definito nella Sezione 4.2.3 <#media-object> audio Definito nella Sezione 4.2.3 <#media-object> img Definito nella Sezione 4.2.3 <#media-object> par Definito nella Sezione 4.2.1 <#par> ref Definito nella Sezione 4.2.3 <#media-object> seq Definito nella Sezione 4.2.2 <#seq> switch Definito nella Sezione 4.3 <#switch> text Definito nella Sezione 4.2.3 <#media-object> textstream Definito nella Sezione 4.2.3 <#media-object> video Definito nella Sezione 4.2.3 <#media-object> 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 <#par> 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 <#par> begin Definito nella Sezione 4.2.1 <#par> 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 <#ref-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 <#par> dur Definito nella Sezione 4.2.1 <#par> end Definito nella Sezione 4.2.1 <#par> 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 <#smil> 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 <#par> src Il valore dell'attributo src è la URI dell'oggetto multimediale. system-bitrate Definito nella Sezione 4.4 <#test> system-captions Definito nella Sezione 4.4 <#test> system-language Definito nella Sezione 4.4 <#test> system-overdub-or-caption Definito nella Sezione 4.4 <#test> system-required Definito nella Sezione 4.4 <#test> system-screen-size Definito nella Sezione 4.4 <#test> system-screen-depth Definito nella Sezione 4.4 <#test> title Definito nella Sezione 3.3.1 <#region> 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 <#anchor> 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: begin = "/value of explicit-begin/" E' un errore se l'inizio esplicito precede l'inizio implicito di un 3. elemento. Ogni elemento in SMIL ha una /fine implicita/. 4. Ad ogni elemento può essere assegnata una /fine esplicita/ aggiungendo un attributo "end" all'elemento. end = "/value of explicit-end/" 5. La /durata implicita/ di un elemento è la differenza tra la fine e l'inizio implicito. 6. Ad ogni elemento di SMIL può essere assegnata una /durata esplicita/ aggiungendo un attributo "dur" all'elemento: dur = "/value of explicit-duration/" 7. L'/inizio desiderato/ di un elemento è uguale all'inizio esplicito, se è stato assegnato, altrimenti è uguale all'inizio implicito. 8. Ogni elemento ha una /fine desiderata/. 9. La /durata desiderata/ di un elemento è la differenza tra la fine e l'inizio desiderati. 10. Ogni elemento ha un /inizio effettivo/. 11. Ogni elemento ha una /fine effettiva/. (NOTA: la fine effettiva di un elemento figlio non può mai seguire la fine effettiva del suo genitore.) 12. 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 <#Time_Model_Variables>. Determinazione dell'/inizio implicito/ di un elemento * L'inizio implicito del primo figlio dell'elemento "body" avviene quando il documento inizia a girare. Quando avviene questo si cade fuori dallo scopo di questo documento. * L'inizio implicito di un figlio di un elemento "par" è uguale all'inizio effettivo di un elemento "par". * L'inizio implicito del primo figlio di un elemento "seq" è uguale all'inizio effettivo dell'elemento "seq". * L'inizio implicito di ogni altro figlio dell'elemento "seq" è uguale al tempo finale desiderato del figlio precedente dell'elemento "seq". Determinazione della /fine implicita/ di un elemento La prima descrizione corrispondente all'elemento è quella che deve essere usata: * Un elemento con un attributo "repeat" con un valore "indefinite" ha la fine implicita immediatamente dopo il suo inizio effettivo. * Un elemento con un attributo "repeat" con un valore diverso da "indefinite" ha una fine implicita uguale alla fine implicita di un elemento seq con il numero dichiarato di copie dell'elemento senza l'attributo "repeat" come figlio. * Un elemento oggetto multimediale che si riferisce ad un oggetto multimediale continuo ha una fine implicita uguale alla somma dell'inizio effettivo dell'elemento e la durata intrinseca dell'oggetto multimediale. * Un elemento oggetto multimediale che si riferisce ad un oggetto multimediale discreto, come testo o immagine, ha la fine implicita immediatamente dopo il suo inizio effettivo. * Un elemento "seq" ha una fine inplicita uguale alla fine desiderata del suo ultimo figlio. * Un elemento "par" ha una fine implicita che dipende dal valore dell'attributo "endsync". La fine implicita è uguale alla somma dell'inizio effettivo dell'elemento "par" e della durata implicita che viene derivata come segue: o Se il valore dell'attributo "endsync" è "last", o se manca l'attributo "endsync", la durata implicita dell'elemento "par" è il massimo delle durate desiderate dei suoi figli. o Se il valore dell'attributo "endsync" è "first", la durata implicita dell'elemento "par" è il minimo delle durate desiderate dei suoi figli. o Se il valore dell'attributo "endsync" è un id-ref, la durata implicita dell'elemento "par" è uguale alla durata desiderata del figlio referenziato da "id-ref". Determinazione della /fine desiderata/ di un elemento * Se un elemento ha sia una durata esplicita che una fine esplicita, la fine desiderata è il minimo di: o la somma dell'inizio desiderato e della durata esplicita, e o la fine esplicita. * Se un elemento ha la durata esplicita ma non la fine esplicita, la fine desiderata è la somma dell'inizio desiderato e della durata esplicita. * Se un elemento ha la fine esplicita ma non la durata esplicita, la fine desiderata è uguale alla fine esplicita. * Altrimenti, la fine desiderata è uguale alla fine implicita. *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 <#Time_Model_Variables>. 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 * La fine effettiva dell'ultimo figlio di un elemento body è dipendente dal player. La fine effettiva è ritardata almeno quanto la fine desiderata, ma se è in ulteriore ritardo è dipendente dall'implementazione. * La fine effettiva di un un figlio di un elemento "par" può essere derivata come segue: o Se il figlio ha un attributo "fill" e il valore di questo attributo è "freeze", la fine effettiva dell'elemento figlio è uguale alla fine effettiva del padre. L'ultimo stato dell'elemento viene mantenuto sullo schermo fino alla fine effettiva dell'elemento. o Se il figlio ha un attributo "fill", e il valore di questo attributo è "remove", la fine effettiva dell'elemento figlio è il minimo della fine effettiva del padre e la fine desiderata dell'elemento figlio. o Se il figlio non ha un attributo "fill", la fine effettiva del figlio dipende dal fatto che il figlio abbia o meno una durata o una fine esplicita . + Se il figlio ha una durata o una fine esplicite, la fine effettiva viene determinata come se l'elemento avesse un attributo "fill" con valore "remove". + Se il figlio non ha una durata esplicita e nemmeno una fine esplicita, la fine effettiva viene determinata come se l'elemento avesse un attributo "fill" con valore "freeze". * La fine effettiva dell'ultimo figlio di un elemento "seq" viene derivato nello stesso modo come la fine effettiva di un figlio di un elemento "par". * La fine effettiva di ogni altro figlio di un elemento "seq" può essere derivato come segue: o Se il figlio ha un attributo "fill" e il suo valore è "freeze", la fine effettiva dell'elemento figlio è uguale all'inizio effettivo dell'elemento successivo o Se il figlio ha un attributo "fill" e il suo valore è "remove", la fine effettiva dell'elemento figlio è il minimo dell'inizio effettivo dell'elemento successivo e la fine desiderata dell'elemento figlio successivo. o Se l'elemento figlio non ha un attributo "fill", la fine effettiva del figlio dipende dal fatto che il figlio abbia o meno una durata o una fine esplicite + Se il figlio ha una durata o una fine esplicite, la fine effettiva viene determinata come se l'elemento avesse un attributo "fill" con valore "remove" + Se il figlio non ha nè una durata esplicita nè una fine esplicita, la fine effettiva viene determinata come se l'elemento avesse un attributo "fill" con valore "freeze". 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 <#test>) 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 in modo che venga scelto almeno un oggetto all'interno dello (a meno che questo non sia esplicitamente non desiderato). Le implementazioni non dovrebbero selezionare arbitrariamente un oggetto all'interno di 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 <#smil> title Definito nella Sezione 3.3.1 <#region> 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 <#a> animation Definito nella Sezione 4.2.3 <#media-object> audio Definito nella Sezione 4.2.3 <#media-object> img Definito nella Sezione 4.2.3 <#media-object> par Definito nella Sezione 4.2.1 <#par> ref Definito nella Sezione 4.2.3 <#media-object> seq Definito nella Sezione 4.2.2 <#seq> switch Definito nella Sezione 4.3 <#switch> text Definito nella Sezione 4.2.3 <#media-object> textstream Definito nella Sezione 4.2.3 <#media-object> video Definito nella Sezione 4.2.3 <#media-object> 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 <#layout> 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: