# XML/SMIL

XML
Copertina Tutti i moduli · Sviluppo
PrefazioneXML/Prefazione
* IntroduzioneXML/Introduzione
* Entità singoleXML/Entità singole
* Strutture dati di baseXML/Strutture dati di base
* Relazione uno-moltiXML/Relazione uno-molti
* Relazione uno-unoXML/Relazione uno-uno
* Relazione molti-moltiXML/Relazione molti-molti
* Relazioni ricorsiveXML/Relazioni ricorsive
* Schemi di datiXML/Schemi di dati
* Document Type Definition (DTD)XML/DTD
* XHTMLXML/XHTML
* XPathXML/XPath
* XLinkXML/XLink
* CSSXML/CSS
* XSLT e fogli di stileXML/XSLT e fogli di stile
* CocoonXML/Cocoon
* Parsing di file XMLXML/Parsing di file XML
* XULXML/XUL
* Asynchronous JavaScript and XML (AJAX)XML/AJAX
* Web serviceXML/Web service
* XMLHttpRequestXML/XMLHttpRequest
* Database e XMLXML/Database e XML
* SVGXML/SVG
* VoiceXMLXML/VoiceXML
* DocBookXML/DocBook
* SMILXML/SMIL
* XBRLXML/XBRL
* WDDX
* RPCXML/RPC
* RDFXML/RDF - Resource Description Framework
* RSSXML/RSS
* NamespaceXML/Namespace
* Gestire XML con MySQL
* XML EncryptionXML/XML Encryption
* XQueryXML/XQuery
* XML e JDBC
* XFormsXML/XForms
* OpenOffice.org e l'OpenDocument FormatXML/OpenOffice.org e l'OpenDocument Format
* KML e Google EarthXML/KML
* Lo standard ACORD - XML nel settore delle assicurazioniXML/ACORD
Modifica il sommario
Obiettivi di apprendimento
* Comprendere i fondamenti di SMIL.
* Scoprire come e perché viene utilizzato SMIL.
* Individuare e usare specifiche tecniche SMIL, tutorial e strumenti SMIL open source.
* Creare un semplice markup SMIL.
* Aprire un file SMIL con un visualizzatore SMIL.
Con il crescere della popolarità di internet alla fine degli anni novanta, il World Wide Web Consortium (W3C) ha sentito la necessità di estendere le capacità del web per quanto riguardava la presentazione dei media e la struttura delle informazioni che li riguardano. È così che è nato XML, un linguaggio estensibile per descrivere la struttura delle informazioni. Anche SMIL è basato su XML: è un linguaggio specializzato per descrivere la presentazione di oggetti multimediali. Poiché nessuno sa con certezza quali saranno i tipi di media che si useranno in futuro (ambienti virtuali, esperienze di sincronizzazione con onde cerebrali, ologrammi), XML è stata una scelta appropriata nella progettazione di SMIL, perché lo rende estensibile e in grado di adattarsi a supportare anche nuovi oggetti multimediali.
Al fine di integrare questa tecnologia con HTML ed estendere l'applicazione dei media in HTML, il W3C ha deciso di spingere verso la modularizzazione di questi linguaggi o protocolli. SMIL è uno dei molti linguaggi modulari che si inseriscono nel più ampio framework di XML.

## Che cos'è SMIL?

SMIL è l'acronimo di Synchronized Multimedia Integration Language. È pensato come una versione standard e aperta di PowerPoint per Internet. SMIL è un linguaggio basato su XML, simile nell'aspetto all'HTML, che consente la creazione di presentazioni audiovisive interattive. SMIL consente lo streaming di audio e video con immagini, testo o altri tipi di media. È un linguaggio che descrive il posizionamento temporale e spaziale di uno o più oggetti multimediali. Sebbene SMIL possa essere scritto con un semplice editor di testo, la scrittura manuale di documenti SMIL può richiedere molto tempo ed essere molto complicato. Pertanto è meglio ricorrere a un software apposito per generare documenti SMIL complicati.
Dal novembre 1997, il gruppo W3C SYMM sviluppa il linguaggio SMIL. Ha finalizzato SMIL 1.0 nel giugno del 1998 e SMIL 2.0 nell'agosto del 2001.

## Perché SMIL

Sebbene i plug-in e i lettori multimediali abbiano la capacità di mostrare molti tipi diversi di media con supporti variabili per quanto riguarda l'interazione, solo SMIL offre la possibilità di definire la presentazione sotto forma di testo come uno script. Questa è una capacità potente: le presentazioni testuali possono essere generate da altre applicazioni. Inoltre, SMIL offre opzioni di accessibilità e potenti funzionalità non presenti in altri lettori multimediali come
* RealAudio di Realplayer
* PowerPoint di Microsoft
* Impress di OpenOffice.org
* Quicktime di Apple
* Microsoft ha già creato un'alternativa proprietaria a SMIL. Si chiama Synchronized Accessible Media Interchange (SAMI) di Microsoft, che riproduce i file ASX tramite Windows Media Player (WiMP).
Dato che SMIL è estensibile, il linguaggio SMIL ha la capacità di mostrare molti oggetti proprietari che vengono utilizzati dai player di cui sopra. SMIL è stato progettato per essere il linguaggio standard per descrivere la presentazione di tutti i media, tutti i layout e i controlli interattivi. Pertanto, SMIL non sostituisce mpeg-4 o HTML, piuttosto è un nuovo standard per la descrizione e l'utilizzo di tutti questi.

## Storia di SMIL

SMIL è ancora in fase di sviluppo. Poiché SMIL è XML, il W3C ha sviluppato l'ultimo standard come addendum all'ibrido di XML e HTML (XHTML). Di seguito è riportato uno schema della storia di SMIL.
* La specifica SMIL 1.0 ha definito il layout e la sequenza temporale degli elementi multimediali.
* La specifica HTML+TIME ha introdotto i controlli di temporizzazione, collegamento, media e contenuto agli elementi HTML.
* La specifica SMIL 2.0 ha aggiunto interattività (ovvero: HTML+TIME) come collegamento e controlli multimediali.
* La proposta BHTML includeva transizioni da utilizzare in SMIL 2.0
* La specifica XHTML+SMIL ha esteso le funzionalità SMIL 2.0 agli elementi XHTML.
* SMIL 2.1 è diventato una raccomandazione del W3C nel 2005.
* SMIL 3.0, presentato nel 2006, è diventato una raccomandazione del W3C nel 2008.
Quando sarà realizzato e implementato nei browser web, XHTML+SMIL sarà in grado di definire come controllare gli elementi multimediali. HTML supporta solo immagini e collegamenti statici. I browser web utilizzano i plug-in per mostrare video e altri oggetti multimediali, quindi il controllo e l'interazione degli oggetti è lasciato all'implementazione dei plug-in. Con XHTML+SMIL, gli oggetti supportati possono essere posizionati, spostati o visualizzati in base a un intervallo di tempo, interagendo con controlli personalizzati e collegati ad altri oggetti multimediali, pagine web o presentazioni. E poiché XML è estensibile, il supporto per nuovi oggetti multimediali è all'orizzonte. Questa tecnologia ha il potenziale per rendere il World Wild Web molto più interattivo, consentendo agli sviluppatori un controllo molto maggiore sulle presentazioni.
L'attuale SMIL 3.0 è abbastanza completo. È diviso in moduli che descrivono diversi aspetti della presentazione. Ad esempio, esiste un modulo di struttura per descrivere la struttura dello stesso documento SMIL e un modulo di metadati per descrivere ciò che contiene il documento SMIL. La modularità è utile per estendere gli schemi SMIL quando necessario, senza causare interazioni indesiderate con gli elementi in altri moduli.

## Implementazione di SMIL
### Implementazioni comuni

* Presentazioni su Internet o Intranet.
* Presentazioni con slide show.
* Presentazioni che si collegano ad altri file SMIL.
* Presentazioni con pulsanti di controllo (stop, start, next ecc...)
* Definizione di sequenze e durata degli elementi multimediali.
* Definizione della posizione e della visibilità degli elementi multimediali.
* Visualizzazione di più tipi di media come audio, video, testo.
* Visualizzazione di più file contemporaneamente.
* Visualizzazione di file da più server web.
Attualmente, l'utilizzo più diffuso di SMIL è con MMS. MMS (Multimedia Messaging System) è una tecnologia per dispositivi mobili che viene utilizzata come un contenitore per l'invio di messaggi multimediali ai telefoni cellulari. Il contenuto SMIL viene inserito nel messaggio MMS insieme a tutti i file binari multimediali associati. In questo contesto, MMS è una sorta di meccanismo di trasporto per SMIL.

### File SMIL e tipi MIME

* I file SMIL hanno l'estensione *.smil (ma possono anche avere *.sml, *.smi)
* I file SMIL contengono tag e contenuti necessari per mostrare una presentazione. Ciò include il layout degli elementi multimediali, la sequenza temporale degli elementi e la fonte dei file multimediali.
Affinché uno user agent MIME riconosca i file SMIL, è necessario definire lo user agent:
* application/smil [deprecato]
* application/smil+xml [tipo MIME corrente]
* application/xhtml+smil [tipo MIME per incorporare smil in XHTML]
Quando si aggiunge questo nuovo tipo MIME a un browser, la definizione dovrà includere l'estensione "smil".

### Dichiarazioni del namespace SMIL

I file SMIL 3.0 devono avere la seguente dichiarazione del namespace nel tag <smil> iniziale:
Se nessun namespace predefinito è dichiarato all'interno dell'elemento radice <smil>, il documento verrà elaborato come SMIL 1.0.

## Sintassi SMIL
### Linee guida e regole

I documenti SMIL assomigliano molto all'HTML. I file SMIL devono essere scritti in base alle seguenti regole:
* I documenti SMIL devono seguire le regole XML per essere ben formati.
* I tag SMIL fanno distinzione tra maiuscole e minuscole.
* Tutti i tag SMIL sono scritti con lettere minuscole .
* I documenti SMIL devono iniziare con un tag <smil> e terminare con un tag di chiusura </smil>.
* I documenti SMIL devono contenere un tag <body> per memorizzare i contenuti della presentazione.
* I documenti SMIL possono avere un elemento <head> (come HTML) per la memorizzazione di informazioni sui metadati sul documento stesso, nonché informazioni sul layout di presentazione.

### Modello SMIL

Un semplice file SMIL sarà dunque:
Ecco quindi un esempio SMIL con testo e un'immagine:
Si noti che quando si utilizza il testo in linea anziché fare riferimento a un file di testo normale separato, sarà necessario codificare il testo per tutti i caratteri non alfanumerici. Questo esempio usa '% 20' nelle righe {13,14,15} come carattere spazio. Inoltre, nella riga {13} l'origine del contenuto del testo inizia con data: text/plain. In SMIL 2.0 questo è il tipo mime predefinito per le fonti di testo, quindi specificarlo qui è facoltativo. In SMIL 1.0, tuttavia, questo dovrebbe essere specificato per utilizzare il testo incorporato.

## Moduli SMIL 2.0

In SMIL 2.0 la descrizione delle funzionalità del linguaggio è divisa in dieci moduli. Ogni modulo contiene elementi per descrivere struttura, contenuto, azioni o attributi. I seguenti 10 moduli sono associati al namespace SMIL 2.0.
* Timing
* Manipolazioni temporali
* Animazione
* Controllo dei contenuti
* Layout
* Collegamento
* Oggetti multimediali
* Metainformazione
* Struttura
* Transizioni
Il modulo timing fornisce una struttura per stabilire se gli elementi devono essere visualizzati contemporaneamente, in sequenza o in ordine sparso e chiamati da eventi come un clic su un collegamento ipertestuale.
Il modulo di manipolazione del tempo offre la possibilità di associare oggetti multimediali con informazioni relative al tempo, come la durata di tempo in cui un oggetto multimediale deve essere visualizzato e una descrizione della linea temporale utilizzata come quadro di riferimento per il modulo di temporizzazione.
Il modulo di animazione consente di posizionare oggetti multimediali su una linea temporale definita.
Il modulo di controllo del contenuto consente di scegliere quali contenuti vengono riprodotti, a seconda di elementi come la lingua e la capacità di riproduzione.
Il modulo di layout contiene elementi che descrivono il posizionamento spaziale degli oggetti multimediali nella presentazione.
Il modulo di collegamento descrive collegamenti ipertestuali e riferimenti di collegamento a oggetti multimediali.
Il modulo oggetti multimediali descrive il percorso degli oggetti multimediali.
Il modulo di metainformazione contiene elementi che descrivono meta-informazioni sul file SMIL stesso o sugli oggetti multimediali in esso contenuti.
Il modulo struttura è un framework per descrivere la struttura del file SMIL.
Il modulo transizioni è un framework per descrivere le transizioni nella presentazione di oggetti multimediali.

## Visualizzazione di un file SMIL

Per visualizzare una presentazione SMIL, un client dovrà disporre di un lettore SMIL installato sul proprio computer. Attualmente, Quicktime di Apple, Windows Media Player (WiMP) e RealNetworks RealPlayer sono tra i lettori multimediali più popolari.
Sarebbe conveniente poter mostrare questi file SMIL direttamente nel browser, eliminando la necessità di un lettore o di un plug-in SMIL apposito. Il progetto open source Mozilla sta lentamente incorporando SMIL e altre tecnologie correlate a XML come SVG e MathML nei loro browser, ma i progressi sono lenti. È possibile che stiano aspettando che maturino questi linguaggi basati su XML.

## Incorporamento di file SMIL in pagine XHTML

Come accennato, SMIL non è ancora supportato dai browser, quindi per inserire SMIL in una pagina web è necessario incorporarlo e aprirlo con un plug-in. L'incorporazione di file SMIL in pagine web va oltre lo scopo di questo capitolo. Tuttavia, se hai bisogno di farlo, i seguenti collegamenti sono inclusi come riferimenti per aiutarti.
* Incorporare un file SMIL è facile da fare con il lettore multimediale Quicktime di Apple.
* Utilizzare Windows Media Player per visualizzare i file SMIL in una pagina web su un browser non IE.
* Il browser Internet Explorer 5.5+ ha il supporto per SMIL.
* Visita questa pagina di W3Schools per i dettagli su come utilizzare SMIL in pagine Web solo IE.

## SMIL per telefoni

Come accennato, SMIL è spesso utilizzato nei telefoni cellulari di ultima generazione e negli smartphone. I produttori hanno vari tipi di supporti per gli MMS (servizio di messaggistica multimediale), ma generalmente gli MMS utilizzano SMIL per definire il layout dei contenuti multimediali. Se il messaggio MMS contiene un file SMIL, includerà altri oggetti multimediali, che possono essere di testo o binari (qui il testo viene trattato come un oggetto multimediale o un file a cui fare riferimento in un file smil).
Solo una nota generale sugli MMS: l'industria delle telecomunicazioni aveva bisogno di un sistema per inviare messaggi multimediali da telefono a telefono, da computer a telefono o da telefono a computer. MMS è un sistema standard internazionale per questi scopi. SMIL è stato adottato perché era un linguaggio standard ben definito per descrivere il layout e la tempistica del contenuto all'interno dei messaggi MMS. Aderendo a questi (e altri) standard sviluppati dal 3GPP in collaborazione con l'European Telecommunications Standards Institution (ETSI) e il W3C, l'industria è stata in grado di garantire l'interoperabilità di nuovi servizi tra i fornitori, offrendo vantaggi reciproci e pari opportunità.

## Strumenti SMIL e informazioni SMIL

I seguenti sono collegamenti utili a strumenti gratuiti e open source, progetti SMIL attuali, specifiche ed esercitazioni:
* Pagina SMIL ufficiale del W3C
* X-Smiles - basato su Java, "un browser XML aperto per dispositivi esotici". Supporta XSLT, XSLFO, SMIL, XForms e SVG.
* Ambulant's Open SMIL Player
* Tutorial di W3school su SMIL
* PerlySMIL è uno script per la generazione di file SMIL da perl.
* LimSee2 è un'applicazione Java open source per la generazione di SMIL. Diverse dipendenze Java relative ai media devono essere installate correttamente prima che LimSee2 funzioni correttamente.

## SMIL in Netbeans?

Si può creare un file SMIL in Netbeans proprio come si crea un file XML. Basta digitare il codice e salvarlo come file SMIL. È possibile verificarne la correttezza, ma la convalida potrebbe essere più complicata. Come accennato in precedenza, SMIL richiede una dichiarazione del namespace, quindi è bene non dimenticarla.

## Note

* ↑ http://www.w3.org/TR/SMIL-access/