13 Oggetti, immagini e applet

Sommario

  1. Introduzione a oggetti, immagini e applet
  2. Inserire un'immagine: l'elemento IMG
  3. L'inclusione generica: l'elemento OBJECT
    1. Regole per la riproduzione di oggetti
    2. Inizializzazione di oggetti: l'elemento PARAM
    3. Schemi globali per la denominazione di oggetti
    4. Dichiarazioni e istanzazioni di oggetti
  4. Includere un applet: l'elemento APPLET
  5. Note sui documenti incorporati
  6. Mappe immagine
    1. Mappe immagine sul lato cliente: gli elementi MAP e AREA
    2. Mappe immagine sul lato server
  7. Presentazione visuale di immagini, oggetti e applet
    1. Larghezza e altezza
    2. Spazio bianco intorno a immagini e oggetti
    3. Bordi
    4. Allineamento
  8. Come specificare un testo alternativo

13.1 Introduzione a oggetti, immagini e applet

Le caratteristiche multimediali di HTML consentono agli autori di includere nelle loro pagine immagini, applet (programmi che sono automaticamente scaricati ed eseguiti sulla macchina dell'utente), brani video ed altri documenti HTML.

Ad esempio, per includere un'immagine PNG in un documento, gli autori possono scrivere:

<BODY>
<P>Ecco un primo piano del Gran Canyon:
<OBJECT data="canyon.png" type="image/png">
Questo è un <EM>primo piano</EM> del Gran Canyon.
</OBJECT>
</BODY>

Le precedenti versioni di HTML consentivano agli autori di includere immagini (tramite IMG) e applet (tramite APPLET). Questi elementi hanno numerose limitazioni:

Per risolvere questi problemi, HTML 4 introduce l'elemento OBJECT, che offre una soluzione globale per l'inclusione generica di oggetti. L'elemento OBJECT consente agli autori che scrivono HTML di specificare tutto ciò che è necessario ad un oggetto per la sua presentazione da parte di un programma utente: codice sorgente, valori iniziali e dati per l'esecuzione. In queste specifiche il termine "oggetto" è usato per descrivere le cose che le persone desiderano inserire nei documenti HTML; altri termini comunemente usati per queste cose sono: applet, plug-in, gestori di media, ecc.

Il nuovo elemento OBJECT comprende pertanto alcune delle funzioni svolte dagli elementi esistenti. Si consideri il seguente grafico di funzionalità:

Tipo di inclusione Elemento specifico Elemento generico
Immagine IMG OBJECT
Applet APPLET (Disapprovato.) OBJECT
Un altro documento HTML IFRAME OBJECT

Il diagramma indica che ciascun tipo di inclusione ha una soluzione specifica ed una generale. L'elemento generico OBJECT servirà come soluzione per implementare futuri tipi di media.

Per includere immagini, gli autori possono usare l'elemento OBJECT o l'elemento IMG.

Per includere applet, gli autori dovrebbero usare l'elemento OBJECT dal momento che l'elemento APPLET è disapprovato.

Per includere un documento HTML all'interno di un altro, gli autori possono usare sia il nuovo elemento IFRAME sia l'elemento OBJECT. In entrambi i casi il documento incorporato rimane indipendente dal documento principale. I programmi utente di tipo visuale possono presentare il documento incorporato in una finestra distinta all'interno del documento principale. Si consultino le note sui documenti incorporati per un confronto tra OBJECT e IFRAME per quanto riguarda l'inclusione di documenti.

Immagini ed altri oggetti inclusi possono avere collegamenti ipertestuali associati con essi, sia attraverso il meccanismo di collegamento standard sia anche attraverso le mappe immagine. Una mappa immagine specifica regioni geometriche attive di un oggetto incluso e assegna un collegamento a ciascuna regione. Quando attivati, questi collegamenti possono causare il recupero di un documento, possono eseguire un programma sul server, ecc.

Nelle sezioni successive, si discutono i vari meccanismi disponibili agli autori per inclusioni di oggetti multimediali e per creare mappe immagine per quelle inclusioni.

13.2 Inserire un'immagine: l'elemento IMG

<!-- Per evitare problemi con i programmi utente solo testuali
   come pure per rendere i contenuti immagine comprensibili e navigabili
   per gli utilizzatori di programmi utente non visuali, è necessario fornire
   una descrizione tramite ALT ed evitare mappe immagine sul lato server -->
<!ELEMENT IMG - O EMPTY                -- Immagine incorporata -->
<!ATTLIST IMG
  %attrs;                              -- %coreattrs, %i18n, %events --
  src         %URI;          #REQUIRED -- URI di immagine da incorporare --
  alt         %Text;         #REQUIRED -- breve descrizione --
  longdesc    %URI;          #IMPLIED  -- collegamento ad una descrizione estesa
                                          (integra alt) --
  name        CDATA          #IMPLIED  -- nome dell'immagine per l'uso da parte di script --
  height      %Length;       #IMPLIED  -- ridefinisce l'altezza --
  width       %Length;       #IMPLIED  -- ridefinisce la larghezza --
  usemap      %URI;          #IMPLIED  -- per l'uso con mappe immagine sul lato cliente --
  ismap       (ismap)        #IMPLIED  -- per l'uso con mappe immagine sul lato server --
  >

Marcatore iniziale: obbligatorio, Marcatore finale: proibito

Definizioni di attributo

src = uri [CT]
Questo attributo specifica la posizione di una risorsa immagine. Esempi di formati d'immagine ampiamente riconosciuti includono GIF, JPEG e PNG.
longdesc = uri [CT]
Questo attributo specifica un collegamento ad una descrizione estesa dell'immagine. Questa descrizione dovrebbe integrare la descrizione breve fornita usando l'attributo alt. Quando l'immagine ha una mappa immagine associata, questo attributo dovrebbe fornire informazioni sui contenuti della mappa immagine. Ciò è particolarmente importante per le mappe immagine sul lato server. Poiché un elemento IMG può essere all'interno del contenuto di un elemento A, il meccanismo nell'interfaccia del programma utente per accedere alla risorsa "longdesc" del primo deve essere differente dal meccanismo per accedere alla risorsa href del secondo.
name = cdata [CI]
Questo attributo designa l'elemento in modo che possa essere richiamato da fogli di stile o da script. Nota. Questo attributo è stato incluso per ragioni di compatibilità all'indietro. Le applicazioni dovrebbero usare l'attributo id per identificare gli elementi.

Attributi definiti altrove

L'elemento IMG incorpora un'immagine nel documento corrente alla posizione corrispondente alla definizione dell'elemento. L'elemento IMG non ha contenuto; esso è di solito rimpiazzato in riga dall'immagine designata dall'attributo src, con l'eccezione delle immagini allineate a sinistra o a destra, che "fluttuano" al di fuori della riga.

In un esempio precedente, abbiamo definito un collegamento ad una foto di famiglia. Qui inseriamo la foto direttamente nel documento corrente:

<BODY>
<P>Sono appena ritornato dalle vacanze! Ecco una foto della mia famiglia al lago:
<IMG src="http://www.unaditta.com/Gente/Gianni/vacanze/famiglia.png"
     alt="Una foto della mia famiglia al lago.">
</BODY>

Questa inclusione può anche essere ottenuta per mezzo dell'elemento OBJECT nel modo seguente:

<BODY>
<P>Sono appena ritornato dalle vacanze! Ecco una foto della mia famiglia al lago:
<OBJECT data="http://www.unaditta.com/Gente/Gianni/vacanze/famiglia.png"
        type="image/png">
Una foto della mia famiglia al lago.
</OBJECT>
</BODY>

L'attributo alt specifica il testo alternativo che è riprodotto quando l'immagine non può essere visualizzata (si veda più sotto per informazioni su come specificare un testo alternativo ). I programmi utente devono riprodurre il testo alternativo quando non possono supportare le immagini, quando non possono supportare un certo tipo di immagine o quando sono configurati per non visualizzare immagini.

L'esempio seguente mostra come l'attributo longdesc può essere adoperato per creare un collegamento ad una descrizione più ricca:

<BODY>
<P>
<IMG src="mappasito.gif"
     alt="Mappa del sito dei Laboratori HP"
     longdesc="mappasito.html">
</BODY>

L'attributo alt fornisce una descrizione breve dell'immagine. Questo dovrebbe essere sufficiente per consentire agli utenti di decidere se vogliono seguire il collegamento dato dall'attributo longdesc ad una descrizione più lunga, in questo caso "mappasito.html".

Si consulti la sezione sulla presentazione visuale di oggetti, immagini e applet per informazioni circa dimensione, allineamento e bordi di un'immagine.

13.3 L'inclusione generica: l'elemento OBJECT

<!ELEMENT OBJECT - - (PARAM | %flow;)*
 -- oggetto generico incorporato -->
<!ATTLIST OBJECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  declare     (declare)      #IMPLIED  -- dichiara, ma non istanzia, un indicatore [flag] --
  classid     %URI;          #IMPLIED  -- identifica un'implementazione --
  codebase    %URI;          #IMPLIED  -- URI di base per classid, data, archive--
  data        %URI;          #IMPLIED  -- riferimento ai dati dell'oggetto --
  type        %ContentType;  #IMPLIED  -- tipo di contenuto per i dati --
  codetype    %ContentType;  #IMPLIED  -- tipo di contenuto per la codifica --
  archive     CDATA          #IMPLIED  -- elenco di URI separato da spazi --
  standby     %Text;         #IMPLIED  -- messaggio da mostrare durante il caricamento --
  height      %Length;       #IMPLIED  -- ridefinisce l'altezza --
  width       %Length;       #IMPLIED  -- ridefinisce la larghezza --
  usemap      %URI;          #IMPLIED  -- per l'uso con mappe immagine sul lato cliente --
  name        CDATA          #IMPLIED  -- invia come parte di un modulo --
  tabindex    NUMBER         #IMPLIED  -- posizione in ordine di tabulazione --
  >

Marcatore iniziale: obbligatorio, Marcatore finale: obbligatorio

Definizioni di attributo

classid = uri [CT]
Quest'attributo può essere usato per specificare, tramite un URI, la posizione dell'implementazione di un oggetto. Può essere adoperato insieme con, o come un'alternativa a, l'attributo data, a seconda del tipo di oggetto interessato.
codebase = uri [CT]
Questo attributo specifica il percorso base usato per risolvere gli URI relativi specificati dagli attributi classid, data e archive. Quando assente, il suo valore predefinito è dato dall'URI base del documento corrente.
codetype = content-type [CI]
Questo attributo specifica il tipo di contenuto dei dati previsto quando si effettua lo scaricamento dell'oggetto specificato da classid. Questo attributo è facoltativo, ma raccomandato quando classid è specificato, dal momento che esso consente al programma utente di evitare il caricamento di informazioni per i tipi di contenuto non supportati. Quando assente, si assume come suo valore predefinito il valore dell'attributo type.
data = uri [CT]
Quest'attributo può essere usato per specificare la posizione dei dati di un oggetto, per esempio i dati immagine per oggetti che definiscono immagini, o, più genericamente, una forma serializzata di un oggetto, che può essere utilizzata per ricreare l'oggetto medesimo. Se dato come un URI relativo, dovrebbe essere interpretato come relativo rispetto all'attributo codebase.
type = content-type [CI]
Questo attributo specifica il tipo di contenuto dei dati indicati da data. Tale attributo è facoltativo ma raccomandato quando data è specificato, dal momento che esso consente al programma utente di evitare il caricamento di informazioni per i tipi di dati non supportati. Se il valore di questo attributo differisce dal Content-Type HTTP restituito dal server al momento in cui l'oggetto viene recuperato, il Content-Type HTTP ha la precedenza.
archive = uri-list [CT]
Questo attributo può essere usato per specificare un elenco suddiviso tramite spazi di URI, per archivi contenenti risorse attinenti all'oggetto, che possono includere le risorse specificate dagli attributi classid e data. Il precaricamento degli archivi produrrà di solito come risultato minori tempi di caricamento per gli oggetti. Gli archivi descritti come URI relativi dovrebbero essere interpretati come relativi rispetto all'attributo codebase.
declare [CI]
Quando presente, questo attributo booleano rende la definizione corrente di OBJECT una semplice dichiarazione. L'oggetto deve essere istanziato da una successiva definizione di OBJECT, che fa riferimento a questa dichiarazione.
standby = text [CS]
Questo attributo specifica un messaggio che un programma utente può rappresentare mentre sta caricando l'implementazione e i dati dell'oggetto.

Attributi definiti altrove

La maggior parte dei programmi utente possiede meccanismi incorporati per la rappresentazione di tipi di dati comuni quali testo, immagini GIF, colori, caratteri ed un piccolo numero di elementi grafici. Per rappresentare tipi di dati che essi non supportano nativamente, i programmi utente lanciano generalmente delle applicazioni esterne. L'elemento OBJECT consente agli autori di controllare se i dati debbano essere riprodotti esternamente oppure da un qualche programma, indicato dall'autore, che rappresenta i dati all'interno del programma utente.

Nella situazione più comune, può essere necessario per un autore specificare tre tipi di informazioni:

L'elemento OBJECT consente agli autori di specificare tutti e tre i tipi di dati, ma gli autori non devono specificarli necessariamente tutti e tre in una volta. Alcuni oggetti, per esempio, possono non richiedere dati (ad es. un applet autosufficiente che esegue una piccola animazione). Altri possono non richiedere un'inizializzazione al momento dell'esecuzione. Altri ancora possono non richiedere informazioni aggiuntive per l'implementazione: lo stesso programma utente, cioè, può già sapere come rappresentare quel certo tipo di dati (ad es., le immagini GIF).

Gli autori specificano l'implementazione di un oggetto e la posizione dei dati che devono essere riprodotti per mezzo dell'elemento OBJECT. Tuttavia, per specificare valori in vista dell'esecuzione, gli autori usano l'elemento PARAM, che è trattato nella sezione dedicata all'inizializzazione di un oggetto.

L'elemento OBJECT può apparire anche nel contenuto dell'elemento HEAD. Dal momento che i programmi utente generalmente non riproducono gli elementi all'interno di HEAD, gli autori dovrebbero accertarsi che nessuno degli elementi OBJECT all'interno di HEAD specifichi un contenuto che può essere riprodotto. Si consulti per favore la sezione sulla condivisione di dati tra frame per un esempio di inclusione dell'elemento OBJECT all'interno dell'elemento HEAD.

Si consulti per favore la sezione sui controlli nei moduli per informazioni circa gli elementi OBJECT nei moduli.

Questo documento non specifica il comportamento degli elementi OBJECT che usano sia l'attributo classid per identificare un'implementazione sia l'attributo data per specificare i dati relativi a quella implementazione. Al fine di garantire la portabilità, gli autori dovrebbero usare l'elemento PARAM per comunicare alle implementazioni dove recuperare i dati aggiuntivi.

13.3.1 Regole per la riproduzione di oggetti

Un programma utente deve interpretare un elemento OBJECT in base alle seguenti regole di precedenza:

  1. Il programma utente deve in primo luogo tentare di riprodurre l'oggetto. Esso dovrebbe non riprodurre i contenuti dell'elemento, ma esaminarli nel caso che l'elemento contenga dei discendenti diretti, che sono elementi PARAM (si veda inizializzazione di oggetti) o elementi MAP (si veda mappe immagine sul lato cliente).
  2. Se il programma utente non è in grado di riprodurre l'oggetto per qualsivoglia ragione (non configurato per, mancanza di risorse, architettura errata, ecc.), deve tentare di riprodurre i suoi contenuti.

Gli autori non dovrebbero includere negli elementi OBJECT dei contenuti che compaiono nell'elemento HEAD.

Nell'esempio seguente, inseriamo in un documento un applet che riproduce un orologio analogico tramite l'elemento OBJECT. L'applet, scritto nel linguaggio Python, non richiede dati aggiuntivi o valori per l'esecuzione. L'attributo classid specifica la posizione dell'applet:

    
<P><OBJECT classid="http://www.lamiamacchina.it/orologioanalogico.py">
</OBJECT>

Si noti che l'orologio viene riprodotto non appena il programma utente interpreta questa dichiarazione di OBJECT. È possibile ritardare la riproduzione di un oggetto dichiarando prima l'oggetto (come descritto più sotto).

Gli autori dovrebbero integrare questa dichiarazione includendo un testo alternativo per descrivere il contenuto di OBJECT, nel caso che il programma utente non sia in grado di riprodurre l'orologio.

    
<P><OBJECT classid="http://www.lamiamacchina.it/orologioanalogico.py">
Un orologio animato.
</OBJECT>

Una significativa conseguenza delle caratteristiche progettuali dell'elemento OBJECT è che esso offre un meccanismo per specificare la rappresentazione di oggetti alternativi; ciascuna dichiarazione incorporata di OBJECT può specificare tipi di contenuto alternativi. Se un programma utente non è in grado di riprodurre l'OBJECT più esterno, esso tenta di riprodurre i contenuti; questi possono essere costituiti da un altro elemento OBJECT, e così via.

Nell'esempio successivo, incorporiamo una serie di dichiarazioni di OBJECT, per illustrare come operano le riproduzioni alternative. Un programma utente tenterà di riprodurre il primo elemento OBJECT di cui sia capace, nel seguente ordine: (1) un applet della Terra scritta nel linguaggio Python, (2) un'animazione in formato MPEG della Terra, (3) un'immagine GIF della Terra, (4) del testo alternativo.

<P>                 <!-- Innanzitutto prova l'applet Python -->
<OBJECT title="La Terra vista dallo spazio" 
        classid="http://www.observer.mars/Terra.py">
                    <!-- Altrimenti prova il video MPEG -->
  <OBJECT data="Terra.mpeg" type="application/mpeg">
                    <!-- Oppure prova l'immagine GIF -->
    <OBJECT data="Terra.gif" type="image/gif">
                    <!-- Altrimenti riproduci il testo -->
     La <STRONG>Terra</STRONG> vista dallo spazio.
    </OBJECT>
  </OBJECT>
</OBJECT>

La dichiarazione più esterna specifica un applet che non richiede dati o valori iniziali. La seconda dichiarazione specifica un'animazione MPEG e, poiché non definisce la posizione di un'implementazione in grado di trattare il formato MPEG, si affida al programma utente per quanto riguarda la gestione dell'animazione. Impostiamo anche l'attributo type, in modo che un programma utente che sappia di non poter riprodurre MPEG, eviterà di scaricare inutilmente "Terra.mpeg" dalla rete. La terza dichiarazione specifica la posizione di un file GIF e fornisce un testo alternativo nel caso che tutti gli altri meccanismi falliscano.

Dati in riga contro dati esterni. I dati da riprodurre possono essere forniti in due modi: in riga e da una risorsa esterna. Il primo metodo condurrà generalmente ad una riproduzione più rapida, tuttavia esso non risulta conveniente quando si devono riprodurre grandi quantità di dati.

Ecco un esempio che illustra come dei dati in riga possano essere forniti ad un OBJECT:

<P>
<OBJECT id="orologio1"
        classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
        data="data:application/x-oleobject;base64, ...dati in base64 ...">
    Un orologio.
</OBJECT>

Si consulti per favore la sezione sulla presentazione visuale di oggetti, immagini e applet per informazioni su dimensione, allineamento e bordi di un oggetto.

13.3.2 Inizializzazione di oggetti: l'elemento PARAM

<!ELEMENT PARAM - O EMPTY              -- valore di proprietà denominato -->
<!ATTLIST PARAM
  id          ID             #IMPLIED  -- identificatore unico nell'ambito del documento --
  name        CDATA          #REQUIRED -- nome di proprietà --
  value       CDATA          #IMPLIED  -- valore di proprietà --
  valuetype   (DATA|REF|OBJECT) DATA   -- Come interpretare il valore --
  type        %ContentType;  #IMPLIED  -- tipo di contenuto per il valore
                                          quando valuetype=ref --
  >

Marcatore iniziale: obbligatorio, Marcatore finale: proibito

Definizioni di attributo

name = cdata
Questo attributo definisce il nome di un parametro per l'esecuzione, assunto per essere passato all'oggetto introdotto. La sensibilità alle maiuscole del nome della proprietà dipende dalla particolare implementazione dell'oggetto.
value = cdata
Questo attributo specifica il valore di un parametro per l'esecuzione specificato da name. I valori di proprietà non hanno significato per l'HTML; il loro significato è definito dall'oggetto in questione.
valuetype = data|ref|object [CI]
Questo attributo specifica il tipo di attributo value. Valori possibili:
  • data: Questo è il valore predefinito dell'attributo. Significa che il valore specificato da value sarà esaminato e passato all'implementazione dell'oggetto come una stringa.
  • ref: Il valore specificato da value è un URI che designa una risorsa nella quale sono memorizzati i valori per l'esecuzione. Ciò consente a strumenti di supporto di identificare come parametri gli URI dati. L'URI deve essere passato all'oggetto così com'è, vale a dire non risolto.
  • object: Il valore specificato da value è un identificatore che si riferisce ad una dichiarazione di OBJECT nel medesimo documento. L'identificatore deve essere il valore dell'attributo id impostato per l'elemento OBJECT dichiarato.
type = content-type [CI]
Questo attributo specifica il tipo di contenuto della risorsa designata dall'attributo value soltanto nel caso in cui valuetype sia impostato su "ref". Questo attributo, pertanto, specifica per il programma utente il tipo di valori che saranno trovati all'URI designato da value.

Attributi definiti altrove

Gli elementi PARAM specificano un insieme di valori che possono essere richiesti da un oggetto al momento dell'esecuzione. Può comparire nel contenuto di un elemento OBJECT o APPLET un qualsiasi numero di elementi PARAM, in un ordine qualsiasi, ma questi devono essere posizionati all'inizio del contenuto dell'elemento OBJECT o APPLET che li racchiude.

Si assume che la sintassi dei nomi e dei valori sia compresa dall'implementazione dell'oggetto. Questo documento non specifica in che modo i programmi utente dovrebbero recuperare le coppie nome/valore né in che modo dovrebbero interpretare i nomi di parametro che compaiono due volte.

Ritorniamo all'esempio dell'orologio per illustrare l'uso di PARAM: supponiamo che l'applet sia in grado di gestire due parametri per l'esecuzione, che definiscono la sua altezza e la sua larghezza iniziali. Possiamo impostare le dimensioni iniziali a 40x40 pixel per mezzo di due elementi PARAM.

    
<P><OBJECT classid="http://www.lamiamacchina.it/orologioanalogico.py">
<PARAM name="altezza" value="40" valuetype="data">
<PARAM name="larghezza" value="40" valuetype="data">
Questo programma utente non è in grado di riprodurre applicazioni Python.
</OBJECT>

Nell'esempio successivo, i dati per l'esecuzione, relativi al parametro "Valori_iniziali" dell'oggetto, sono specificati come una risorsa esterna (un file GIF). Il valore dell'attributo valuetype è quindi impostato su "ref" mentre value è un URI che designa la risorsa.

<P><OBJECT classid="http://www.archiviogif.com/gifappli"
       standby="Sto caricando Elvis...">
<PARAM name="Valori_iniziali"
       value="./immagini/elvis.gif">
       valuetype="ref">
</OBJECT>

Si noti che è stato impostato anche l'attributo standby, in modo che il programma utente possa visualizzare un messaggio mentre il sistema di riproduzione effettua il caricamento.

Quando un elemento OBJECT viene riprodotto, i programmi utente devono ricercare il contenuto solo di quegli elementi PARAM che sono discendenti diretti di OBJECT, e "passarglielo".

Pertanto, nell'esempio seguente, se "ogg1" è riprodotto, "param1" si applica a "ogg1" (e non a "ogg2"). Se invece è riprodotto "ogg2" e non "ogg1", "param1" viene ignorato, e "param2" si applica a "ogg2". Se nessuno dei due OBJECT viene riprodotto, non si applica nessuno dei due PARAM.

<P>
<OBJECT id="ogg1">
   <PARAM name="param1">
   <OBJECT id="ogg2">
      <PARAM name="param2">
   </OBJECT>
</OBJECT>

13.3.3 Schemi globali per la denominazione di oggetti

La posizione dell'implementazione di un oggetto è fornita da un URI. Come è stato esaminato nell'introduzione agli URI, il primo segmento di un URI assoluto specifica lo schema di denominazione usato per trasferire i dati designati dall'URI. Per i documenti HTML, questo schema è comunemente "http". Alcuni applet possono impiegare altri schemi di denominazione. Per esempio, quando specificano un applet Java, gli autori possono usare URI che cominciano con "java", e, per applet ActiveX, gli autori possono usare "clsid".

Nell'esempio seguente inseriamo un applet Java all'interno di un documento HTML.

<P><OBJECT classid="java:program.start">
</OBJECT>

Tramite l'impostazione dell'attributo codetype, un programma utente può decidere se recuperare l'applicazione Java basandosi sulla propria capacità di fare ciò.

<OBJECT codetype="application/java-archive"
        classid="java:program.start">
</OBJECT>

Alcuni sistemi di riproduzione richiedono informazioni aggiuntive per identificare la loro implementazione e bisogna che sia detto loro dove trovare quella informazione. Gli autori possono fornire informazioni sul percorso dell'implementazione dell'oggetto per mezzo dell'attributo codebase.

<OBJECT codetype="application/java-archive"
        classid="java:program.start">
        codebase="http://foooo.bar.com/java/lamiaimplementazione/"
</OBJECT>

L'esempio successivo specifica (con l'attributo classid) un oggetto ActiveX tramite un URI che comincia con lo schema di denominazione "clsid". L'attributo data determina la posizione dei dati da riprodurre (un altro orologio).

<P><OBJECT classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
        data="http://www.acme.com/ole/orologio.stm">
Questa applicazione non è supportata.
</OBJECT>

13.3.4 Dichiarazioni e istanzazioni di oggetti

Gli esempi precedenti hanno illustrato soltanto delle definizioni isolate di oggetti. Quando un documento deve contenere più di un'istanza del medesimo oggetto, è possibile separare la dichiarazione dell'oggetto dalle sue istanzazioni. Questo metodo presenta una serie di vantaggi:

Per dichiarare un oggetto in modo che non sia eseguito dal programma utente non appena venga letto, si imposti l'attributo booleano declare nell'elemento OBJECT. Allo stesso tempo, gli autori devono identificare la dichiarazione impostando l'attributo id nell'elemento OBJECT ad un valore univoco. Le successive istanzazioni dell'oggetto faranno riferimento a questo identificatore.

Un OBJECT dichiarato deve apparire in un documento prima della prima istanza di quell'OBJECT.

Un oggetto definito con l'attributo declare è istanziato ogni volta che un elemento che si riferisce a quell'oggetto necessita di essere riprodotto (es.: si attiva un collegamento che si riferisce ad esso, si attiva un oggetto che si riferisce ad esso, ecc.).

Nell'esempio seguente, dichiariamo un OBJECT e provochiamo la sua istanzazione tramite un riferimento ad esso da un collegamento. Pertanto l'oggetto può essere attivato cliccando per esempio su un testo sottolineato.

<P><OBJECT declare
        id="terra.dichiarazione" 
        data="Terra.mpeg" 
        type="application/mpeg">
   La <STRONG>Terra</STRONG> vista dallo spazio.
</OBJECT>
...più avanti nel documento...
<P>Una efficace <A href="#terra.dichiarazione"> animazione della Terra!</A>

L'esempio successivo illustra come specificare valori per l'esecuzione costituiti da altri oggetti. In questo esempio inviamo del testo (un componimento poetico, per la precisione) ad un ipotetico meccanismo per visualizzare poesie. L'oggetto riconosce un parametro per l'esecuzione chiamato "font" (diciamo per la riproduzione del testo poetico in un certo carattere). Il valore per questo parametro è esso stesso un oggetto, che introduce (ma non riproduce) l'oggetto font. La relazione tra l'oggetto font e l'oggetto per la visualizzazione di poesie è ottenuta (1) assegnando l'id "tribune" alla dichiarazione dell'oggetto font e (2) facendo riferimento ad esso dall'elemento PARAM dell'oggetto per la visualizzazione di poesie (tramite valuetype e value).

<P><OBJECT declare
     id="tribune"
     type="application/x-webfont"
     data="tribune.gif">
</OBJECT>
...vedi il poema in KublaKhan.txt qui...
<P><OBJECT classid="http://foo.bar.com/vedi_poema" 
           data="KublaKhan.txt">
<PARAM name="font" valuetype="object" value="#tribune">
<P>State perdendo un visualizzatore di poesie veramente grande ...
</OBJECT>

I programmi utente che non supportano l'attributo declare devono riprodurre i contenuti della dichiarazione di OBJECT.

13.4 Includere un applet: l'elemento APPLET

APPLET è disapprovato (con tutti i suoi attributi) in favore di OBJECT.

Si veda la DTD transitoria per la definizione formale.

Definizioni di attributo

codebase = uri [CT]
Questo attributo specifica l'URI di base per l'applet. Se questo attributo non è specificato, allora assume come valore predefinito il medesimo URI di base del documento corrente. I valori per questo attributo possono riferirsi soltanto a sottodirectory della directory che contiene il documento corrente. Nota. Benché la restrizione alle sottodirectory sia una deroga dalla prassi comune e dalle specifiche HTML 3.2, il Gruppo di Lavoro su HTML ha preferito lasciare la restrizione in questa versione delle specifiche per ragioni di sicurezza.
code = cdata [CS]
Questo attributo specifica sia il nome del file class che contiene la sottoclasse applet compilata dell'applet sia il percorso per raggiungere la classe, comprendente lo stesso file class. Esso è interpretato con riferimento al codebase dell'applet. Uno dei due, tra code e object, deve essere presente.
name = cdata [CS]
Questo attributo specifica un nome per l'istanza dell'applet, il che rende possibile a differenti applet sulla medesima pagina di trovarsi (e comunicare) reciprocamente.
archive = uri-list [CT]
Questo attributo specifica un elenco separato tramite virgole di URI di archivi contenenti classi e altre risorse che saranno "precaricate". Le classi vengono caricate usando un'istanza di un AppletClassLoader con il dato codebase. URI relativi di archivi sono interpretati con riferimento al codebase dell'applet. Il precaricamento di risorse può migliorare significativamente le prestazioni dell'applet.
object = cdata [CS]
Questo attributo denomina una risorsa contenente una rappresentazione serializzata dello stato di un applet. Essa è interpretata relativamente al codebase dell'applet. I dati serializzati contengono il nome di classe dell'applet ma non l'implementazione. Il nome di classe è utilizzato per recuperare l'implementazione da un file class o da un archivio.

Quando l'applet è "deserializzato", viene invocato il metodo start() ma non il metodo init(). Gli attributi validi quando l'oggetto originale era serializzato non vengono ripristinati. Tutti gli attributi passati a questa istanza dell'APPLET saranno disponibili per l'applet. Gli autori dovrebbero servirsi di questa caratteristica con estrema cautela. Un applet dovrebbe essere fermato prima di essere serializzato.

Sia code sia object devono essere presenti. Se code e object sono entrambi dati, è un errore se forniscono nomi di classe differenti.

width = length [CI]
Questo attributo specifica la larghezza iniziale dell'area di visualizzazione dell'applet (con esclusione di ogni riquadro e finestra di dialogo creati dall'applet).
height = length [CI]
Questo attributo specifica l'altezza iniziale dell'area di visualizzazione dell'applet (con esclusione di ogni riquadro e finestra di dialogo creati dall'applet).

Attributi definiti altrove

Questo elemento, supportato da tutti i browser abilitati per Java, consente ai progettisti di incorporare un applet Java in un documento HTML. È stato disappprovato in favore dell'elemento OBJECT.

Il contenuto dell'APPLET agisce come un'informazione alternativa per quei programmi utente che non supportano questo elemento o che sono attualmente configurati in modo da non supportare gli applet. In tutti gli altri casi i programmi utente devono ignorare il contenuto.

ESEMPIO DISAPPROVATO:
Nell'esempio seguente, l'elemento APPLET include un applet Java nel documento. Poiché non è fornito alcun codebase, si assume che l'applet si trovi nella stessa directory del documento corrente.

<APPLET code="Bolle.class" width="500" height="500">
Un applet Java che disegna bolle animate.
</APPLET>

Questo esempio può essere riscritto usando OBJECT nel modo seguente:

<P><OBJECT codetype="application/java"
        classid="java:Bolle.class"
        width="500" height="500">
Un applet Java che disegna bolle animate.
</OBJECT>

Valori iniziali possono essere forniti all'applet tramite l'elemento PARAM.

ESEMPIO DISAPPROVATO:
Il seguente applet Java esemplificativo:

<APPLET code="AudioItem" width="15" height="15">
<PARAM name="snd" value="Ciao.au|Benvenuto.au">
Un applet Java che genera un suono di benvenuto.
</APPLET>

può essere riscritto come segue usando OBJECT:

<OBJECT codetype="application/java"
        classid="AudioItem" 
        width="15" height="15">
<PARAM name="snd" value="Ciao.au|Benvenuto.au">
Un applet Java che genera un suono di benvenuto.
</OBJECT>

13.5 Note sui documenti incorporati

Talvolta, piuttosto che creare un collegamento ad un documento, un autore può voler incorporare il documento direttamente all'interno di un documento HTML primario. A tale scopo, gli autori possono usare sia l'elemento IFRAME sia l'elemento OBJECT, ma questi elementi differiscono tra loro in qualche misura. Non solo i due elementi hanno differenti modelli di contenuto, ma l'elemento IFRAME può essere un frame di destinazione (si veda, per dettagli, la sezione su come specificare informazioni sul frame di destinazione) e può essere "selezionato" da un programma utente come focus per la stampa, per la visualizzazione del codice sorgente HTML, ecc. I programmi utente possono rappresentare gli elementi di frame selezionati in modi che li distinguano dai frame non selezionati (ad es., disegnando un bordo intorno al frame selezionato).

Un documento incorporato è completamente indipendente dal documento all'interno del quale è incorporato. Per esempio, URI relativi presenti nel documento incorporato vengono risolti in conformità dell'URI di base del documento incorporato, non di quello del documento principale. Un documento incorporato è semplicemente riprodotto all'interno di un altro documento (ad es. in una sottofinestra); esso rimane in ogni caso indipendente.

Ad esempio, il codice seguente incorpora il contenuto di incorporami.html nel punto in cui si verifica la definizione di OBJECT.

...testo prima...
<OBJECT data="incorporami.html">
Attenzione: incorporami.html potrebbe non essere incorporato.
</OBJECT>
...testo dopo...

Si ricordi che il contenuto di OBJECT deve essere riprodotto soltanto se il file specificato dall'attributo data non può essere caricato.

Il comportamento di un programma utente nel caso in cui un file includa se stesso non è definito.

13.6 Mappe immagine

Le mappe immagine consentono agli autori di specificare regioni di un'immagine o di un oggetto e di assegnare una determinata azione a ciascuna regione (es.: recuperare un documento, eseguire un programma, ecc.). Quando la regione è attivata dall'utente, l'azione viene eseguita.

Una mappa immagine è creata associando un oggetto con la descrizione di aree geometriche sensibili sull'oggetto.

Vi sono due tipi di mappe immagine:

Le mappe immagine sul lato cliente sono preferite alle mappe immagine sul lato server per almeno due ragioni: risultano accessibili a persone che navigano adoperando programmi utente di tipo non grafico ed offrono una risposta immediata su se il puntatore si trovi oppure no su una regione attiva.

13.6.1 Mappe immagine sul lato cliente: gli elementi MAP e AREA

<!ELEMENT MAP - - ((%block;) | AREA)+ -- mappa immagine sul lato cliente -->
<!ATTLIST MAP
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #REQUIRED -- per riferimento da parte di usemap --
  >

Marcatore iniziale: obligatorio, Marcatore finale: obbligatorio

<!ELEMENT AREA - O EMPTY               -- area di una mappa immagine sul lato cliente -->
<!ATTLIST AREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  shape       %Shape;        rect      -- controlla l'interpretazione delle coordinate --
  coords      %Coords;       #IMPLIED  -- elenco di lunghezze separate da virgole --
  href        %URI;          #IMPLIED  -- URI di una risorsa collegata --
  nohref      (nohref)       #IMPLIED  -- questa regione è inattiva --
  alt         %Text;         #REQUIRED -- breve descrizione --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di tabulazione --
  accesskey   %Character;    #IMPLIED  -- tasti chiave per l'accessibilità --
  onfocus     %Script;       #IMPLIED  -- l'elemento ha ottenuto il focus --
  onblur      %Script;       #IMPLIED  -- l'elemento perde il focus --
  >

Marcatore iniziale: obbligatorio, Marcatore finale: proibito

Definzioni di attributo per MAP

name = cdata [CI]
Questo attributo assegna un nome alla mappa immagine definita dall'elemento MAP.

Definizioni di attributo per AREA

shape = default|rect|circle|poly [CI]
Questo attributo specifica la forma di una regione. Valori ammessi:
  • default: Specifica l'intera regione.
  • rect: Definisce una regione rettangolare.
  • circle: Definisce una regione circolare.
  • poly: Definisce una regione poligonale.
coords = coordinate [CN]
Questo attributo specifica la posizione e la forma sullo schermo. Il numero e l'ordine dei valori dipende dalla forma che viene definita. Combinazioni possibili:
  • rect: sinistra-x, alto-y, destra-x, basso-y.
  • circle: centro-x, centro-y, raggio. Nota. Quando il valore del raggio è un valore percentuale, i programmi utente dovrebbero calcolare il valore finale del raggio in base alla larghezza e all'altezza dell'oggetto associato. Il raggio dovrebbe essere il minore dei due valori.
  • poly: x1, y1, x2, y2, ..., xN, yN. La prima e l'ultima coppia di coordinate x e y dovrebbero essere uguali, in modo da chiudere il poligono. Quando questi valori di coordinata non sono gli stessi, i programmi utente dovrebbero inferire una coppia aggiuntiva di coordinate, allo scopo di chiudere il poligono.

Le coordinate sono relative all'angolo superiore sinistro dell'oggetto. Tutti i valori sono lunghezze. Tutti i valori sono separati da virgole.

nohref [CI]
Quando impostato, questo attributo booleano specifica che una regione non ha collegamenti associati.

Attributo per associare una mappa immagine con un elemento

usemap = uri [CT]
Questo attributo associa una mappa immagine con un elemento. La mappa immagine è definita dall'elemento MAP. Il valore di usemap deve corrispondere al valore dell'attributo name dell'elemento MAP associato.

Attributi definiti altrove

L'elemento MAP specifica una mappa immagine sul lato cliente (o un altro meccanismo di navigazione) che può essere associato con un altro elemento (IMG, OBJECT o INPUT). Una mappa immagine è associata con un elemento tramite l'attributo usemap dell'elemento. L'elemento MAP può essere usato senza un'immagine associata, per generici meccanismi di navigazione.

La presenza dell'attributo usemap per un elemento OBJECT implica che l'oggetto che si sta includendo sia un'immagine. Inoltre, quando l'elemento OBJECT è associato ad una mappa immagine sul lato cliente, i programmi utente possono implementare l'interazione dell'utente con l'OBJECT esclusivamente in termini di mappa immagine sul lato cliente. Questo permette a programmi utente (quali un browser vocale o un robot) di interagire con l'OBJECT senza la necessità di elaborarlo; il programma utente può anche scegliere di non recuperare (o elaborare) affatto l'oggetto. Quando un elemento OBJECT è associato con una mappa immagine, gli autori non dovrebbero aspettarsi che l'oggetto sia recuperato o elaborato da ogni programma utente.

Il modello di contenuto dell'elemento MAP consente agli autori le seguenti combinazioni:

  1. Uno o più elementi AREA. Questi elementi non hanno contenuto ma specificano le regioni geometriche della mappa immagine ed il collegamento associato con ciascuna regione. Si noti che i programmi utente generalmente non riproducono gli elementi AREA. Per questo motivo gli autori dovrebbero fornire un testo alternativo per ciascun elemento AREA per mezzo dell'attributo alt (si veda sotto per informazioni su come specificare un testo alternativo).
  2. Contenuto a livello di blocco. Questo contenuto dovrebbe includere degli elementi A che specifichino le regioni geometriche della mappa immagine ed il collegamento associato con ciascuna regione. Si noti che il programma utente dovrebbe riprodurre il contenuto a livello di blocco dell'elemento MAP. Gli autori dovrebbero usare questo metodo per creare documenti più accessibili.

Quando un elemento MAP presenta un contenuto misto (sia elementi AREA sia contenuti a livello di blocco), i programmi utente devono ignorare gli elementi AREA.

Gli autori dovrebbero specificare in modo completo la geometria di una mappa immagine per mezzo di elementi AREA o per mezzo di elementi A, oppure completamente per mezzo di entrambi, se il contenuto è di tipo misto. Gli autori possono voler mescolare i contenuti in modo che i programmi utente più datati possano gestire le geometrie della mappa per mezzo di elementi AREA, mentre i nuovi programmi utente possano avvantaggiarsi di un contenuto a livello di blocco più ricco.

Se due o più regioni definite si sovrappongono, l'elemento di definizione di regione che appare prima nel documento ha la precedenza (cioè risponde all'immissione di dati da parte dell'utente).

Programmi utente ed autori dovrebbero offrire alternative testuali alle mappe immagine di tipo grafico, per i casi in cui la grafica non sia disponibile o l'utente non possa accedervi. Ad esempio, i programmi utente possono usare il testo alt per creare collegamenti testuali al posto di una mappa immagine di tipo grafico. Tali collegamenti possono essere attivati in molteplici modi (tastiera, attivazione vocale, ecc.).

Nota. MAP non è compatibile all'indietro con i programmi utente HTML 2.0.

Esempi di mappe immagine sul lato cliente 

Nell'esempio successivo creiamo una mappa immagine sul lato cliente per l'elemento OBJECT. Non vogliamo che i contenuti della mappa immagine siano riprodotti quando viene riprodotto OBJECT, pertanto "nascondiamo" l'elemento MAP all'interno del contenuto dell'elemento OBJECT. Di conseguenza i contenuti dell'elemento MAP saranno riprodotti soltanto se OBJECT non può essere riprodotto.

<HTML>
   <HEAD>
      <TITLE>Forte questo sito!</TITLE>
   </HEAD>
   <BODY>
     <P><OBJECT data="navbar1.gif" type="image/gif" usemap="#mappa1">
     <MAP name="mappa1">
       <P>Per navigare il sito:
       <A href="guida.html" shape="rect" coords="0,0,118,28">Guida all'accesso</a> |
       <A href="viabreve.html" shape="rect" coords="118,0,184,28">Vai</A> |
       <A href="ricerca.html" shape="circle" coords="184,200,60">Ricerca</A> |
       <A href="primi10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">I primi dieci</A>
     </MAP>
     </OBJECT>
   </BODY>
</HTML>

Possiamo volere che i contenuti della mappa immagine siano riprodotti anche quando un programma utente è in grado di riprodurre l'OBJECT. Per esempio, possiamo voler associare una mappa immagine con un elemento OBJECT ed includere una barra di navigazione testuale alla fine della pagina. Per fare ciò, definiamo l'elemento MAP esternamente ad OBJECT:

<HTML>
   <HEAD>
      <TITLE>Forte questo sito!</TITLE>
   </HEAD>
   <BODY>
     <P><OBJECT data="navbar1.gif" type="image/gif" usemap="#mappa1">
     </OBJECT>

     ...qui il resto della pagina...

     <MAP name="mappa1">
       <P>Per navigare il sito:
       <A href="guida.html" shape="rect" coords="0,0,118,28">Guida all'accesso</a> |
       <A href="viabreve.html" shape="rect" coords="118,0,184,28">Vai</A> |
       <A href="ricerca.html" shape="circle" coords="184,200,60">Ricerca</A> |
       <A href="primi10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">I primi dieci</A>
     </MAP>
   </BODY>
</HTML>

Nell'esempio successivo, creiamo un'analoga mappa immagine, questa volta usando l'elemento AREA. Si noti l'uso del testo alt:

<P><OBJECT data="navbar1.gif" type="image/gif" usemap="#mappa1">
   <P>Questa è una barra di navigazione.
   </OBJECT>

<MAP name="mappa1">
 <AREA href="guida.html" 
          alt="Guida all'accesso" 
          shape="rect" 
          coords="0,0,118,28">
 <AREA href="ricerca.html" 
          alt="Ricerca" 
          shape="rect" 
          coords="184,0,276,28">
 <AREA href="viabreve.html" 
          alt="Vai" 
          shape="circle"
          coords="184,200,60">
 <AREA href="primi10.html" 
          alt="I primi dieci" 
          shape="poly" 
          coords="276,0,276,28,100,200,50,50,276,0">
</MAP>

Qui abbiamo una versione analoga, che usa l'elemento IMG invece di OBJECT (con la medesima dichiarazione di MAP):

<P><IMG src="navbar1.gif" usemap="#mappa1" alt="barra di navigazione">

L'esempio seguente illustra come le mappe immagine possono essere condivise.

Elementi OBJECT annidati sono utili allo scopo di fornire dei ripieghi, nel caso che un programma utente non supporti determinati formati. Per esempio:

<P>
<OBJECT data="navbar.png" type="image/png">
  <OBJECT data="navbar.gif" type="image/gif">
    testo che descrive l'immagine...
  </OBJECT>
</OBJECT>

Se il programma utente non supporta il formato PNG, esso tenta di riprodurre l'immagine GIF. Se non supporta GIF (ad es. è un programma utente basato sulla sintesi vocale), assume per difetto la descrizione testuale fornita come contenuto dell'elemento OBJECT interno. Quando degli elementi OBJECT sono annidati in questo modo, gli autori possono condividere delle mappe immagine tra essi:

<P>
<OBJECT data="navbar.png" type="image/png" usemap="#mappa1">
  <OBJECT data="navbar.gif" type="image/gif" usemap="#mappa1">
     <MAP name="mappa1">
       <P>Per navigare il sito:
       <A href="guida.html" shape="rect" coords="0,0,118,28">Guida all'accesso</a> |
       <A href="viabreve.html" shape="rect" coords="118,0,184,28">Vai</A> |
       <A href="ricerca.html" shape="circle" coords="184,200,60">Ricerca</A> |
       <A href="primi10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">I primi dieci</A>
     </MAP>
  </OBJECT>
</OBJECT>

L'esempio successivo illustra come sia possibile specificare delle ancore in modo da creare delle zone inattive all'interno di una mappa immagine. La prima ancora specifica una piccola regione circolare senza collegamenti associati. La seconda ancora specifica una regione circolare più grande avente le medesime coordinate del centro. Combinate, le due formano un anello il cui centro è inattivo ed il cui bordo è attivo. L'ordine delle definizioni di ancora è importante, dal momento che il cerchio più piccolo deve sovrascrivere il cerchio più grande.

<MAP name="mappa1">
<P>
<A shape="circle" coords="100,200,50">Io sono inattivo.</A>
<A href="cerchio-esterno.html" shape="circle" coords="100,200,250">Io sono attivo.</A>
</MAP>

Similmente, l'attributo nohref dell'elemento AREA dichiara che una regione geometrica non ha un collegamento associato.

13.6.2 Mappe immagine sul lato server

Le mappe immagine sul lato server possono essere interessanti in casi in cui la mappa immagine è troppo complicata per una mappa immagine sul lato cliente.

È possibile soltanto definire una mappa immagine sul lato server per gli elementi IMG e INPUT. Nel caso di IMG, l'IMG deve essere all'interno di un elemento A e l'attributo booleano ismap ([CI]) deve essere impostato. Nel caso di INPUT, l'INPUT deve essere di tipo "image".

Quando l'utente attiva il collegamento cliccando sull'immagine, le coordinate dello schermo sono inviate direttamente al server su cui il documento risiede. Le coordinate dello schermo sono espresse come valori in pixel dello schermo relativi all'immagine. Per informazioni normative a proposito della definizione di un pixel e di come scalarlo, si consulti per favore [CSS1].

Nell'esempio seguente, la regione attiva definisce un collegamento sul lato server. Pertanto un clic su qualsiasi punto dell'immagine provocherà l'invio al server delle coordinate del clic.

<P><A href="http://www.acme.com/cgi-bin/competizione">
        <IMG src="gara.gif" ismap alt="bersaglio"></A>

Il punto in cui si è cliccato viene passato al server nel modo seguente. Il programma utente deriva un nuovo URI dall'URI specificato dall'attributo href dell'elemento A, aggiungendo un '?' seguito dalle coordinate x e y, separate da una virgola. Il collegamento viene poi seguito usando il nuovo URI. Per esempio, nel caso sopra proposto, se l'utente clicca alla posizione x=10, y=27, allora l'URI derivato è "http://www.acme.com/cgi-bin/competizione?10,27".

I programmi utente che non offrono all'utente un sistema per selezionare specifiche coordinate (ad es., programmi utente di tipo non grafico che si affidano all'input da tastiera, programmi utente di tipo vocale, ecc.), dovrebbero inviare al server, quando il collegamento è attivato, le coordinate "0,0".

13.7 Presentazione visuale di immagini, oggetti e applet

Tutti gli attributi di IMG e OBJECT che riguardano l'allineamento e la presentazione visuale sono stati disapprovati in favore dei fogli di stile.

13.7.1 Larghezza e altezza

Definizioni di attributo

width = length [CN]
Ridefinisce la larghezza dell'immagine e dell'oggetto.
height = length [CN]
Ridefinisce l'altezza dell'immagine e dell'oggetto.

Quando specificati, gli attributi width e height dicono ai programmi utente di annullare la dimensione naturale dell'immagine o dell'oggetto in favore di questi valori.

Quando l'oggetto è un'immagine, esso viene scalato. I programmi utente dovrebbero fare del loro meglio per scalare un oggetto o un'immagine, in modo che corrispondano alla larghezza e all'altezza specificate dall'autore. Si noti che le lunghezze espresse come percentuali sono basate sullo spazio orizzontale o verticale attualmente disponibile, non sulla dimensione naturale dell'immagine, oggetto o applet.

Gli attributi height e width forniscono ai programmi utente un'idea della dimensione di un'immagine o di un oggetto, così che possano riservarvi uno spazio adeguato e continuare la riproduzione del documento, mentre sono in attesa dei dati dell'immagine.

13.7.2 Spazio bianco intorno a immagini e oggetti

Definizioni di attributo

hspace = pixels [CN]
Disapprovato. Questo attributo specifica la quantità di spazio bianco da inserire alla sinistra e alla destra di un elemento IMG, APPLET o OBJECT. Il valore predefinito non è specificato, ma è solitamente una piccola lunghezza diversa da zero.
vspace = pixels [CN]
Disapprovato. Questo attributo specifica la quantità di spazio bianco da inserire sopra e sotto un elemento IMG, APPLET o OBJECT. Il valore predefinito non è specificato, ma è solitamente una piccola lunghezza diversa da zero.

13.7.3 Bordi

Un'immagine o un oggetto possono essere circondati da un bordo (ad es. quando un bordo è specificato dall'utente o quando l'immagine è il contenuto di un elemento A).

Definizioni di attributo

border = pixels [CN]
Disapprovato. Questo attributo specifica la larghezza in pixel del bordo di un elemento IMG o OBJECT. Il valore predefinito di questo attributo dipende dal programma utente.

13.7.4 Allineamento

Definizioni di atributo

align = bottom|middle|top|left|right
Disapprovato. Questo attributo specifica la posizione di un elemento IMG, OBJECT o APPLET rispetto al suo contesto.

I seguenti valori di align riguardano la posizione di un oggetto rispetto al testo circostante:

Gli altri due valori, left e right, fanno sì che l'immagine fluttui lungo i margini sinistro o destro correnti. Essi vengono discussi nella sezione sugli oggetti fluttuanti.

Differenti interpretazioni di align. I programmi utente non interpretano allo stesso modo l'attributo align. Alcuni tengono conto soltanto di ciò che si trova nella riga di testo che precede l'elemento, altri invece tengono conto del testo su entrambi i lati dell'elemento.

13.8 Come specificare un testo alternativo

Definizioni di attributo

alt = text [CS]
Per i programmi utente che non sono in grado di visualizzare immagini, moduli o applet, questo attributo specifica un testo alternativo. La lingua del testo alternativo è specificata per mezzo dell'attributo lang.

Numerosi elementi di tipo non testuale (IMG, AREA, APPLET e INPUT) consentono agli autori di specificare un testo alternativo, che serva come contenuto quando l'elemento non può essere riprodotto normalmente. Specificare un testo alternativo aiuta gli utenti che non dispongono di terminali in grado di visualizzare la grafica, gli utenti i cui browser non supportano i moduli, gli utenti ipovedenti, quelli che usano sintetizzatori vocali, quelli che hanno configurato i loro programmi utente di tipo grafico in modo da non visualizzare le immagini, ecc.

L'attributo alt deve essere specificato per gli elementi IMG e AREA. È invece facoltativo per gli elementi INPUT e APPLET.

Il testo alternativo può essere di grande aiuto, ma deve essere gestito con attenzione. Gli autori dovrebbero osservare le seguenti linee guida:

Gli implementatori dovrebbero consultare la sezione sull'accessibilità per informazioni su come gestire i casi di testo alternativo omesso.