Una delle potenzialità dei linguaggi XML modulari, è la possibilità di fondere moduli provenienti da linguaggi di versi per integrarne le funzionalità. Il profilo XHTML+SMIL integra tutti i moduli di XHTML con alcuni moduli di SMIL, ad esempio quelli relativi alla sincronizzazione, alle animazioni, agli effetti di transizione.
In questo modo è possibile costruire pagine XHTML il cui contenuto vari dinamicamente nel tempo. Ciò funziona, ovviamente, se si naviga il web con un browser capace di interpretare il profilo XHTML+SMIL.
Prendiamo in considerazione un esempio molto semplice, ecco un documento XHTML:
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Esempio pagina XHTML</title>
</head>
<body>
<div>Esempio XHTML</div>
<div>by Dott. Alessandro Meo</div>
</body>
</html>
Per integrare in questo documento le funzionalità SMIL dobbiamo innanzitutto cambiare la dichiarazione del DOCTYPE
, specificando il profilo XHTML+SMIL
; in più è necessario dichiarare un namespace che faccia riferimento alle funzionalità SMIL, nel nostro caso il namespace smil
:
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+SMIL //EN"
"http://www.w3.org/2001/SMIL20/WD/xhtmlplussmil.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:smil="http://www.w3.org/2001/SMIL20">
<head>
<title>Esempio pagina XHTML+SMIL</title>
</head>
<body>
<div>Prova XHTML+SMIL</div>
<div>By Dott. Alessandro Meo</div>
</body>
</html>
Ora non ci resta che inserire nel corpo del documento gli elementi e gli attributi SMIL preceduti dal namespace “smil” precedentemente dichiarato:
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+SMIL //EN"
"http://www.w3.org/2001/SMIL20/WD/xhtmlplussmil.dtd"&g
t;
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:smil="http://www.w3.org/2001/SMIL20">
<head>
<title>Esempio pagina XHTML+SMIL</title>
</head>
<body>
<smil:seq repeatCount="indefinite">
<div smil:dur="2">Prova XHTML+SMIL</div>
<div smil:dur="2">By Dott. Alessandro Meo</div>
</smil:seq>
</body>
</html>
Il profilo XHTML+SMIL, oltre ad fondere gli elementi e gli attributi di due linguaggi, definisce alcuni attributi aggiuntivi.
Particolarmente interessante è timeContainer, che permette ad un qualsiasi elemento XHTML di funzionare come un elemento <par>
, <seq>
o <excl>
di SMIL. Ad esempio possiamo fare in modo che un elemento <div>
di XHTML funzioni come un elemento <par>
di SMIL.
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+SMIL //EN"
"http://www.w3.org/2001/SMIL20/WD/xhtmlplussmil.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:smil="http://www.w3.org/2001/SMIL20">
<head>
<title>Esempio pagina XHTML+SMIL</title>
</head>
<body>
<smil:seq repeatCount="indefinite">
<div smil:dur="2">Prova XHTML+SMIL</div>
<div smil:dur="2">By Dott. Alessandro Meo</div>
<div timeContainer="par">
<span smil:begin="0.5" smil:dur="3">www</span>
<span smil:begin="1" smil:dur="3">.</span>
<span smil:begin="1.5" smil:dur="3">meoale</span>
<span smil:begin="2" smil:dur="3">.</span>
<span smil:begin="2.5" smil:dur="3">it</span>
</div>
</smil:seq>
</body>
</html>
Purtroppo non esiste ancora un browser che implementi in modo pulito il profilo XHTML+SMIL, l’unica soluzione, per vedere all’opera gli esempi illustrati sopra, è modificarli secondo l’implementazione di XHTML+SMIL presente in Internet Explorer (dalla versione 5.5 in su) ed utilizzare tale browser per visualizzarli.