XML Ing. Alberto Massari [email protected].

84
XML Ing. Alberto Massari [email protected] t

Transcript of XML Ing. Alberto Massari [email protected].

Page 1: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

XMLIng. Alberto Massari

[email protected]

Page 2: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Programma del seminario

• Origine di XML: SGML & HTML

• XML

• Namespaces

• XSLT

• XML & Multimedia: VRML, SVG, SMIL

Page 3: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Le origini di XML - SGML

• Tutto comincia nel 1986 con lo sviluppo di SGML, uno standard ISO (ISO 8879:1986) per la definizione formale di documenti

• SGML significa Standard Generalized Markup Language; le sue caratteristiche sono i “markup” ed il fatto che è “generalizzato”

Page 4: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Cosa sono i “markup”?

• I markup sono annotazioni associate al testo del documento

• Consentono di specificare lo scopo del testo, in modo da abilitare l’analisi del testo da parte di processi automatici

• I markup sono riconoscibili perché racchiusi tra parentesi acute (“<tag>”)

Page 5: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

SGML è generalizzato

• SGML è un metalinguaggio

• Ogni documento SGML deve essere corredato da una DTD (“Document Type Definition”) che specifica quali tag sono definiti ed in che ordine possono comparire all’interno del documento

Page 6: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Esempio di DTD SGML<!ELEMENT pub - - (journal | supplement)+ ><!ATTLIST pub version CDATA #REQUIRED ><!ELEMENT journal - O (journal.title, sub.journal.title?,(byline | (editor+, (address? &

trailer?)))*, cover?, rhr?, rhv?,(abstracts | announcements | article | case-report| contents | correction | editorials | cme | filler | index | letters | research-report | reviews | pdf-only)+)>

<!ATTLIST journal ID ID #IMPLIED ISSN CDATA #REQUIRED

DOCTOPIC CDATA #IMPLIED DOCSUBJ CDATA #IMPLIED >

Page 7: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Esempio di SGML

<!DOCTYPE pub SYSTEM “pub.dtd”>

<pub version=“1.0”>

<journal ISSN=“0.134.xxx”>

<journal.title>Journal of Medicine

</journal.title>

<reviews>…</reviews>

</journal>

<journal…

Page 8: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

HTML• HTML (HyperText Markup Language) è

una applicazione SGML• Le prime DTD cominciano ad essere scritte

nei primi anni ’90; la RFC 1886 del Novembre 1995 codifica HTML 2.0 (non è mai esistita HTML 1.0)

• Sostanzialmente consente di inserire in un testo dei markup che specificano come quel testo deve essere visualizzato (bold, corsivo, font, colore….)

Page 9: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Esempio di HTML<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN“><HTML><BODY> <H1>First Header</H1> <P>This is a

paragraph. Technically, end tags are not required for paragraphs, although they are allowed. You can include character highlighting in a paragraph. <EM>This sentence of the paragraph is emphasized.</EM> Note that the &lt;/P&gt; end tag has been omitted. </BODY></html>

Page 10: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Pregi di HTML

• Consente di pubblicare documenti sul Web in un formato “open” che non necessita di applicazioni specifiche (Word, PDF,…)

• E’ un formato di testo, e può essere indicizzato dai motori di ricerca

• Consente di collegare con hyperlinks testi collegati

• Consente di avere testo e grafica

Page 11: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Difetti di HTML

• Estendibile solo attraverso l’introduzione di nuovi tag (comprensibili solo da alcuni browser): es. frame, object

• La sintassi non è “pulita”: i tag sono case-insensitive, le virgolette attorno agli attributi sono opzionali, alcuni tag possono non avere il tag di chiusura

• E’ decisamente un linguaggio di visualizzazione

Page 12: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Usare HTML per visualizzare dati

Supponiamo di voler pubblicare una lista di alberghi su un sito web: ad esempio, questa è una pagina di Expedia.it

Page 13: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Usare HTML per visualizzare dati (2)

• La pagina è fruibile solo da un utente umano; ad esempio, la categoria dell’albergo è indicata dalla ripetizione del tag <img>

• Il costo totale è indicato nella quarta colonna della tabella; non solo, il numero di colonne è variabile in funzione del numero di giorni di permanenza

• In conclusione, un “agente software” non potrebbe usare queste informazioni in maniera affidabile

serve un HTML per i dati

Page 14: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

XML• Nel 1996 si comincia a parlare di XML (eXtensible

Markup Language), e viene ratificato dal W3C nel febbraio 1998 (http://www.w3.org/TR/REC-xml/)

• Sostanzialmente è SGML reso usabile: viene tolta molta della flessibilità di questo linguaggio, rendendo più semplice creare parser ed applicazioni.

• E’ disegnato in modo da rendere facile “annotare” dati; la semantica delle annotazioni (cioè la DTD) è lasciata ad altre specifiche

Page 15: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Le regole di XML

• XML è case-sensitive• Gli attributi vanno delimitati da ‘ o “• I tag vanno sempre chiusi (<tag>..</tag> oppure

<tag/> se non hanno contenuto)• I tag devono essere innestati correttamente

(<tag><tag1></tag></tag1> non è un valido XML)• La DTD non è più obbligatoria, ma opzionale• I tipi di dati vengono ridotti drasticamente

(praticamente resta il tipo stringa, gli ID, i riferimenti ad ID)

Page 16: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Esempio di XML

<?xml version=“1.0” encoding=“utf-8”?>

<!-- Questo è un commento -->

<books>

<book>

<title xml:lang=“en”>The humane interface</title>

<subtitle>New directions…</subtitle>

<author>Jef Raskin</author>

<publisher>Addison-Wesley</publisher>

<abstract>

<![CDATA[This unique guide…]]>

</abstract>

</books>

Page 17: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I componenti di XML

• I tag racchiusi tra <? e ?> sono processing instructions; contengono direttive indirizzate all’applicazione che legge il file XML. La direttiva “xml” è l’unica codificata nelle specifiche e serve per indicare la versione di XML usata dal documento, e la codifica dei caratteri (utf-8 è una versione compatta di Unicode; altre codifiche usate sono “latin-1”, “shift-jis”, etc…)

• Le direttive che la applicazione non conosce vanno ignorate

Page 18: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Codifica dei caratteri

• Gli uomini vedono dei simboli grafici e leggono delle parole

• Il computer vede dei numeri• La relazione tra un numero ed un simbolo grafico

e’ stabilita da una codifica• La piu’ nota e’ la codifica ASCII (1963), che usa

numeri a 7 bit (da 0 a 127) per rappresentare l’alfabeto occidentale, i numeri arabi e la punteggiatura piu’ comune

Page 19: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

La tabella dei codici ASCII

Page 20: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

E gli altri?

• La codifica ASCII va bene per la lingua inglese, ma ignora le lettere accentate italiane, i caratteri tedeschi come ß e ë, quelli nordici come Ø, il greco, il russo, l’ebraico, il giapponese, l’arabo….

• La prima soluzione fu di inventare delle “code-page” in cui una sequenza di numeri rappresentasse un carattere

• Come conseguenza, il carattere π e’ rappresentato dal numero 0xF0 nella code page greca usata sui computer Sun, ma dalla sequenza 0x83 0xCE nella code page usata sui computer Windows

• Quindi, data una sequenza di numeri, non e’ possibile sapere con certezza quali caratteri sono codificati, se non viene fornita la tabella di conversione

Page 21: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Unicode

• Il consorzio Unicode e’ stato formato nel 1991 per codificare una volta per tutte ogni possibile carattere e simbolo di punteggiatura, assegnandogli un numero univoco (chiamato codepoint)

• La attuale versione, 5.1, definisce 100.713 codepoints• Per codificarli servono 21 bits (da 0x0 a 0x10FFFF); si

parla quindi di UTF-32 se ogni codepoint viene rappresentato da 32 bit, UTF-16 se si usano 16 bit (usando sequenze di 2 numeri per i pochi caratteri che hanno i primi 5 bit diversi da 0), UTF-8 se si usano 8 bit per carattere (usando sequenze da 2 a 6 numeri per i caratteri che non appartengono all’alfabeto occidentale)

Page 22: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I componenti di XML (2)

• I commenti sono racchiusi tra <!-- e -->• Al suo interno si può trovare qualsiasi testo,

anche su più righe, purchè non contenga “-->”

• Il suo contenuto viene ignorato dalla applicazione che legge il file XML

• Quindi contiene testo indirizzato ad una persona

Page 23: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I componenti di XML (3)

• Un file XML può contenere solo un tag al livello principale (denominato “root”)

• La struttura del file è quindi:– Processing instruction “xml”– Commenti ed altre processing instructions– Root del documento– Altri commenti e processing instructions

• Il tutto può essere inframezzato con spazi, tab e/o newlines (“whitespace”)

Page 24: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I componenti di XML (4)

• Il tag “<books>” è detto “elemento”• Gli elementi devono cominciare con un “<” seguito

subito da una lettera o dal carattere “_”; può quindi proseguire con lettere, numeri, ed alcuni simboli di punteggiatura come “–” o “.”

• Dopo il nome può seguire uno spazio ed una lista di “attributi”, definiti da un nome, il simbolo “=” ed un valore racchiuso tra apici singoli o doppi

• Se il valore dell’attributo contiene lo stesso tipo di apici usati per racchiuderlo, questi vanno codificati usando &quot; e &apos;

Page 25: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I componenti di XML (5)

• Al di fuori dello spazio delimitato da < e > si trova il “testo”; come per i valori degli attributi, se il testo deve contenere i simboli “<” e “>”, questi vanno codificati come &lt; e &gt;

• Se occorre inserire il carattere “&”, si deve usare &amp;

Page 26: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I componenti di XML (6)

• Se c’è la necessità di scrivere un lungo testo pieno di caratteri speciali, si può racchiuderlo all’interno di una sezione CDATA, delimitata tra <![CDATA[ e ]]>

• Come per i commenti, al suo interno si può scrivere di tutto, tranne la stringa ]]>

Page 27: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I componenti di XML (7)

• I vari &apos;, &quot;, &lt;, &gt;, &amp; sono entity predefinite

• Un documento XML può contenere anche entità numeriche tipo &#x20; (per indicare il carattere Unicode 0x20, lo spazio) o &#32; se si usa la notazione decimale

• Altre entità possono essere definite all’interno della DTD, e possono rappresentare sia singoli caratteri (&copy; per il simbolo “©”), frammenti di XML (&signature; per “<b>Alberto</b> Massari”) o interi documenti XML da includere

Page 28: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Riassunto

• XML può quindi essere usato per annotare dati scritti in qualunque lingua ed essere “consumato” sia da utenti umani che da software

• La “X” sottolinea la estensibilità del linguaggio; aggiungere nuovi dati racchiusi in un nuovo tag fa sì che le “vecchie” applicazioni ignorino quella informazione, mentre le “nuove” ne beneficiano

Page 29: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Namespaces

• Quasi subito ci si rese conto che non si potevano “mischiare” files XML codificati da DTD differenti

• Cioè, una DTD definisce un “dominio” all’interno del quale è corretto che dentro ad un “book” ci sia un “title”, uno o più “author” e così via

• Ad esempio, in un altro dominio, “title” potrebbe venir usato per indicare quale titolo dare ad una persona (“Mr”, “Dott”, “Avv”…)

Page 30: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Namespaces (2)

• Un anno dopo, nel gennaio 1999, il W3C pubblica le specifiche dei Namespaces (http://www.w3.org/TR/REC-xml-names/)

• Stabilisce che ogni elemento è incluso dentro un namespace, definito da una URI (Uniform Resource Identifier, vedi RFC 2396)

• Visto che le URL (Uniform Resource Locator) sono URI valide (sostanzialmente sono URI che contengono in sé l’informazione sulla locazione dove la risorsa si trova), spesso si usano URL per definire i namespaces

Page 31: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Namespaces (3)

• I namespace vengono dichiarati usando degli attributi speciali, che cominciano con xmlns

• xmlns:p=“http://www.my.com/schema” definisce che il namespace associato con il prefisso “p” è definito dalla URI “http://www.my.com/schema”

• Se la definizione manca del prefisso (se cioè si usa xmlns=“http://www.my.com/schema”) si definisce il namespace di default

• N.B.: la URI è il “nome” del namespace; non è detto che quell’indirizzo esista o che ci si trovi la DTD che lo definisce, anche se questo di solito è quello che succede

Page 32: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Namespaces (4)

• Il carattere “:” viene dichiarato illegale all’interno dei tag (sia per gli elementi che per gli attributi) ed usato per separare il tag in due parti: un namespace prefix ed un local name

• Scrivendo <p:book> si intende dire che questo “book” vive all’interno del namespace associato con il prefisso “p”

• E’ quindi possibile mischiare all’interno dello stesso file XML dati anche diversi tra di loro senza rischi di ambiguità

Page 33: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Esempio di XML con Namespace

<b:books xmlns:b=“urn:library:ver:1.0” xmlns:n=“urn:names:gov”>

<b:book> <b:title xml:lang=“en”>The humane

interface</b:title> <b:author n:full=“Jef Raskin”> <n:first>Jef</n:first> <n:last>Raskin</n:last> </b:author> </b:book>... </b:books>

Page 34: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

XSLT: il cerchio si chiude

• Abbiamo visto come HTML serva per annotare un testo con informazioni “tipografiche”

• Abbiamo visto come XML serva per annotare dei dati con informazioni “semantiche”

• Adesso vorremmo prendere dei dati (codificati in XML) e mostrarli su video (usando HTML)

• Per fare ciò si usa XSLT (eXtensible Stylesheet Language Transformations)

Page 35: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

XSLT

• Il W3C pubblica le specifiche per XSLT nel novembre 1999 (http://www.w3.org/TR/xslt)

• XSLT è solo una parte di un progetto più ampio (XSL) rivolto alla comunità editoriale

• Un’altra parte importante è XSL-FO (Formatting Objects), che viene usata per specificare il layout di stampa di libri (ad es. un documento XSL-FO può essere convertito in un file PDF, o, se preferite, un file PDF può essere salvato in XSL-FO senza perdita di informazione)

Page 36: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

T come Trasformazione

• Uno stylesheet XSLT legge un file XML e a seconda di quale elementi o attributi incontra, decide quale trasformazione effettuare

• Il risultato viene scritto nel documento finale, quindi si procede ad un altro elemento o attributo

Page 37: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Riassunto

• Alla fine del 1999 lo scenario è quasi completo: esiste uno standard per archiviare/scambiare dati, ed un modo per ottenerne una o più rappresentazioni (completa, compatta, senza immagini per PDAs…)

• Le ditte possono cominciare a scambiarsi le informazioni come files XML (una volta che si mettono d’accordo su quel DTD usare), ed allo stesso tempo usare quegli stessi files per produrre il proprio sito web. E’ davvero una rivoluzione.

Page 38: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

“Dai un martello ad una persona, ed ogni problema gli sembrerà un

chiodo”

Page 39: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I “dialetti” di XML

• XML Schema: DTD++ in formato XML• XHTML: la versione XML-friendly di HTML 4.01• XLink/XPointer: collegamenti tra files XML• RDF/RSS/OWL: semantica dei contenuti• SOAP/ebXML/xBRL/WS-*: web services• XPath/XQuery: come cercare dentro dati XML• VoiceXML/SALT: text-to-speech• WML: l’HTML per i telefonini WAP

Page 40: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I “dialetti” di XML (2)

• MathML: rappresentare matematica• ThML: testi teologici• RELML: descrizione di case in vendita• OFX: informazioni finanziarie• XMPP: instant messaging• NeuroML/AnaML/GAME: informazioni mediche• XCI: trascrizioni dei processi nei tribunali• MML/MusicML: musica

Page 41: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

XML ed il multimedia

• Il mondo del multimedia non sta a guardare: fioriscono le iniziative che mirano ad usare XML per rappresentare i contenuti

• Ad esempio:– SVG per la grafica 2D vettoriale

– VRML/X3D per la grafica 3D

– SMIL per implementare slideshow (MMS)

– XMT per descrivere gli oggetti in una scena (MPEG-7)

Page 42: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Scalable Vector Graphics<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg width="300" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg">   <text x="10" y="100" style="fill:red;font-family:times;font-size:18">Primo esempio di SVG</text></svg>

Page 43: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Pregi di SVG

• E’ un formato vettoriale: a differenza di JPEG o GIF, il disegno non soffre quando viene scalato

• E’ un formato testo: può essere incluso in una pagina HTML senza bisogno di files accessori

• E’ un formato testo: può essere generato al volo tramite da un foglio XSLT a partire da un file XML contenente i dati

Page 44: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Le forme base

• Linea: <line x1=’10’ y1=’10’ x2=‘100’ y2=‘100’ style=‘…’/>• Polilinea: <polyline points=’10,10 50,50 90,100’ style=‘…’/>• Cerchio: <circle cx=’10’ cy=’10’ r=‘5’ style=’…’/>• Poligono: <polygon points=’10,10 50,50 90,100’ style=‘…’/>• Rettangolo: <rect x=’10’ y=’10’ rx=‘3’ ry=‘3’ width=‘100’

height=‘50’ style=‘…’/>

• Ellisse: <ellipse cx=‘100’ cy=‘100’ rx=’70’ ry=’50’ style=‘…’/>

Page 45: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I percorsi• Per rappresentare forme irregolari, si usa il comando path

<path d=‘M 10 10 L 100 100 L 200 100 Z’ style=‘…’/>

• La sintassi dell’attributo d è formata da:– M x,y vai al punto x,y– L x,y linea dal punto corrente a x,y– Z chiudi la forma– H x linea orizzontale fino a x– V y linea verticale fino a y– C x,y x,y x,y curva di Bezier– S x,y x,y curva di Bezier smussata– Q x,y x,y curva di Bezier quadratica– T x,y curva di Bezier quadratica smussata– A rx,ry… arco

• Se il comando è minuscolo, i valori di x e y sono relativi

Page 46: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Scrivere testo

• Per inserire frammenti di testo si usa text <text x=’10’ y=’20’>testo</text>

• La scritta può contenere elementi tspan per spezzarla su più righe

<text x=’20’ y=’10’> Testo 1<tspan x=’20’ dy=’20’>Testo 2</tspan> </text>

• Si possono specificare il font, l’allineamento, apice/pedice, la distanza tra le lettere e tra le parole

• Si può anche forzare il testo a seguire un path irregolare

Page 47: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Gli stili• Abbiamo visto come tutti gli elementi prevedano un

attributo style• Il suo valore è una stringa del tipo stile:valore;stile:valore• Gli stili possibili sono:

– fill il colore di riempimento– opacity il grado di trasparenza (0-1)– fill-rule come riempire aree interne– stroke il colore della linea di bordo– stroke-width lo spessore del bordo– stroke-dasharray lo stile del bordo– stroke-linecap come terminare le linee– stroke-linejoin come disegnare le giunzioni– display se l’oggetto sarà visualizzato

Page 48: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I gruppi

• Più elementi grafici possono essere riuniti in un gruppo, e manipolati come un elemento unico, usando l’elemento g

<g style=‘fill:green’> <circle cx=‘100’ cy=‘100’ r=’50’/> <rect x=‘200’ y=’50’ width=‘100’/></g>

• Un gruppo può contenere sottogruppi• Oltre a controllare lo stile, un gruppo può

effettuare trasformazioni vettoriali

Page 49: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Le trasformazioni vettoriali• Le trasformazioni sono specificate usando l’attributo transform che le elenca nell’ordine in cui vanno eseguite

• Sono possibili:– translate(tx,ty) traslazione rigida– scale(sx,sy) zoom– rotate(ra,cx,cy) rotazione di ra gradi– skewX(sa) rotazione del solo asse X– skewY(sa) rotazione del solo asse Y– matrix(a,b,c,d,e,f) trasforma l’oggetto usando la

matrice

Page 50: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I link• Come in HTML, i link esterni sono creati usando

un elemento a attorno all’oggetto da cliccare<a xlink:href=‘http://…’> <rect x=’10’ y=’10’ width=’60’ height=’30’/> <text x=’10’ y=’15’>Cliccami</text></a>

• Esistono anche i link interni; per realizzarli, l’oggetto da collegare deve avere un attributo id=‘nome’ che verrà collegato con un attributo xlink:href=‘#nome’

<path id=‘curva’ d=‘M …’/><text><textPath xlink:href=‘#curva’>Un testo su

una curva</textPath></text>

Page 51: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Gradienti e pattern (1)

• Abbiamo visto che per riempire le forme si usa l’attributo style, specificando fill:color o stroke:color

• Si possono anche definire degli stili di riempimento personalizzati, all’interno di un elemento defs e usarli usando un link interno

<defs> <linearGradient id=‘g1’> <stop offset=‘5%’ stop-color=‘#F60’/> <stop offset=’95%’ stop-color=‘#FF6’/> </linearGradient></defs><rect … style=‘fill:url(#g1)’/>

Page 52: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Gradienti e pattern (2)

• I gradienti lineari lavorano lungo un vettore 2D (di default orizzontale)

• I gradienti circolari usano un cerchio ed un punto focale

• Al loro interno si definiscono due o più “stop points” che definiscono i colori in certi punti; il resto della figura sarà riempito usando interpolazione

• I pattern definiscono degli “stampini” che verranno ripetuti allineati

Page 53: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Simboli

• All’interno di un elemento defs si possono anche definire dei simboli, usando l’elemento symbol

<defs> <symbol id=‘s1’> <rect …/> <text …>testo</text> </symbol></defs>

• In seguito si può usare l’elemento use per disegnarlo in una posizione specifica

<use x=‘100’ y=‘100’ xlink:href=‘#s1’ style=‘…’/>

Page 54: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Eventi e scripting

• Si può associare del codice a particolari eventi del mouse o della tastiera che coinvolgano certi oggetti grafici

• Il codice può accedere alla struttura del file XML e manipolarlo; ad esempio, creando nuovi oggetti, cambiando le proprietà grafiche (es. colore) di quelli esistenti, o la posizione

Page 55: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Animazione (1)

• Visto che ottenere animazioni usando lo scripting è complesso, SVG 1.1 include la parte di SMIL che definisce le animazioni

• animate è un elemento che, inserito all’interno della definizione di un oggetto, cambia il valore di un attributo in maniera lineare

<rect id="RectElement" x="300" y="100" width="300" height="100" fill="rgb(255,255,0)">

<animate attributeName="x" attributeType="XML" begin="0s" dur="9s" fill="freeze" from="300" to="0" />

Page 56: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Animazione (2)

• Altri tipi di animazione sono animateMotion, animateColor e animateTransform; il primo muove l’oggetto lungo il percorso indicato, il secondo cambia il colore ed il terzo cambia i parametri di una trasformazione/rotazione/scalamento

Page 57: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

EyesWeb XMI

• Il formato per salvare le patch in EyesWeb XMI è XML

• E’ un formato “aperto”, e permetterà a terze parti di creare editor o player su piattaforme attualmente non supportate

• Consente anche di esaminare e manipolare una patch in modi interessanti…

Page 58: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Synchronized Multimedia Integration Language

• SMIL (si pronuncia come “smile”) è stato sviluppato per rappresentare presentazioni multimediali interattive

• SMIL 1.0 è stato ratificato nel Giugno 1998• SMIL 2.0 è stato ratificato nell’Agosto 2001• Le cose che sa fare sono:

– posizionare oggetti mono-mediali sullo schermo– sincronizzarli– scegliere diversi componenti a seconda di lingua,

velocità di connessione, dimensioni schermo…

Page 59: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Moduli e profili• E’ suddiviso in moduli separati, in modo che parti

di SMIL possano essere integrati in altri linguaggi (es. XHTML+SMIL, SVG)

• Definisce dei “profili” che comprendono un numero di moduli obbligatori; ad esempio, definisce un “Basic Profile” adatto a telefonini, e un “Language Profile” adatto a player per PC

Page 60: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

SMIL 2.0

• SMIL 1.0 era una specifica di 30 pagine; SMIL 2.0 è 540 pagine

• Ci sono parecchi player disponibili, e qualche editor; vista la mole delle specifiche, i moduli supportati variano da un software all’altro, per cui se si vogliono creare presentazioni “avanzate” è meglio sapere come saranno visualizzate…

Page 61: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Gli ingredienti

• Raccogliere i media files/URL (video, audio, immagini)

• Decidere dove verranno visualizzati sul video

• Identificare gli elementi opzionali o sostituibili

• Stabilire il percorso ed i suoi tempi• Gestire l’interazione con l’utente

Page 62: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Un esempio: la TV• Quando si guarda la TV, si ha l’impressione di vedere un

unico stream multimediale, ma in realtà possiamo identificare:– Il filmato dell’evento (es. un incontro di boxe, il videoclip di

una canzone)– Il logo della rete televisiva– La voce fuori campo del presentatore– I sottotitoli per i non udenti– Varie scritte con informazioni (es. statistiche sull’evento

sportivo, curiosità sul cantante)

• Piuttosto che preparare un filmato preconfezionato, sarebbe utile mantenere separati i suoi componenti in modo da lasciare all’utente la libertà di attivarli o meno

Page 63: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Il formato di un file .smil

<smil xmlns=“http://www.w3.org/2001/SMIL20/Language”>

<head>

<meta name=“title” content=“Titolo”/>

<layout>...</layout>

</head>

<body>

...

</body>

</smil>

Page 64: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Definiamo il layout per un filmato di un incontro di boxe

<head> <layout> <root-layout id="video" width="159" height="120"

background-color="gray"/>

<region id="video" left="0" top="0" width="159" height="120" z-index="0"/>

<region id="comment" left="10" top="9" width="34" height="29" z-index="1"/>

<region id="stats" left="105" top="14" width="43" height="75" z-index="1"/>

<region id="title" left="12" top="99" width="113" height="15" z-index="1"/>

<region id="caption" left="29" top="90" width="102" height="20" z-index="1"/>

</layout></head>

Page 65: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Scalamenti

• Nel caso una immagine o un video non abbiano le stesse dimensioni della regione a cui è stata assegnata, il valore dell’attributo fit controlla come viene scalata– fill fa’ coincidere sia la x che la y (bleah!)– meet espande finché una coordinata coincide– slice espande finché la regione è tutta piena– hidden non fare nulla– scroll mostra un meccanismo per consentire lo scroll

Page 66: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

La sincronizzazione temporale

• Sequenza (seq)

• Parallelo (par)

• Esclusione (excl)

Page 67: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Scriviamo i titoli

• I titoli di apertura sono rappresentati da due immagini statiche, che vogliamo mostrare in sequenza per 3 secondi

<body>

<seq>

<img src="Intro-Names.gif" region="video“ dur="3s"/>

<img src="Intro-Date.gif" region="video" dur="3s"/>

</seq>

</body>0s

t3s 6s

Page 68: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I tipi di media

• Gli elementi che possono venire inseriti all’interno di un elemento di sincronizzazione dipendono dal player; quelli previsti sono– img

– video

– text

– audio

– animation

– ref

Page 69: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Impostare la durata..

• I valori temporali sono sempre riferiti ad un istante di tempo predefinito (l’inizio di par o excl, la fine del blocco precedente in un seq)

• Si può usare l’attributo dur, che specifica la durata

• Oppure i due attributi begin e end• Se nessun attributo è usato, si usa la durata del clip• Il valore di un attributo può essere relativo ad un

altro frammento (es. begin=“v1.end+2s”)

Page 70: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

..e la ripetizione

• Usando repeatCount e repeatDur si può far ripetere un frammento N volte (se c’è anche una durata esplicita verrà comunque troncato allo scadere del tempo) o, se hanno il valore “indefinite”, finché non termina il blocco di sincronizzazione in cui si trova il clip

Page 71: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Durata dei blocchi paralleli

• Un blocco parallelo normalmente termina quando l’ultimo componente ha finito

• Specificando <par endsync=“first”> termina appena ne termina uno

• Specificando<par endsync=“id(v1)”>termina quando termina il clip indicato

Page 72: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

I blocchi esclusivi

• I blocchi di tipo excl permettono la visualizzazione di uno solo dei suoi componenti; tipicamente i tag begin di questi conterranno riferimenti ad eventi

<par id="SimplePresentation"> <img src="..." id="ClickMe"/> <img src="..." id="NoClickMe"/> <excl> <audio src="..." begin="ClickMe.activateEvent"/> <audio src="..." begin="NoClickMe.activateEvent"/> </excl> </par>

Page 73: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Mostriamo il video ed i sottotitoli <par> <video src="LamottaRobinson51.avi" region="video"/> <seq begin="6s"> <img src="title-jake.gif" region="title"

dur="4s"/> <img src="title-sugar.gif" region="title"

begin="5s" dur="4s"/> </seq> </par>

t0 6 10 15 19

Page 74: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Gestiamo più lingue..

<par>

<switch>

<audio src="jake-ru.wav" system-language="ru"/>

<audio src="jake-fr.wav" system-language="fr"/>

<audio src="jake-en.wav"/>

</switch>

<img src="title-jake.gif" region="title" dur="4s"/>

</par>

Page 75: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

..e connessioni lente

<switch> <video src="LaMottaRobinson51-High.avi"

region="video" system-bitrate="56000"/><video src="LaMottaRobinson51-Low.avi" region="video"/>

</switch>

• Altri attributi sono system-captions, system-overdub-or-caption, system-required, system-screen-size, system-screen-depth

• Un clip può specificare più attributi

Page 76: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Links (1)• Come già visto per HTML e SVG, si possono

creare links usando l’elemento a

<a show="new" href="archives-dcab.smi"> <video src="zoomin.mpg" region="V-Main"/></a>

• L’attributo show può avere il valore– new apri in una nuova finestra– pause metti in pausa questo clip– replace sostituisci questa presentazione con la

nuova

• Se href punta ad un frammento (es. “part1.smil#VI) quella presentazione comincia in quel punto, come se si fosse usato fast forward

Page 77: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Links (2)

• L’elemento a può avere anche gli attributi external (apri con un programma esterno) e target (mostra la presentazione in una regione di questa presentazione, cioè picture-in-picture)

Page 78: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Links (3)

• Si possono anche definire link associati a parti (spaziali o temporali) di un video, usando area

<video src="advertisements.mpg" dur="01:30">

<area href="http://advertiser1.com/" begin="00:00" end="00:30"/>

  <area href="http://advertiser2.com/" begin="00:30" end="01:00"/>

  <area href="http://www.tv8.com/" coords=“90% 80% 100% 90%"/>

</video>

Page 79: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Aggiungiamo transizioni

• Le transizioni vanno definite nell’header, assegnandogli un id

• Esiste un tipo ed un sottotipo di transizione

• La transizione può essere “in avanti” o “all’indietro”

• Si può controllare il colore in cui la transizione sfuma

Page 80: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Usiamo le transizioni

• La transizione si applica usando gli attributi transIn e transOut di un clip, specificando l’id della transizione da usare

<head> <transition id=“fade_1” dur=“1s” type=“fade”/></head><body> <text region=“credits” transIn=“fade_1”

transOut=“fade_1”/></body>

Page 81: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Qualche esempio di transizione• barWipe• boxWipe• fourBoxWipe• barnDoorWipe• diagonalWipe• bowTieWipe• miscDiagonalWipe• veeWipe• barnVeeWipe• zigZagWipe• barnZigZagWipe

• irisWipe• triangleWipe• arrowHeadWipe• pentagonWipe• hexagonWipe• ellipseWipe• eyeWipe• roundRectWipe• starWipe• miscShapeWipe• clockWipe

Page 82: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

Animazioni

• Le animazioni sono realizzate tramite gli elementi animate, animateColor e animateMotion

• Il loro comportamento lo abbiamo già incontrato in SVG

Page 83: XML Ing. Alberto Massari alby@infomus.dist.unige.it.

MMS SMIL• Un telefonino abilitato alla visione degli MMS dovrebbe

essere in grado di comprendere un documento SMIL che abbia istruzioni appartenenti ai seguenti moduli:– BasicContentControl, SkipContentControl, PrefetchControl – BasicLayout (niente regioni innestate, o multiple finestre)– BasicLinking, LinkingAttributes – BasicMedia, MediaClipping, MediaAccessibility,

MediaDescription – Metainformation – Structure – BasicInlineTiming, MinMaxTiming, BasicTimeContainers,

RepeatTiming, EventTiming (niente excl, o più istanti di inizio/fine, o riferimenti a ore assolute)

– BasicTransitions