7 La struttura globale di un documento HTML

Argomenti

  1. Introduzione alla struttura di un documento HTML
  2. Informazioni sulla versione di HTML
  3. L'elemento HTML
  4. L'intestazione del documento
    1. L'elemento HEAD
    2. L'elemento TITLE
    3. L'attributo title
    4. I metadati
  5. Il corpo del documento
    1. L'elemento BODY
    2. Gli identificatori degli elementi: gli attributi id e class
    3. Gli elementi a livello del blocco e gli elementi in linea
    4. Gli elementi di raggruppamento: gli elementi DIV e SPAN
    5. Le intitolazioni: gli elementi H1, H2, H3, H4, H5, H6
    6. L'elemento ADDRESS

7.1 Introduzione alla struttura di un documento HTML

Un documento HTML 4.0 è composto di tre parti:

  1. una riga contenente informazioni sulla versione di HTML,
  2. una sezione di intestazione dichiarativa (delimitata dall'elemento HEAD),
  3. un corpo, che contiene il contenuto corrente del documento. Il corpo può essere implementato dall'elemento BODY oppure dall'elemento FRAMESET.

Può apparire spazio bianco (spazi, righe nuove, tabulazioni, e commenti) prima o dopo ciascuna sezione. Le sezioni 2 e 3 dovrebbero essere delimitate dall'elemento HTML.

Ecco un esempio di un semplice documento HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
   "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
   <HEAD>
      <TITLE>Il mio primo documento HTML</TITLE>
   </HEAD>
   <BODY>
      <P>Ciao mondo!
   </BODY>
</HTML>

7.2 Informazioni sulla versione di HTML

Un documento HTML valido dichiara quale versione di HTML è utilizzata nel documento. La dichiarazione del tipo di documento indica la definizione del tipo di documento (DTD) in uso per il documento (si veda [ISO8879]).

L'HTML 4.0 specifica tre DTD, perciò gli autori devono includere una delle seguenti dichiarazioni del tipo di documento nei loro documenti. Le DTD si differenziano negli elementi che supportano.

L'URI in ciascuna dichiarazione del tipo di documento consente agli interpreti HTML di scaricare la DTD e tutti gli insiemi di entità che sono richiesti. I seguenti URI si riferiscono alle DTD e agli insiemi di entità HTML 4.0 che il W3C supporta:

Il legame tra gli identificatori pubblici e i file può essere specificato utilizzando un file di catalogo che segue il formato raccomandato da SGML Open Consortium (si veda [SGMLOPEN]). Un file di catalogo esemplificativo per HTML 4.0 è incluso all'inizio della sezione sulle informazioni di riferimento in SGML per HTML. Le ultime due lettere della dichiarazione indicano la lingua della DTD. Per HTML, questa è sempre la lingua inglese ("EN").

7.3 L'elemento HTML

<!ENTITY % html.content "HEAD, BODY">
<!ELEMENT HTML O O (%html.content;)    -- elemento radice del documento -->
<!ATTLIST HTML
  %i18n;                               -- attributi lang, dir --
   >

Tag di inizio: opzionale, Tag di fine: opzionale

Definizioni degli attributi

version = cdata [CN]
Disapprovato. Il valore di questo attributo specifica quale versione della DTD HTML governa il documento corrente. Questo attributo è stato disapprovato perché è ridondante con l'informazione sulla versione fornita dalla dichiarazione del tipo di documento.

Attributi definiti altrove

Dopo la dichiarazione del tipo di documento, la parte rimanente di un documento HTML è contenuta dall'elemento HTML. Perciò un tipico documento HTML ha questa struttura:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
...L'intestazione, il corpo, ecc. vanno qui...
</HTML>

7.4 L'intestazione del documento

7.4.1 L'elemento HEAD

<!-- %head.misc; definito più sopra come "SCRIPT|STYLE|META|LINK|OBJECT" -->
<!ENTITY % head.content "TITLE & BASE?">
<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- intestazione del documento -->
<!ATTLIST HEAD
  %i18n;                               -- attributi lang, dir --
  profile     %URI;          #IMPLIED  -- denominazione del dizionario di 
                                          metainformazioni --
  >

Tag di inizio: opzionale, Tag di fine: opzionale

Definizioni degli attributi

profile = uri [CT]
Questo attributo specifica l'ubicazione di uno o più profili di metainformazioni, separati da spazio bianco. Per future estensioni, gli interpreti HTML dovrebbero considerare il valore come un elenco di URI anche se queste Specifiche considerano solo il primo URI come significativo. I profili sono discussi più avanti nella sezione sui metadati.

Attributi definiti altrove

L'elemento HEAD contiene informazioni sul documento corrente, quali il suo titolo, le parole chiave che possono essere utili ai motori di ricerca, e altri dati che non sono considerati contenuto del documento. Gli interpreti HTML generalmente non riproducono gli elementi che appaiono nella HEAD come contenuto. Comunque, possono rendere disponibili agli utenti le informazioni nella HEAD attraverso altri meccanismi.

7.4.2 L'elemento TITLE

<!-- L'elemento TITLE non è considerato parte del flusso di testo.
       Dovrebbe essere mostrato, per esempio come intestazione della pagina 
       o titolo della finestra. È richiesto esattamente un titolo 
       per documento.
    -->
<!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- titolo del documento -->
<!ATTLIST TITLE %i18n>

Tag di inizio: obbligatorio, Tag di fine: obbligatorio

Attributi definiti altrove

Ogni documento HTML deve avere un elemento TITLE nella sezione HEAD.

Gli autori dovrebbero usare l'elemento TITLE per identificare il contenuto di un documento. Poiché gli utenti spesso consultano documenti fuori del contesto, gli autori dovrebbero fornire titoli ricchi di informazione contestuale. Perciò, invece di un titolo quale "Introduzione", che non fornisce molta informazione contestuale, gli autori dovrebbero fornire un titolo quale "Introduzione all'apicoltura medievale" al suo posto.

Per ragioni di accessibilità, gli interpreti HTML devono rendere sempre il contenuto dell'elemento TITLE disponibile agli utenti (inclusi i TITLE che ricorrono nei frame). Il meccanismo per fare ciò dipende dall'interprete HTML (ad es., come una didascalia, come parlato).

I titoli possono contenere entità carattere (per caratteri accentati, caratteri speciali, ecc.), ma non possono contenere altra marcatura. Ecco un titolo di un documento esemplificativo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
   "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<HEAD>
<TITLE>Uno studio delle dinamiche della popolazione</TITLE>
... altri elementi dell'intestazione...
</HEAD>
<BODY>
... corpo del documento...
</BODY>
</HTML>

7.4.3 L'attributo title

Definizioni degli attributi

title = text [CS]
Questo attributo offre informazioni guida riguardo all'elemento per il quale è impostato.

Al contrario dell'elemento TITLE, che fornisce informazioni su un intero documento e può apparire solo una volta, l'attributo title può annotare un numero qualsiasi di elementi. Si consulti la definizione di un elemento per verificare che essa supporti questo attributo.

I valori dell'attributo title possono essere riprodotti dagli interpreti HTML in una varietà di modi. Per esempio, gli interpreti visuali mostrano frequentemente l'attributo title come una noticina (un breve messaggio che appare quando il dispositivo puntatore si sofferma sopra un oggetto). Gli interpreti HTML vocali possono riprodurre vocalmente l'informazione nell'attributo title in un contesto analogo. Per esempio, impostare l'attributo su un collegamento consente agli interpreti HTML (visuali e non visuali) di informare gli utenti sulla natura della risorsa collegata:

...del testo...
Ecco una foto di
<A href="http://someplace.com/neatstuff.gif" title="Una mia immersione 
con autorespiratore"> 
una mia immersione con autorespiratore la scorsa estate
</A>
...ancora del testo...

L'attributo title ha un ruolo ulteriore quando viene usato congiuntamente all'elemento LINK per indicare un foglio di stile esterno. Si consulti la sezione sui collegamenti e i fogli di stile per i dettagli.

Nota. Per migliorare la qualità della sintesi vocale per i casi gestiti in maniera inadeguata dalle tecniche standard, le future versioni di HTML potranno includere un attributo per codificare l'informazione fonemica e prosodica.

7.4.4 I metadati

Mentre queste Specifiche vengono scritte, è in corso un lavoro che consentirà agli autori di assegnare più ricche informazioni "leggibili da parte della macchina" riguardanti i documenti HTML e le altre risorse accessibili da rete. Si sta sviluppando il Resource Description Language del W3C (si veda [RDF]) come struttura comune per i metadati.

L'HTML permette agli autori di specificare metadati -- informazioni riguardanti un documento piuttosto che il contenuto del documento -- in una varietà modi.

Per esempio, per specificare l'autore di un documento, si può usare l'elemento META come segue:

<META name="Author" content="Dave Raggett">

L'elemento META specifica una proprietà (in questo caso "Author") e assegna un valore ad essa (in questo caso "Dave Raggett").

Queste Specifiche non definiscono un insieme di proprietà legali dei metadati. Il significato di una proprietà e l'insieme dei valori legali per quella proprietà dovrebbero essere definiti in un dizionario di riferimento chiamato profilo. Per esempio, un profilo progettato per aiutare i motori di ricerca ad indicizzare i documenti potrebbe definire proprietà quali "author" (autore), "copyright", "keywords" (parole chiave), ecc.

Specificare i metadati  

In generale, specificare i metadati coinvolge due passi:

  1. Dichiarare una proprietà e un valore per quella proprietà. Questo può essere fatto in due modi:
    1. Dall'interno di un documento, mediante l'elemento META.
    2. Dall'esterno di un documento, collegando i metadati mediante l'elemento LINK (si veda la sezione sui tipi di collegamento).
  2. Riferirsi ad un profilo dove sono definite la proprietà e i suoi valori legali. Per indicare un profilo, usare l'attributo profile dell'elemento HEAD.

Si noti che poiché è definito un profilo per l'elemento HEAD, lo stesso profilo si applica a tutti gli elementi META e LINK nell'intestazione del documento.

Agli interpreti HTML non è richiesto di supportare i meccanismi dei metadati. Per quelli che scelgono di supportare i metadati, queste Specifiche non definiscono come i metadati debbano essere interpretati.

L'elemento META 

<!ELEMENT META - O EMPTY               -- metainformazione generica -->
<!ATTLIST META
  %i18n;                               -- attributi lang, dir, da usare con 
                                          l'attributo content --
  http-equiv  NAME           #IMPLIED  -- nome dell'intestazione HTTP di risposta --
  name        NAME           #IMPLIED  -- nome della metainformazione --
  content     CDATA          #REQUIRED -- informazioni associate --
  scheme      CDATA          #IMPLIED  -- seleziona la forma dell'attributo content --
  >

Tag di inizio: obbligatorio, Tag di fine: proibito

Definizioni degli attributi

Per i seguenti attributi, i valori consentiti e le loro interpretazioni dipendono dal profilo specificato dall'attributo profile:

name = name [CS]
Questo attributo identifica un nome di proprietà. Queste Specifiche non elencano valori legali per questo attributo.
content = cdata [CS]
Questo attributo specifica un valore della proprietà. Queste Specifiche non elencano valori legali per questo attributo.
scheme = cdata [CS]
Questo attributo identifica uno schema da usare per interpretare il valore della proprietà (si veda la sezione sui profili per i dettagli).
http-equiv = name [CI]
Questo attributo può essere usato al posto dell'attributo name. I server HTTP usano questo attributo per raccogliere informazioni per le intestazioni dei messaggi HTTP di risposta.

Attributi definiti altrove

L'elemento META può essere usato per identificare le proprietà di un documento (ad es., autore, data di scadenza, elenco di parole chiave, ecc.) e assegnare valori a queste proprietà. Queste Specifiche non definiscono un insieme normativo di proprietà.

Ciascun elemento META specifica una coppia proprietà/valore. L'attributo name identifica la proprietà e l'attributo content specifica il valore della proprietà.

Per esempio, la seguente dichiarazione imposta un valore per la proprietà Author:

<META name="Author" content="Dave Reggett">

L'attributo lang può essere usato insieme a META per specificare la lingua per il valore dell'attributo content. Ciò mette in grado i sintetizzatori vocali di applicare regole di pronuncia dipendenti dalla lingua.

In questo esempio si dichiara che il nome dell'autore è francese:

<META name="Author" lang="fr" content="Arnaud Le Hors">

Nota. L'elemento META è un meccanismo generico per specificare i metadati. Comunque, alcuni elementi e attributi di HTML gestiscono già certe porzioni di metadati, e possono essere usati dagli autori in luogo di META per specificare queste porzioni: l'elemento TITLE, l'elemento ADDRESS, gli elementi INS e DEL, l'attributo title, e l'attributo cite.

Nota. Quando una proprietà specificata da un elemento META assume un valore che è un URI, alcuni autori preferiscono specificare il metadato mediante l'elemento LINK. Di conseguenza, la seguente dichiarazione di metadato:

<META name="DC.identifier"
      content="ftp://ds.internic.net/rfc/rfc1866.txt">

può anche essere scritta:

<LINK rel="DC.identifier"
         type="text/plain"
         href="ftp://ds.internic.net/rfc/rfc1866.txt">
META e intestazioni HTTP

L'attributo http-equiv può essere usato al posto dell'attributo name e ha un significato speciale quando i documenti sono recuperati mediante l' Hypertext Transfer Protocol (HTTP). I server HTTP possono usare il nome della proprietà specificato dall'attributo http-equiv per creare un'intestazione secondo lo stile definito in [RFC822] nella risposta HTTP. Si consultino le Specifiche di HTTP ([RFC2068]) per i dettagli sulle intestazioni HTTP valide.

La seguente esemplificazione di dichiarazione META:

<META http-equiv="Expires" content="Tue, 20 Aug 1996 14:25:27 GMT">

avrà come risultato l'intestazione HTTP:

Expires: Tue, 20 Aug 1996 14:25:27 GMT

Questa può essere usata dai supporti cache per determinare quando andare a prelevare una copia aggiornata del documento associato.

Alcuni interpreti HTML supportano l'uso di META per ri-aggiornare la pagina corrente dopo un determinato numero di secondi, con l'opzione di rimpiazzarla con un URI differente.

<META http-equiv="refresh" content="3,http://www.acme.com/intro.html">

Il contenuto è un numero che specifica il ritardo in secondi, seguito dall'URI da caricare quando il tempo è trascorso. Questo meccanismo viene generalmente usato per mostrare agli utenti una pagina introduttiva temporanea. Comunque, poiché alcuni interpreti HTML non supportano questo meccanismo, gli autori dovrebbero includere contenuto nella pagina introduttiva per consentire agli utenti di navigare lontano da lì (in modo che non rimangano "arenati" nella pagina introduttiva).

META e motori di ricerca

Un comune impiego per META è quello di specificare le parole chiave che un motore di ricerca può usare per migliorare la qualità dei risultati di ricerca. Quando diversi elementi META forniscono informazioni dipendenti dalla lingua riguardo a un documento, i motori di ricerca possono filtrare sull'attributo lang per mostrare i risultati della ricerca usando le preferenze dell'utente sulla lingua. Per esempio,

<-- Per coloro che parlano inglese americano -->
<META name="keywords" lang="en-us" 
         content="vacation, Greece, sunshine">
<-- Per coloro che parlano inglese britannico -->
<META name="keywords" lang="en" 
         content="holiday, Greece, sunshine">
<-- Per coloro che parlano francese -->
<META name="keywords" lang="fr" 
         content="vacances, Gr&egrave;ce, soleil">

L'efficienza dei motori di ricerca può anche essere incrementata usando l'elemento LINK per specificare collegamenti a traduzioni del documento in altre lingue, collegamenti a versioni del documenti in altri media (ad es.,. PDF), e, quando il documento è parte di una raccolta, collegamenti ad un appropriato punto di partenza per visionare la raccolta.

Ulteriore assistenza è fornita nella sezione su come aiutare i motori di ricerca ad indicizzare il proprio sito Web.

META e PICS
La Platform for Internet Content Selection (PICS, specificata in [PICS]) è una infrastruttura per associare etichette (metadati) a contenuti Internet. Progettata originariamente per aiutare genitori ed insegnanti a controllare ciò che i bambini possono accedere su Internet, agevola anche altri usi per le etichette, incluso l'autenticazione del codice, la privacy, e la gestione dei diritti di proprietà intellettuale.

Questo esempio illustra come si possa usare una dichiarazione META per includere un'etichetta PICS 1.1:

<HEAD>
 <META http-equiv="PICS-Label" content='
 (PICS-1.1 "http://www.gcf.org/v2.5"
    labels on "1994.11.05T08:15-0500"
      until "1995.12.31T23:59-0000"
      for "http://w3.org/PICS/Overview.html"
    ratings (suds 0.5 density 0 color/hue 1))
 '>
  <TITLE>... titolo del documento ...</TITLE>
</HEAD>
META e informazioni predefinite

L'elemento META può essere usato per specificare informazioni predefinite per un documento nelle seguenti istanze:

L'esempio seguente specifica la codifica dei caratteri di un documento come ISO-8859-5

<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-5"> 

I profili dei metadati 

L'attributo profile dell'elemento HEAD specifica l'ubicazione di un profilo di metadati. Il valore dell'attributo profile è un URI. Gli interpreti HTML possono usare questo URI in due modi:

Questo esempio si riferisce ad un ipotetico profilo che definisce proprietà utili per l'indicizzazione dei documenti. Le proprietà definite da questo profilo -- comprendenti "autore", "copyright", "keywords", e "data" -- hanno i loro valori settati da successive dichiarazioni META.

 <HEAD profile="http://www.acme.com/profili/nucleo">
  <TITLE>Come completare le copertine dei Promemoria</TITLE>
  <META name="autore" content="Mario Rossi">
  <META name="copyright" content="&copy; 1997 Acme Corp.">
  <META name="keywords" content="societario,linee guida,catalogazione">
  <META name="data" content="1994-11-06T08:49:37+00:00">
 </HEAD>

Mentre queste Specifiche vengono scritte, è pratica comune usare i formati per la data descritti in [RFC2068], sezione 3.3. Siccome questi formati sono relativamente difficili da gestire, si raccomanda agli autori di usare il formato per la data [ISO8601]. Per maggiori informazioni, si vedano le sezioni sugli elementi INS e DEL.

L'attributo scheme permette agli autori di fornire agli interpreti HTML più contesto per la corretta interpretazione dei metadati. A volte, queste informazioni addizionali possono essere critiche, come quando i metadati possono essere specificati in formati differenti. Per esempio, un autore potrebbe specificare una data nel formato (ambiguo) "10-9-97"; ciò significa 9 Ottobre 1997 o 10 Settembre 1997? Il valore dell'attributo scheme "Month-Day-Year" disambiguerebbe questo valore per la data.

Altre volte, l'attributo scheme può fornire informazioni utili ma non critiche agli interpreti HTML.

Per esempio, la seguente dichiarazione scheme può aiutare un interprete HTML a determinare che il valore della proprietà "identifier" è un numero di codice ISBN:

<META scheme="ISBN"  name="identifier" content="0-8230-2355-9">

I valori per l'attributo scheme dipendono dalla proprietà name e dal valore dell'attributo profile associato.

Nota. Un profilo esemplificativo è il Dublin Core (vedere [DCORE]). Questo profilo definisce un insieme di proprietà raccomandate per le descrizioni bibliografiche in formato elettronico, ed è destinato a promuovere l'interoperabilità tra modelli disparati di descrizione.

7.5 Il corpo del documento

7.5.1 L'elemento BODY

<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- corpo del documento -->
<!ATTLIST BODY
  %attrs;                              -- %coreattrs, %i18n, %events --
  onload          %Script;   #IMPLIED  -- il documento è stato caricato --
  onunload        %Script;   #IMPLIED  -- il documento è stato rimosso --
  >

Tag di inizio: opzionale, Tag di fine: opzionale

Definizioni degli attributi

background = uri [CT]
Disapprovato. Il valore di quest'attributo è un URI che indica una risorsa immagine. L'immagine generalmente ricopre lo sfondo (per interpreti visuali).
text = color [CI]
Disapprovato. Questo attributo imposta il colore di presentazione per il testo (per interpreti visuali).
link = color [CI]
Disapprovato. Questo attributo imposta il colore del testo che contraddistingue i collegamenti ipertestuali non visitati (per interpreti visuali).
vlink = color [CI]
Disapprovato. Questo attributo imposta il colore del testo che contraddistingue i collegamenti ipertestuali visitati (per interpreti visuali).
alink = color [CI]
Disapprovato. Questo attributo imposta il colore del testo che contraddistingue i collegamenti ipertestuali quando vengono selezionati dall'utente (per interpreti visuali).

Attributi definiti altrove

Il corpo di un documento contiene il contenuto del documento. Il contenuto può essere presentato da un interprete HTML in una varietà di modi. Per esempio, per i interpreti visuali, si può pensare al corpo come ad un'area tracciabile dove appare il contenuto: testo, immagini, colori, grafica, ecc. Per gli interpreti HTML vocali, lo stesso contenuto può essere riprodotto come parlato. Poiché i fogli di stile sono adesso la maniera preferita per specificare la presentazione di un documento, gli attributi di presentazione dell'elemento BODY sono stati disapprovati.

ESEMPIO DISAPPROVATO:
Il seguente frammento HTML illustra l'impiego degli attributi disapprovati. Esso imposta il colore dello sfondo dell'area tracciabile a bianco (white), il colore di presentazione del testo nero (black), e il colore dei collegamenti ipertestuali in rosso (red) inizialmente, a viola (fuchsia) quando vengono attivati, e a rosso scuro (maroon) una volta che sono stati visitati.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
   "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
 <TITLE>Uno studio sulle dinamiche della popolazione</TITLE>
</HEAD>
<BODY bgcolor="white" text="black"
  link="red" alink="fuchsia" vlink="maroon">
  ... corpo del documento...
</BODY>
</HTML>

Usando i fogli di stile, lo stesso effetto potrebbe ottenersi come segue:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
   "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<HEAD>
 <TITLE>Uno studio sulle dinamiche della popolazione</TITLE>
 <STYLE type="text/css">
  BODY { background: white; color: black}
  A:link { color: red }
  A:visited { color: maroon }
  A:active { color: fuchsia }
 </STYLE>
</HEAD>
<BODY>
  ... corpo del documento...
</BODY>
</HTML>

Usare fogli di stile esterni (collegati) dà la flessibilità di cambiare la presentazione senza correggere il documento HTML sorgente:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN
   "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<HEAD>
 <TITLE>Uno studio sulle dinamiche della popolazione</TITLE>
 <LINK rel="stylesheet" type="text/css" href="smartstyle.css">
</HEAD>
<BODY>
  ... corpo del documento...
</BODY>
</HTML>

Organizzazioni a frame e corpi HTML. I documenti che contengono organizzazioni a frame rimpiazzano l'elemento BODY con l'elemento FRAMESET. Si consulti la sezione sui frame per maggiori informazioni.

7.5.2 Gli identificatori degli elementi: gli attributi id e class

Definizioni degli attributi

id = name [CS]
Questo attributo assegna un nome ad un elemento. Questo nome deve essere unico nell'ambito di un documento.
class = cdata-list [CS]
Questo attributo assegna un nome di classe o un insieme di nomi di classe ad un elemento. Un qualsiasi numero di elementi può avere assegnato lo stesso nome o gli stessi nomi di classe. Nomi di classe multipli devono essere separati da caratteri di spazio bianco.
L'attributo id assegna un identificatore unico ad un elemento (che può essere verificato da un analizzatore lessicale SGML ). Per esempio, i seguenti paragrafi sono distinti dai loro valori di id:

<P id="mioparagrafo"> Questo è un paragrafo denominato in modo univoco.</P>
<P id="tuoparagrafo"> Anche questo è un paragrafo denominato in modo univoco.</P>

L'attributo id ha diversi ruoli in HTML:

L'attributo class, d'altra parte, assegna uno o più nomi di classe ad un elemento; l'elemento può essere considerato come appartenente a queste classi. Un nome di classe può essere condiviso da diverse istanze di elemento. L'attributo class ha diversi ruoli nell'HTML:

Nell'esempio seguente l'elemento SPAN è usato in congiunzione con gli attributi id e class per marcare messaggi del documento. I messaggi appaiono in entrambe le versioni inglese e francese.

<!-- Messaggi in inglese -->
<P><SPAN id="msg1" class="info" lang="en">Variable declared twice</SPAN>
<P><SPAN id="msg2" class="warning" lang="en">Undeclared variable</SPAN>
<P><SPAN id="msg3" class="error" lang="en">Bad syntax for variable name</SPAN>
<!-- Messaggi in francese -->
<P><SPAN id="msg1" class="info" lang="fr">Variable d&eacute;clar&eacute;e deux fois</SPAN>
<P><SPAN id="msg2" class="warning" lang="fr">Variable ind&eacute;finie</SPAN>
<P><SPAN id="msg3" class="error" lang="fr">Erreur de syntaxe pour variable</SPAN>

Le seguenti regole di stile CSS indicherebbero agli interpreti HTML visuali di mostrare i messaggi informativi in verde (green), i messaggi di avvertimento in giallo (yellow), e i messaggi di errore in rosso (red):

SPAN.info    { color: green }
SPAN.warning { color: yellow }
SPAN.error   { color: red }

Si noti che il messaggio francese "msg1" e quello inglese "msg1" non possono apparire nello stesso documento dato che condividono lo stesso valore di id. Gli autori possono fare ulteriore uso dell'attributo id per perfezionare la presentazione di messaggi individuali, per renderli ancore di destinazione, ecc.

Quasi ogni elemento HTML può avere identificatore e informazioni di classe assegnati.

Si supponga, per esempio, di scrivere un documento riguardante un linguaggio di programmazione. Il documento dovrà includere un insieme di esempi preformattati. È usato l'elemento PRE per formattare gli esempi. Si assegna inoltre un colore di sfondo verde (green) a tutte le instanze dell'elemento PRE appartenenti alla classe "esempio".

<HEAD>
<TITLE>... titolo del documento ...</TITLE>
<STYLE type="text/css">
PRE.esempio { background : green }
</STYLE>
</HEAD>
<BODY>
<PRE class="esempio" id="esempio-1">
...il codice dell'esempio va qui...
</PRE>
</BODY>

Impostando l'attributo id per questo esempio, si può (1) creare un collegamento ipertestuale ad esso e (2) sostituire informazioni di stile della classe con informazioni di stile dell'istanza.

Nota. L'attributo id condivide lo stesso spazio dei nomi dell'attributo name quando è usato per nomi di ancore. Si consulti la sezione sulle ancore con attributo id per maggiori informazioni.

7.5.3 Gli elementi a livello del blocco e gli elementi in linea

Certi elementi HTML che possono apparire nell'elemento BODY sono detti "a livello del blocco" mentre altri sono detti "in linea" (conosciuti anche come "a livello del testo"). Questa distinzione si fonda su diverse nozioni:

Modello del contenuto
Generalmente gli elementi a livello del blocco possono contenere elementi in linea ed altri elementi a livello del blocco. Generalmente gli elementi in linea possono contenere solo dati ed altri elementi in linea. Inerente a questa distinzione strutturale vi è l'idea che gli elementi del blocco creano strutture "più ampie" degli elementi in linea.
Formattazione
Per predefinizione gli elementi a livello del blocco sono formattati diversamente dagli elementi in linea. Generalmente gli elementi a livello del blocco iniziano su righe nuove, gli elementi in linea no. Per informazioni sullo spazio bianco, interruzioni di riga, e formattazione del blocco, si consulti la sezione sul testo.
Direzionalità
Per ragioni tecniche connesse all'algoritmo per testo bidirezionale [UNICODE], gli elementi a livello del blocco e gli elementi in linea differiscono nella maniera in cui ereditano informazioni sulla direzionalità. Per dettagli, si veda la sezione sull'ereditarierà della direzione del testo.

I fogli di stile forniscono i mezzi per riprodurre elementi arbitrari, incluso se un elemento viene riprodotto come blocco oppure in linea. In alcuni casi, quali uno stile in linea per voci di elenco, questo può essere appropriato, ma generalmente parlando, gli autori sono scoraggiati dallo scavalcare l'interpretazione convenzionale degli elementi HTML in questo modo.

L'alterazione degli idiomi di presentazione tradizionali per gli elementi a livello del blocco e gli elementi in linea ha anche un impatto sull'algoritmo per testo bidirezionale. Si veda la sezione sugli effetti dei fogli di stile sulla direzionalità per maggiori informazioni.

7.5.4 Gli elementi di raggruppamento: gli elementi DIV e SPAN

<!ELEMENT DIV - - (%flow;)*            -- contenitore di lingua/stile generici --> 
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
<!ELEMENT SPAN - - (%inline;)*         -- contenitore di lingua/stile generici -->
<!ATTLIST SPAN
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Tag di inizio: obbligatorio, Tag di fine: obbligatorio

Attributi definiti altrove

Gli elementi DIV e SPAN, insieme con gli attributi id and class, offrono un meccanismo generico per aggiungere struttura ai documenti. Questi elementi definiscono il contenuto come in linea (SPAN) o a livello del blocco (DIV) ma non impongono altri idiomi di presentazione sul contenuto. Quindi gli autori possono usare questi elementi in congiunzione con fogli di stile, all'attributo lang, ecc., per ritagliare HTML alle proprie necessità e ai propri gusti.

Si supponga, per esempio, di voler generare un documento HTML in base ad un database di informazioni sui clienti. Poiché HTML non include elementi che identificano oggetti quali "cliente", "numero telefonico", "indirizzo di posta eletronica", ecc., si usano gli elementi DIV e SPAN per ottenere gli effetti strutturali e di presentazione desiderati. Si potrebbe usare l'elemento TABLE come segue per strutturare le informazioni:

<!-- Esempio di dati dal database dei clienti: -->
<!-- Nome: Stephane Boyera, Tel: (212) 555-1212, Email: sb@foo.org -->
<DIV id="cliente-boyera" class="cliente">
<P><SPAN class="titolo-cliente">Informazioni sul cliente:</SPAN>
<TABLE class="dati-cliente">
<TR><TH>Cognome:<TD>Boyera</TR>
<TR><TH>Nome:<TD>Stephane</TR>
<TR><TH>Tel:<TD>(212) 555-1212</TR>
<TR><TH>Email:<TD>sb@foo.org</TR>
</TABLE>
</DIV>
<DIV id="cliente-lafon" class="cliente">
<P><SPAN class="titolo-cliente">Informazioni sul cliente:</SPAN>
<TABLE class="dati-cliente">
<TR><TH>Cognome:<TD>Lafon</TR>
<TR><TH>Nome:<TD>Yves</TR>
<TR><TH>Tel:<TD>(617) 555-1212</TR>
<TR><TH>Email:<TD>yves@coucou.com</TR>
</TABLE>
</DIV>

Più tardi si possono aggiungere facilmente dichiarazioni di fogli di stile per adattare in dettaglio la presentazione di questi elementi del database.

Per un altro esempio di utilizzazione, si consulti l'esempio nella sezione sugli attributi class e id.

Gli interpreti HTML visuali generalmente inseriscono un'interruzione di riga prima e dopo gli elementi DIV, ad esempio:

<P>aaaaaaaaa<DIV>bbbbbbbbb</DIV><DIV>ccccc<P>ccccc</DIV>

che è tipicamente riprodotta come:

aaaaaaaaa
bbbbbbbbb
ccccc

ccccc

7.5.5 Le intitolazioni: gli elementi H1, H2, H3, H4, H5, H6

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">
<!--
  Ci sono sei livelli di intitolazioni da H1 (il più importante)
  a H6 (il meno importante).
-->
<!ELEMENT (%heading;)  - - (%inline;)* -- intitolazione -->
<!ATTLIST (%heading;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Tag di inizio: obbligatorio, Tag di fine: obbligatorio

Attributi definiti altrove

Un elemento di intitolazione descrive brevemente l'argomento della sezione che introduce. Le informazioni di intitolazione possono essere usate dagli interpreti HTML, per esempio, per costruire automaticamente un sommario per un documento.

Ci sono sei livelli di intitolazione in HTML con H1 come il più importante e H6 come il meno importante. Gli interpreti HTML visuali generalmente riproducono le intitolazioni più importanti in caratteri più grandi di quelle meno importanti.

L'esempio seguente mostra come usare l'elemento DIV per associare una intitolazione alla sezione di documento che la segue. Fare questo permette di definire uno stile per la sezione (colorare lo sfondo, impostare il carattere, ecc.) tramite i fogli di stile.

<DIV class="section" id="forest-elephants" >
<H1>Gli elefanti della foresta</H1>
<P>In questa sezione si discute dei meno conosciuti elefanti della 
foresta.
...questa sezione  continua...
<DIV class="subsection" id="forest-habitat" >
<H2>Habitat</H2>
<P>Gli elefanti della foresta non vivono sugli alberi ma tra questi.
...questa sottosezione continua...
</DIV>
</DIV>

Questa struttura può essere decorata con informazioni di stile quali:

<HEAD>
<TITLE>... titolo del documento ...</TITLE>
<STYLE type="text/css">
DIV.section { text-align: justify; font-size: 12pt}
DIV.subsection { text-indent: 2em }
H1 { font-style: italic; color: green }
H2 { color: green }
</STYLE>
</HEAD>

Sezioni numerate e riferimenti
HTML non causa di per sé stesso la generazione dei numeri di sezione dalle intitolazioni. Questa agevolazione, comunque, può essere offerta dagli interpreti HTML. Fra breve, linguaggi per fogli di stile quale CSS consentiranno agli autori di controllare la generazione dei numeri di sezione (utile per rimandi in avanti nei documenti stampati, come in "Si consulti la sezione 7.2").

Alcuni ritengono che saltare livelli di intitolazione sia una cattiva pratica. Essi accettano H1 H2 H1 mentre non accettano H1 H3 H1 poiché il livello di intitolazione H2 risulta saltato.

7.5.6 L'elemento ADDRESS

<!ELEMENT ADDRESS - - (%inline;)* -- informazioni sull'autore -->
<!ATTLIST ADDRESS
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Tag di inizio: obbligatorio, Tag di fine: obbligatorio

Attributi definiti altrove

L'elemento ADDRESS può essere usato dagli autori per fornire informazioni su chi contattare in merito a un documento o una parte rilevante di un documento quale un modulo. Questo elemento appare spesso all'inizio o alla fine di un documento.

Per esempio, una pagina sul sito Web del W3C relativa a HTML può includere le seguenti informazioni di contatto:

<ADDRESS>
<A href="../People/Raggett/">Dave Raggett</A>, 
   <A href="../People/Arnaud/">Arnaud Le Hors</A>, 
persone da contattare riguardo all'<A href="Activity">Attività del W3C 
su HTML</A><BR> 
$Date: 1998/04/02 00:20:03 $
</ADDRESS>