eXtensible Markup Language Tutorial - by Marco Giannì
Capitolo V: Applicazioni dell'XML

Struttura di un file CDF

Un file CDF deve essere preparato dall'amministratore del canale; contiene tutte le informazioni sul canale e tutte le informazioni su come il client deve eseguire lo smart pull. Vediamo un semplice esempio di file CDF:

<?XML version="1.0"?>
<CHANNEL HREF="http://www.miosito.com/index.html"
  LASTMOD="1998-07-07T12.00"
  LEVEL="2"
  PRECACHE="YES">
  <TITLE>Il mio sito</TITLE>

  <ABSTRACT>Nel mio sito potete trovare informazioni molto utili su tutto</ABSTRACT>
  <SCHEDULE>
   <INTERVALTIME DAY="1"/>
  </SCHEDULE>
  <LOGO HREF="http://www.miosito.com/images/logo.gif" STYLE="IMAGE"/>
</CHANNEL>

La prima istruzione specifica che il file CDF è un documento XML. A questo proposito, MSIE 4 include al suo interno un processore XML scritto in C++ per interpretare i file CDF. Channel è l'elemento root; l'attributo Href identifica il canale (tramite URL). L'attributo Lastmod specifica la data dell'ultimo aggiornamento del canale quindi devono essere scaricate tutte le pagine che sono state modificate dopo le ore dodici del 7 Luglio 1998; l'attributo Level specifica che devono essere scaricate anche tutte la pagine collegate alle pagine del canale (fino al secondo livello). Infine l'attributo Precache specifica che il contenuto scaricato deve essere memorizzato nella cache del client. L'elemento Title contiene il titolo del canale e l'elemento Abstract una descrizione dettagliata del suo contenuto. L'elemento Schedule serve per specificare al client la frequenza degli aggiornamenti; nell'esempio il client sa che ogni giorno sono disponibili nuovi aggiornamenti.

Per specificare la frequenza in base alla quale un canale deve essere aggiornato, è possibile utilizzare un programma (schedule). È possibile utilizzare anche l'attributo Hour:

<SCHEDULE>
  <INTERVALTIME HOUR="12"/>
  <ERLIESTTIME HOUR="1"/>
  <LATESTTIME HOUR="2"/>
</SCHEDULE>

Il codice riportato specifica che gli aggiornamenti si verificano ogni dodici ore (in generale il primo aggiornamento parte sempre a mezzanotte). Per evitare che il server subisca degli overload nelle ore specificate (nell'esempio a mezzanotte e a mezzogiorno), l'amministratore del canale inserisce anche gli elementi Earliesttime e Latesttime, che obbliga il client a collegarsi fra l'una e le due e fra le tredici e le quattordici (naturalmente le ore sono riferite a questo esempio).

In Schedule è possibile specificare anche gli attributi Startdate e Stopdate per specificare la data di inizio e di fine del programma:

<SCHEDULE STARTDATE="1998-01-01" STOPDATE="1998-12-31">
  <INTERVALTIME DAY="1"/>
</SCHEDULE>

Infine l'elemento Logo associa al canale un'immagine; l'attributo Style specifica le dimensioni dell'immagine:

Value Size

"ICON" 16H x 16W

"IMAGE" 32H x 80W

"IMAGE-WIDE" 32H x 194W

Se un canale è diviso in varie sezioni, è possibile impostare delle gerarchie nel file CDF. L'elemento root Channel può contenere altri elementi Channel; ogni elemento Channel può contenere degli elementi Item. Vediamo un esempio:

<?XML VERSION="1.0"?>
<CHANNEL BASE="http://www.stream.it/iechannel/" HREF="home/stream.htm">
  <TITLE>I Canali Stream</TITLE>
   <ABSTRACT>I canali Stream: intrattenimento, viaggi, news... 
    e molto altro!</ABSTRACT>
   <LOGO HREF="images/80x32.gif" STYLE="IMAGE"/>
   <SCHEDULE>
    <INTERVALTIME DAY="1"/>
    <EARLIESTTIME HOURS="6"/>
   </SCHEDULE> 

 <CHANNEL HREF="games/news/gamenews.htm">
   <TITLE>InGame</TITLE>
    <ABSTRACT>Giochi sempre nuovi, insieme a tutte le news dal mondo ludico</ABSTRACT>
    <LOGO HREF="games/16_ingame.ico"STYLE="ICON"/>
   <ITEM HREF="games/fotomisteriosa/fotomisteriosa.html" 
    LASTMOD="1997.09.30T14:49+0100" PRECACHE="YES" LEVEL="1">
   <TITLE>La foto misteriosa</TITLE>
    <ABSTRACT>Confrontati con questo rompicapo... Buon divertimento</ABSTRACT>
    <LOGO HREF="games/fotomisteriosa/icona.ico" STYLE="ICON"/>
   </ITEM>
 </CHANNEL> 

 <CHANNEL HREF="plugintv/root.htm">
  <TITLE>PlugINTV</TITLE>
   <ABSTRACT>La televisione a portata di click</ABSTRACT>
   <LOGO HREF="plugintv/16_plugintv.ico" STYLE="ICON"/>
 </CHANNEL>

 <CHANNEL HREF="cinema/default.htm">
  <TITLE>Cinematografo</TITLE>
   <ABSTRACT>Cinematografo: tutto sui nuovi film nelle sale
    e in videocassetta</ABSTRACT>
   <LOGO HREF="cinema/16_cinematografo.ico" STYLE="ICON"/>
 </CHANNEL>

 <CHANNEL HREF="tecnologia/default.htm">
  <TITLE>Tecnologia</TITLE>
   <ABSTRACT>Informazioni sulle ultime novità della tecnologia</ABSTRACT>
   <LOGO HREF="tecnologia/16_tecnologia.ico" STYLE="ICON"/>
 </CHANNEL>

 <CHANNEL HREF="viaggi/viagginews.htm">
  <TITLE>Canale Viaggi</TITLE>
   <ABSTRACT>Viaggi, con informazioni su paesi e itinerari consigliati</ABSTRACT>
   <LOGO HREF="viaggi/16_canaleviaggi.ico" STYLE="ICON"/>
 </CHANNEL>

 <ITEM HREF="meteo/default.htm" LASTMOD="1997.09.30T14:06+0100"
  PRECACHE="YES" LEVEL="1">
 <TITLE>Meteo</TITLE>
  <ABSTRACT>Previsioni meteorologiche sull'Italia e l'Europa 
   aggiornate costantemente</ABSTRACT>
  <LOGO HREF="16_meteo.ico" STYLE="ICON"/>
 </ITEM>
</CHANNEL>

L'attributo Base dell'elemento root Channel specifica l'URL di tutti gli elementi innestati (Channel e Item). Ogni elemento innestato ha chiaramente il suo URL relativo. Per ogni elemento innestato può essere specificato oltre all'URL relativo, il titolo (Title), la descrizione dettagliata (Abstract) e il logo (Logo). Gli attributi dell'elemento Item sono Href, Lastmode, Precache e Level (già descritti per l'elemento Channel). Questo file CDF di esempio viene visualizzato da MSIE 4 nella barra dei canali come in Fig. 5.1.

Fig. 5.1: Esempio di file CDF visualizzato nella barra dei canali di MSIE.

<indietro home page avanti>

Copyright © 2000-2005. Tutti i diritti sono riservati. Per informazioni: mgianni@infinito.it