Document PDF - PUMA

Transcript

Document PDF - PUMA
C
Consiglio Nazionale delle Ricerche
Synchronized Multimedia Integration
Language (SMIL) 1.0:
Specifiche
W3C Recommendation 15 giugno 1998
P. Andronico
IAT B4-01/2001
Technical Report
Gennaio 2001
Istituto per le Applicazioni Telematiche
C
Consiglio Nazionale delle Ricerche
Synchronized Multimedia Integration
Language (SMIL) 1.0:
Specifiche
W3C Recommendation 15-giugno-1998
Traduzione e note di
Patrizia Andronico
[email protected]
Technical Report
IAT-B4-2001-001
24 gennaio 2001
Istituto per le Applicazioni Telematiche
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 [email protected].
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
INDICE
NOTE ALLA SPECIFICA di SMIL 1.0 ......................................................7
Circa questo documento................................................................... 10
Introduzione................................................................................... 11
Stato di questo documento ............................................................... 11
Lingue disponibili ............................................................................ 11
Errata............................................................................................ 11
Tabella dei contenuti ....................................................................... 12
1. Approccio alla specifica................................................................. 13
2. L'elemento smil........................................................................... 14
3. L'intestazione del documento (head) .............................................. 15
3.1 L'elemento head ..................................................................... 15
3.2 L'elemento layout ................................................................... 15
3.3 Il linguaggio base di layout di SMIL ........................................... 16
3.3.1 L'elemento region.............................................................. 17
3.3.2 L'elemento root-layout ....................................................... 20
3.4 L'elemento meta ..................................................................... 21
4. Il Corpo del documento (Body)...................................................... 23
4.1 L'elemento body ..................................................................... 23
4.2 Elementi di sincronizzazione ..................................................... 24
4.2.1 L'elemento par .................................................................. 24
4.2.2 L'elemento seq.................................................................. 30
4.2.3 Elementi Oggetto di tipo multimediale: gli elementi ref,
animation, audio,img, video,text e textstream ............................... 33
4.2.4 Il modello di tempo di SMIL ................................................ 36
Determinazione dell'inizio implicito di un elemento ......................... 37
Determinazione della fine implicita di un elemento ......................... 38
Determinazione della fine desiderata di un elemento....................... 38
Determinazione dell'inizio effettivo di un elemento ......................... 39
Determinazione della fine effettiva di un elemento.......................... 39
4.3 L'elemento switch ................................................................... 40
4.4 Attributi di test ....................................................................... 41
4.5 Elementi di hyperlink ............................................................... 46
4.5.1 L'elemento a..................................................................... 47
4.5.2 L'elemento anchor ............................................................. 50
5. La DTD di SMIL ........................................................................... 54
5.1 Relazione con XML .................................................................. 54
5.2 DTD ...................................................................................... 54
Riferimenti ..................................................................................... 60
Appendice ...................................................................................... 62
Estensioni di SMIL 1.0................................................................... 62
L'uso di SMIL 1.0 come estensione.................................................. 63
NOTE ALLA SPECIFICA di SMIL 1.0
Questo documento contiene una traduzione della Specifica SMIL 1.0 (Synchronized
Multimedia Integration Language) disponibile alla URL
http://www.w3c.it/office/traduzioni/REC-smil-it.html.
SMIL (pronuncia "smail") Synchronized Multimedia Integration Language è un
linguaggio di markup sviluppato dal Syncronized Multimedia Working Group (SYMM
WG) del World Wide Web Consortium (W3C). Il linguaggio è scritto come applicazione
XML 1.0 (eXstensible Markup Language) e permette la sincronizzazione e
l'integrazione di diversi tipi di oggetti multimediali quali streaming audio e video,
immagini, testo e altro, all'interno di uno stesso documento. SMIL è stato progettato
in modo che gli autori possano scrivere i loro file con un semplice editor testuale,
senza dover utilizzare uno specifico tool. L'estensione di un file SMIL è .smi.
Come ogni linguaggio di markup, anche il file .smi deve avere un tag iniziale e finale
che identifica il linguaggio usato nel documento. Nel nostro caso il documento SMIL
inizia e termina con i tag <smil> e </smil>. Poiché è un linguaggio derivato da XML i
tag devono sempre avere il tag di chiusura (<b> </b>) o terminare con la sola slash
"/", laddove non è previsto il tag finale.
La parte di head compresa fra i tag <head> </head> oltre a definire le informazioni
relative all'autore, la versione del documento, ecc., definisce anche il rendering degli
elementi presenti nel body del documento, attraverso uno speciale tag di (<layout>
</ layout>). All'interno del head vengono definite le dimensioni delle finestre per
ciascun oggetto multimediale della presentazione, attraverso coordinate in pixel.
Segue quindi la parte body, all'interno della quale possono essere presenti due tag
speciali per la sincronizzazione degli oggetti multimediali: par (parallelo) e seq
(sequenziale).
Possibili applicazioni di questo linguaggio sono:
• sincronizzazione di testo parlato e fotografie scattate con una macchina digitale;
• corsi di aggiornamento in cui devono essere presenti contemporaneamente voce e
immagini;
• presentazioni di diapositive su Web scritte in HTML.
Attualmente il SYMM WG ha presentato la Specifica SMIL 2.0
(http://www.w3.org/TR/smil20/) che è in fase di Last Call Working Draft e che dovrebbe
diventare una proposta di una nuova raccomandazione nel Maggio prossimo.
La versione elettronica di questa traduzione è disponibile sul sito dell'ufficio del W3C
alla URL http://www.w3c.it/office/traduzioni/REC-smil-it.html.
Nella traduzione si è cercato di rendere il più possibile fruibile l'italiano senza togliere
niente alla comprensione. In certi casi i termini inglesi non sono stati tradotti perché
parole ormai in uso quotidiano nel nostro vocabolario tecnico o perché appartenenti
alla sintassi del linguaggio. L'unica versione ufficiale di questo documento è la
versione originale in inglese (http://www.w3.org/TR/REC-smil/).
Per maggiori informazioni sul lavoro e l'attività del Syncronized Multimedia Working
Group è possibile fare riferimento alla URL http://www.w3.org/AudioVideo/. Una mailing
list pubblica di discussione sul linguaggio SMIL è attiva all'indirizzo [email protected].
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.
SMIL 1.0
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 ([email protected])
10
Patrizia Andronico
Introduzione
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 [email protected].
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.
11
SMIL 1.0
Tabella dei contenuti
1 Approccio alla specifica
2 L'elemento smil
3 L'intestazione del documento (head)
3.1 L'elemento head
3.2 L'elemento layout
3.3 Il linguaggio di layout di base di SMIL
3.3.1 L'elemento region
3.3.2 L'elemento root-layout
3.4 L'elemento meta
4 Il corpo del documento (body)
4.1 L'elemento body
4.2 Elementi di sincronizzazione
4.2.1 L'elemento par
4.2.2 L'elemento seq
4.2.3 L'elemento oggetto multimediale: elementi ref, animation, audio,
img, video, text e textstream
4.2.4 Il modello di tempo di SMIL
4.2.4.1 Valori del modello di tempo
4.2.4.2 Determinare i valori del modello di tempo per gli elementi
di SMIL 1.0
4.3 L'elemento switch
4.4 Attributi di test
4.5 Elementi di hyperlink
4.5.1 L'elemento a
4.5.2 L'elemento anchor
5 La DTD di SMIL
5.1 Relazione con XML
5.2 DTD
Appendice
Estensioni di SMIL 1.0
L'uso di SMIL 1.0 come estensione
12
Patrizia Andronico
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.
13
SMIL 1.0
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
14
Patrizia Andronico
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>
15
SMIL 1.0
<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".
16
Patrizia Andronico
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
anchor
animation
body
head
img
layout
meta
par
region
ref
root-layout
seq
smil
switch
text
textstream
video
{display:block}
{display:block}
{display: block;
{display: block}
{display: none}
{display: block;
{display: none}
{display: none}
{display: block}
{display: none}
{display: block;
{display: none}
{display: block}
{display: block}
{display:block}
{display: block;
{display: block;
{display: block;
position: absolute}
position: absolute}
position: absolute}
position: absolute}
position: absolute}
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>
17
SMIL 1.0
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à "backgroundcolor" 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
18
Patrizia Andronico
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 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".
19
SMIL 1.0
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.
20
Patrizia Andronico
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
21
SMIL 1.0
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.
22
Patrizia Andronico
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
23
SMIL 1.0
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
24
Patrizia Andronico
è 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>
Figura 4.1: Uso del valore di delay all'interno di un elemento "par"
<seq>
<audio src="audio1" />
<audio begin="5s" src="audio2" />
</seq>
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>
Figura 4.3: Attributo di sincronizzazione con il valore di evento dell'elemento
25
SMIL 1.0
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:
•
first
Per una definizione della semantica di questo attributo vedere Sezione
4.2.4.
•
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.
•
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
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.
26
Patrizia Andronico
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).
27
SMIL 1.0
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).
a) sincronizzazione forte: ritardo nel video: se l'audio viene bloccato o si abbassa
qualche riquadro del video. Il comportamento esatto è dipendente
dall'implementazione.
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
Hours
Minutes
Seconds
Fraction
Timecount
2DIGIT
DIGIT
::= Full-clock-val | Partial-clock-val | Timecount-val
::= Hours ":" Minutes ":" Seconds ("." Fraction)?
::= Minutes ":" Seconds ("." Fraction)?
::= Timecount ("." Fraction)?
("h" | "min" | "s" | "ms")? ; default is "s"
::= 2DIGIT; any positive number
::= 2DIGIT; range from 00 to 59
::= 2DIGIT; range from 00 to 59
::= DIGIT+
::= DIGIT+
::= DIGIT DIGIT
::= [0-9]
Quelli che seguono sono esempi legali di valori di clock:
•
28
Valore totale di clock: 02:30:03 = 2 ore, 30 minuti e 3 secondi
Patrizia Andronico
•
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
Event-source
Event
::= "id(" Event-source ")(" Event ")"
::= Id-value
::= "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
29
SMIL 1.0
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:
30
Patrizia Andronico
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
31
SMIL 1.0
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
32
Patrizia Andronico
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
33
SMIL 1.0
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
Smpte-type
Smpte-val
Hours
Minutes
Seconds
Frames
Subframes
::= Metric "=" ( Clock-val | Smpte-val )
::= Smpte-type | "npt"
::= "smpte" | "smpte-30-drop" | "smpte-25"
::= Hours ":" Minutes ":" Seconds
[ ":" Frames [ "." Subframes ]]
::= 2DIGIT
::= 2DIGIT
::= 2DIGIT
::= 2DIGIT
::= 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"
34
Patrizia Andronico
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
35
SMIL 1.0
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.
36
Patrizia Andronico
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 elemento.
3. 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.
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".
37
SMIL 1.0
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:
•
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.
•
Se il valore dell'attributo "endsync" è "first", la durata implicita
dell'elemento "par" è il minimo delle durate desiderate dei suoi figli.
•
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:
•
la somma dell'inizio desiderato e della durata esplicita, e
•
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
38
Patrizia Andronico
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
•
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:
•
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.
•
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.
•
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:
•
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
•
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.
•
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
39
SMIL 1.0
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) 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
40
Patrizia Andronico
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.
41
SMIL 1.0
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.
42
Patrizia Andronico
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
43
SMIL 1.0
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.
...
44
Patrizia Andronico
<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"/>
45
SMIL 1.0
<!-- 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
46
Patrizia Andronico
(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
47
SMIL 1.0
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:
•
"replace": La presentazione attuale è bloccata al suo stato corrente e viene
sostituita dalla risorsa di destinazione. Se il player offre un meccanismo di
storia passata, la presentazione sorgente riprende dallo stato in cui era stata
bloccata quando l'utente ritorna a questo.
•
"new": La presentazione della risorsa di destinazione ha inizio in un nuovo
contesto che non influisce sulla risorsa sorgente.
•
"pause": La presentazione sorgente viene messa in pausa al suo stato attuale e
la risorsa destinazione inizia in un nuovo contesto. Quando termina la
visualizzazione della risorsa destinazione, la presentazione sorgente riprende
dallo stato in cui era stata posta in pausa.
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
48
Patrizia Andronico
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
49
SMIL 1.0
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
50
Patrizia Andronico
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
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
51
SMIL 1.0
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
52
Patrizia Andronico
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>
53
SMIL 1.0
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 <[email protected]>
Sjoerd Mullender
<[email protected]>
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
54
Patrizia Andronico
">
<!--======== 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)
%skip-attr;
"hidden"
<!--=================== Root-layout Element
================================-<!ELEMENT root-layout EMPTY
<!ATTLIST root-layout
%id-attr;
%title-attr;
55
SMIL 1.0
%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;)*
56
Patrizia Andronico
<!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
57
SMIL 1.0
repeat
CDATA
%fill-attribute;
%sync-attributes;
%system-attribute;
'1'
"
<!-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
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ATTLIST
<!ATTLIST
<!ATTLIST
<!ATTLIST
<!ATTLIST
<!ATTLIST
<!ATTLIST
ref
%mo-content;
audio
%mo-content;
img
%mo-content;
video
%mo-content;
text
%mo-content;
textstream %mo-content;
animation
%mo-content;
ref
%mo-attributes; %clip-attrs;
audio
%mo-attributes; %clip-attrs;
video
%mo-attributes; %clip-attrs;
animation
%mo-attributes; %clip-attrs;
textstream %mo-attributes; %clip-attrs;
text
%mo-attributes;
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;
58
Patrizia Andronico
%sync-attributes;
coords
CDATA
#IMPLIED
59
SMIL 1.0
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.
60
Patrizia Andronico
[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/
61
SMIL 1.0
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:
•
Tutti gli elementi introdotti nelle estensioni devono avere un attributo "skipcontent" (definito nella Sezione 3.3.1) dovrebbe essere possibile che il loro
contenuto sia processato dai player di SMIL 1.0
•
Le estensioni private decono essere introdotte usando la sintassi specificata nei
namespace di XML.
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
62
Patrizia Andronico
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
63
SMIL 1.0
64