Autore: | M. Piai |
---|---|
Data: | 2004-08-26 |
Aggiornamenti: | 2004-08-27, 2004-08-28, 2004-08-29, 2004-09-04, 2004-09-07, 2004-09-13, 2004-09-26, 2004-09-29, 2004-09-30, 2004-10-01, 2004-10-03 |
Il presente documento vuole illustrare l'uso dei principali elementi HTML, con un'impostazione volutamente poco formale e operativa, senza però voler tralasciare del tutto aspetti importanti come la verifica della correttezza sintattica dei documenti HTML.
L'obiettivo principale è quello di portare rapidamente il lettore a scrivere semplici documenti HTML privi di errori grossolani, in modo da poter sfruttare i principali programmi per la gestione e l'elaborazione dei documenti stessi. Successivamente vengono introdotti ulteriori concetti maggiormente tecnici e orientati ad applicazioni specifiche legate a HTML, come i moduli FORM e altro ancora.
Diverse parti del presente documento derivano più o meno esplicitamente da spunti - sia stilistici che di contenuto - ricavati dagli «Appunti di informatica libera» di Daniele Giacomini, come spiegato nella sezione intitolata Copyright. Inoltre - sebbene gran parte dei concetti qui esposti siano standard e quindi indipendenti dalla piattaforma hardware e software utilizzata - gli esempi illustrati sono stati verificati su un sistema GNU/Linux e su una piattaforma hardware i386 (Intel).
Questo documento è stato realizzato utilizzando gli strumenti Docutils.
Quando si compone un documento scritto, solitamente si espongono i concetti voluti mediante parole, le quali vengono raggruppate in proposizioni.
Esempio
Per esempio:
L'Italia è una Repubblica democratica
è una proposizione formata da sei parole; come è noto, le parole sono separate le une dalle altre tramite spazi, oppure mediante speciali simboli del linguaggio, come l'apostrofo, «'», o altri ancora.
Le proposizioni possono essere raggruppate in periodi, e più periodi in paragrafi.
Esempio
Per esempio:
L'Italia è una Repubblica democratica, fondata sul lavoro.
è un periodo fomato da due proposizioni; come è noto, le proposizioni sono separate le une dalle altre tramite spazi, speciali simboli di punteggiatura, come la virgola, «,», e altri ancora, oppure congiunzioni.
Ancora:
L'Italia ripudia la guerra come strumento di offesa alla libertà degli altri popoli e come mezzo di risoluzione delle controversie internazionali
è un periodo formato da due proposizioni, separate dalla congiunzione «e»; come è noto, ciascuna proposizione dovrebbe essere retta da un predicato verbale, anche se talvolta questo è incompleto o addirittura omesso (o sottinteso, specie per evitare ripetizioni dello stesso).
Ancora:
L'Italia ripudia la guerra come strumento di offesa alla libertà degli altri popoli e come mezzo di risoluzione delle controversie internazionali; consente, in condizioni di parità con gli altri Stati, alle limitazioni di sovranità necessarie ad un ordinamento che assicuri la pace e la giustizia fra le Nazioni; promuove e favorisce le organizzazioni internazionali rivolte a tale scopo.
è un paragrafo formato da tre periodi, separati l'uno dall'altro tramite punto e virgola, «;». Il paragrafo è concluso dal punto, «.», che a volte può essere utilizzato anche per separare i periodi all'interno dello stesso paragrafo.
Più paragrafi possono essere raggruppati in un documento, formando ad esempio una sezione di testo. Per separare i paragrafi è prassi l'utilizzo di una riga di testo vuota.
Esempio
Ecco una sezione formata da tre paragrafi:
Questo è il primo paragrafo... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Questo è il secondo paragrafo... bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla. Questo è il terzo paragrafo... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
È possibile utilizzare alcuni degli elementi del linguaggio HTML per marcare le parti del testo di un documento, ossia per assegnare alle stesse un particolare significato; tale marcatura potrebbe in seguito essere utilizzata da dei programmi per la visualizzazione, la composizione per la stampa, o per altre particolari elaborazioni relative al documento stesso.
Gli elementi HTML sono caratterizzati da marcatori di apertura e di chiusura (questi ultimi possono a volte essere omessi; in certi casi non sono neppure previsti) e da un contenuto, ossia da tutto ciò che si trova fra il marcatore di apertura e quello di chiusura relativi all'elemento stesso. I marcatori di apertura hanno la seguente forma:
<NOME>
mentre quelli di chiusura hanno la seguente forma:
</NOME>
dove, con NOME si intende il nome dell'elemento.
Nota
La forma generale dei marcatori di apertura potrebbe essere più complessa di quella illustrata, per esempio potrebbe contenere attributi; ad esempio:
<NOME ATTRIBUTO1="valore1" ATTRIBUTO2="valore2">
è un marcatore che presenta due attributi, ciascuno con un suo valore. Si tenga presente che i marcatori di chiusura sono sempre privi di attributi.
L'elemento che si utilizza per marcare i paragrafi è l'elemento P.
Esempio
L'esempio precedente potrebbe essere marcato come segue:
<P>Questo è il primo paragrafo... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.</P> <P>Questo è il secondo paragrafo... bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla.</P> <P>Questo è il terzo paragrafo... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.</P>
Tipicamente, un gruppo omogeneo di paragrafi costituisce una sezione autonoma del documento; come tale, la sezione dovrebbe iniziare con un titolo che la contraddistingua all'interno del documento. HTML mette a disposizione una serie di elementi appositi a tale scopo, da H1 a H6; intuitivamente, il primo rappresenta un titolo di importanza maggiore, mentre l'ultimo è quello di importanza minore. Nel caso più semplice, ossia quello di un documento formato da un'unica sezione, su utilizza solitamente solo l'elemento H1, che in questo caso potrebbe servire a marcare anche il titolo del documento stesso (anche se a questo scopo è designato un altro elemento, TITLE, di cui si parlerà in seguito).
Esempio
Facendo sempre riferimento ai precedenti esempi, si potrebbe aggiungere un titolo di sezione principale in questo modo:
<H1>Questo è il titolo della sezione</H1> <P>Questo è il primo paragrafo... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.</P> <P>Questo è il secondo paragrafo... bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla.</P> <P>Questo è il terzo paragrafo... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.</P>
Se invece si volesse strutturare il documento in modo più complesso, si potrebbe procedere come segue:
<H1>Questo è il titolo della sezione principale</H1> <H2>Questo è il titolo della prima sezione di secondo livello</H2> <P>Questo è il primo paragrafo della prima sezione di secondo livello... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.</P> <P>Questo è il secondo paragrafo... bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla.</P> <H2>Questo è il titolo della seconda sezione di secondo livello</H2> <P>Questo è il primo paragrafo della seconda sezione di secondo livello... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.</P>
Verranno ora illustrati alcuni programmi per la resa e l'elaborazione dei documenti HTML.
Nota
Un documento HTML è un file di testo che contiene elementi HTML rispettando la sintassi specificata dal linguaggio HTML. Affinchè la sintassi sia corretta, è necessario che i vari elementi siano distribuiti in uno specifico ordine; inoltre alcuni elementi non possono essere omessi. Per il momento si ignoreranno tali aspetti formali, anche perchè i programmi che verranno utilizzati sono piuttosto «tolleranti» rispetto alla correttezza sintattica; sia chiaro, comunque, che gli esempi visti sinora non rispettano appieno la sintassi del linguaggio.Per rendere (ossia visualizzare) un documento HTML si è soliti utilizzare un programma di navigazione ipertestuale; ad esempio si potrebbe utilizzare Mozilla.
Esempio
Si supponga quindi di disporre di un file di testo, esempio.html, contenente il testo del precedente esempio, e si esegua il seguente comando da un terminale a finestra:
$ mozilla esempio.html
il risultato che dovrebbe apparire potrebbe essere simile al seguente:
Si noti quanto segue:
Volendo, è possibile sfruttare il navigatore per stampare su carta la resa del documenti HTML; tuttavia i risultati possono essere insoddisfacenti, e si preferisce quindi utilizzare programmi specifici per la composizione per la stampa; uno di questi è HTML2ps.
Mediante HTML2ps è possibile, a partire da un documento HTML, generare un file PostScript; tale file può successivamente essere visualizzato e stampato tramite, ad esempio, GV.
Esempio
A titolo di esempio, per generare un file PostScript, denominato esempio.ps, a partire dal file esempio.html, si esegue il comando:
$ html2ps -o esempio.ps esempio.html
dopodiché è possibile visualizzare il file PostScript mediante il comando:
$ gv esempio.ps
ed eventualmente stamparlo su carta utilizzando la voce «Print document...» del menù «File».
HTML2ps offre alcune possibilità aggiuntive per controllare l'aspetto del file PostScript generato, tramite l'uso di opzioni della linea di comando.
Esempio
A titolo di esempio, il comando:
$ html2ps -s 2 -L -2 -n -S "paper {type: A4;}" -l it -o esempio.ps esempio.html
produce un file PostScript con il testo ingrandito a dimensioni doppie (opzione -s 2), orientato orizzontalmente (opzione -L), organizzato su due colonne (opzione -2), con le pagine numerate (opzione -n), con un formato per la stampa su carta A4 (opzione -S "paper {type: A4;}") e specificando che il documento aderisce alle convenzioni della lingua italiana (opzione -l it).
Se si desidera preparare una versione puramente testuale del proprio documento, adatta ad esempio alla stampa a caratteri o alla visualizzazione su terminale, è possibile utilizzare il navigatore ipertestuale W3M.
Esempio
Per esempio, con il comando:
$ w3m -dump esempio.html > esempio.text
si genera, a partire dal sorgente HTML, una resa puramente testuale contenuta nel file esempio.text.
In seguito è possibile stampare il file esempio.text mediante il comando:
$ lpr esempio.text
Si può notare che W3M produce un file di testo ottimizzato per una larghezza pari a 80 colonne di testo; se lo si desidera, è possibile preventivamente ridurre le colonne occupate in larghezza dal file di testo usando l'opzione -cols:
$ w3m -dump -cols 66 esempio.html > esempio.text
e poi eventualmente stampare il file esempio.text.
Il contenuto di un elemento P si chiama anche testo lineare, mentre l'elemento P, nel suo complesso, costituisce un esempio di ciò che comunemente viene detto blocco (o block element). È possibile marcare alcune parti del testo lineare mediante elementi di testo (o inline element), che permettono di qualificare in modo più dettagliato le parti stesse. Fra i più comuni vi sono gli elementi: EM, STRONG, Q, CODE, SUB, SUP, BR.
L'elemento EM enfatizza il testo contenuto, di solito in corsivo.
L'elemento STRONG evidenzia il testo contenuto, di solito in neretto.
L'elemento Q marca il testo come citato, di solito indicandolo fra qualche tipo di delimitatore (ad esempio virgolette).
L'elemento CODE marca il testo come codice usato in una elaborazione, e viene di solito reso in carattere dattilografico (monospaziato).
Gli elementi SUB e SUP marcano il testo come, rispettivamente, a pedice e ad apice.
L'elemento BR permette di interrompere una riga di testo lineare senza interrompere il testo stesso; in pratica permette di andare a capo all'interno di un paragrafo; si tratta di un elemento vuoto, ossia privo di contenuto, e quindi non prevede il marcatore di chiusura.
Esempio
Il seguente frammento di documento HTML:
<H1>Elementi del testo lineare</H1> <P>All'interno di un <EM>testo lineare</EM> si possono usare elementi che delimitano e qualificano il testo che racchiudono.<BR>Questo è un <STRONG>neretto</STRONG>, questa è la molecola dell'acqua: <CODE>H<SUB>2</SUB>O</CODE>.</P> <P>Si osservi comunque che non tutti gli elementi che delimitano del testo lineare producono necessariamente un effetto visibile nel risultato ottenuto attraverso il navigatore, oppure possono prevedere l'inserzione di altri simboli. Per esempio, Dante Alighieri scrisse: <Q>Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura ché la diritta via era smarrita.</Q></P>
potrebbe essere reso come segue:
Si noti che l'elemento BR interrompe la riga del testo lineare ma non il paragrafo, come suggerito dal fatto che la sua presenza (dopo la parola «racchiudono.») non introduce una riga vuota.
Il linguaggio HTML prevede l'utilizzo di elementi per l'inserimento di immagini, provenienti da file esterni, all'interno del testo lineare; tuttavia, per evitare problemi di compatibilità con i vari programmi di navigazione, è bene staccare tali elementi dal testo normale, racchiudendoli esplicitamente all'interno di un elemento P.
L'elemento tradizionale per inserire immagini è IMG. Esso prevede diversi attributi, in particolare SRC per indicare il file esterno contenente l'immagine da includere e ALT per fornire un testo alternativo da presentare in caso di impossibilità di visualizzazione dell'immagine.
Esempio
Si consideri il seguente frammento HTML:
<H1>Inclusione di oggetti</H1> <P>... bla bla bla...</P> <P>Infine, per essere certi che tutto funzioni anche con un vecchio navigatore, è sempre meglio limitarsi a usare l'elemento <CODE>IMG</CODE> per le immagini:</P> <P><IMG SRC="philosophical-gnu-sm.jpg" ALT="GNU filosofico"></P> <P>... bla bla bla...</P>
Qualora l'immagine sia accessibile, la resa potrebbe essere la seguente:
Se, invece, per qualche motivo l'immagine non fosse accessibile, la resa potrebbe essere la seguente:
Quando si compongono documenti HTML, è utile avere a disposizione degli strumenti che possano aiutare a verificare la presenza o l'assenza di errori sintattici.
Come accennato, i vari elementi di un documento HTML devono distribuirsi secondo determinate regole, così come i vari marcatori relativi agli elementi. Le regole sono di solito codificate all'interno di opportuni documenti pubblicati dal soggetto internazionale responsabile dello standard HTML, il W3C, oppure da altri soggetti come ISO. Però anche un documento HTML incompleto può essere, in parte, controllato, senza tuttavia sperare di validarlo. In ogni caso gli strumenti del pacchetto SP permettono una verifica sommaria, mediante il comando:
$ nsgmls -s FILE_HTML
oppure:
$ nsgmls -s FILE_HTML 2>&1 | less
a seconda della «consistenza» della lista di messaggi generata dal comando nsgmls.
Bisogna, però, avere l'accortezza di utilizzare anche l'elemento BODY; si tratta di un elemento obbligatorio che contiene ciò che viene visto normalmente in fase di resa, altrimenti il comando nsgmls non può funzionare.
Esempio
Consideriamo ad esempio il seguente frammento HTML:
<BODY> <H1>Questo è il titolo della sezione</H1> <P>Questo è il primo paragrafo... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.</P> </P>Questo è il secondo paragrafo... bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla.<P> <P>Questo è il terzo paragrafo... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.</P> </BODY>
Se si effettua la verifica sintattica si ottiene quanto segue:
$ nsgmls -s esempio2.html nsgmls:esempio2.html:1:0:E: no document type declaration; will parse without validation nsgmls:esempio2.html:11:3:E: end tag for element "P" which is not open nsgmls:esempio2.html:23:6:E: end tag for "P" omitted, but its declaration does not permit this nsgmls:esempio2.html:15:8: start tag was here
La prima riga del responso del comando nsglms è inevitabile, poiché il frammento analizzato è incompleto; la seconda riga dice che alla riga 11 del frammento si trova il marcatore di chiusura per un elemento P che non era stato ancora aperto... effettivamente, ad un'analisi più attenta, risulta che nel secondo paragrafo i marcatori dell'elemento P risultano invertiti... una volta corretto tale errore, ed effettuata di nuovo la verifica sintattica si ottiene il messaggio:
$ nsgmls -s esempio2.html nsgmls:esempio2.html:1:0:E: no document type declaration; will parse without validation
ossia il frammento è in sostanza sintatticamente corretto. Nel seguito si vedrà come far sparire anche questo messaggio.
In precedenza si è specificato che solo di un documento HTML formattato secondo le specifiche di qualche standard si può controllare la validità. Esistono diversi standard che specificano la struttura di un documento HTML; tali standard si sono sviluppati a partire dal 1990, dando luogo a caratteristiche fra di loro a volte incompatibili. Senza indulgere in dettagli sulla storia evolutiva degli standard, si specifica che lo sviluppo conclusivo è stato condotto da W3C e l'ultima versione è la 4.01; la stabilizzazione dello standard HTML con le versioni 4.* di W3C ha portato alla definizione dello standard ISO 15445, che precisa meglio i limiti di questo formato. Si osservi che un documento conforme allo standard ISO 15445 è anche conforme allo standard HTML 4.01 di W3C.
Secondo lo standard ISO 15445, la struttura generale di un documento HTML deve rispettare il seguente schema:
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN"> <HTML> <HEAD> <TITLE>...</TITLE> </HEAD> <BODY> ... ... ... </BODY> </HTML>
ove, al posti delle ellissi ... si devono inserire il titolo del documento e il corpo del documento.
La prima riga serve a dichiarare l'intenzione di aderire allo standard ISO 15445, e va sempre indicata esattamente come sopra riportato.
L'intero documento, tranne la dichiarazione iniziale, deve essere contenuto nell'elemento HTML.
Il documento si compone sostanzialmente di due elementi: HEAD e BODY; l'elemento BODY, come già accennato, contiene sostanzialmente tutto quello che poi viene visualizzato in fase di resa; l'elemento HEAD precede l'elemento BODY, e può contenere diverse informazioni di carattere «amministrativo», fra le quali l'unica obbligatoria è costituita dall'elemento TITLE, il quale denota il titolo del documento.
Supponendo di avere a disposizione il seguente documento HTML:
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN"> <HTML> <HEAD> <TITLE>Un esempio di documento conforme a ISO 15445</TITLE> </HEAD> <BODY> <H1>Elementi del testo lineare</H1> <P>All'interno di un <EM>testo lineare</EM> si possono usare elementi che delimitano e qualificano il testo che racchiudono.<BR>Questo è un <STRONG>neretto</STRONG>, questa è la molecola dell'acqua: <CODE>H<SUB>2</SUB>O</CODE>.</P> <P>Si osservi comunque che non tutti gli elementi che delimitano del testo lineare producono necessariamente un effetto visibile nel risultato ottenuto attraverso il navigatore, oppure possono prevedere l'inserzione di altri simboli. Per esempio, Dante Alighieri scrisse: <Q>Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura ché la diritta via era smarrita.</Q></P> </BODY> </HTML>
se si esegue il comando:
$ nsgmls -s esempio.html
si osserverà l'assenza di output, il che significa che il documento aderisce allo standard dichiarato nella prima riga, ossia ISO 15445.
Il carattere tipografico che si ottiene normalmente, visualizzando un documento HTML attraverso un navigatore grafico (o anche un sistema di elaborazione per la stampa), ha una larghezza proporzionale. Quando c'è la necessità di rappresentare qualcosa con un carattere a larghezza uniforme, ovvero «dattilografico», si usano alcuni elementi appositi: CODE nell'ambito di un testo lineare; PRE come blocco separato. L'elemento PRE in particolare è molto utile per la rappresentazione di listati, come può essere una porzione di un sorgente di un linguaggio di programmazione, o il risultato dell'elaborazione di un programma.
Esempio
Si consideri il seguente frammento HTML:
<H3>Contenuto delle directory</H3> <P>Le directory si esplorano con il comando <CODE>ls</CODE>:</P> <PRE> $ ls /bin[Invio] arch dd gzip nisdomainname tar ash df hostname ping touch awk dmesg kill ps true basename dnsdomainname ln pwd umount bash doexec login rm uname bsh domainname ls rmdir vi cat echo mail rpm view chgrp egrep mkdir sed vim chmod ex mknod sh ypdomainname chown false more sleep zcat cp fgrep mount sort cpio gawk mt stty csh grep mv su date gunzip netstat sync </PRE>
La resa potrebbe essere simile alla seguente:
Ciò che in particolare si deve comprendere dall'esempio, è il comportamento dell'elemento PRE: è un blocco che contiene testo lineare, ma a differenza dell'elemento P, gli spazi orizzontali e le interruzioni di riga vengono rispettati nella resa finale, così come sono nel sorgente.
A volte, in un testo è necessario introdurre degli elenchi (o liste) di voci; è comune far precedere ciascuna voce da uno speciale simbolo tipografico (ad esempio un cerchietto) o da un numero di una sequenza. A tale scopo HTML mette a disposizione alcuni speciali elementi di blocco che tra breve saranno illustrati.
Si tenga presente che un elenco ha una struttura necessariamente più complessa rispetto a un blocco di testo lineare, dunque per realizzarlo saranno necessari più elementi. In particolare, per realizzare un elenco saranno necessari almeno due tipi di elemento: uno per indicare l'elenco stesso, e uno per ciascuna voce dell'elenco. Nel caso degli elenchi numerati, l'elemento per indicare l'elenco è OL, mentre nel caso degli elenchi puntati l'elemento è UL. Ciascuna voce dell'elenco è invece indicata dall'elemento LI. Ciascun elemento OL (oppure UL) contiene uno o più elementi LI, che possono contenere testo lineare, oppure uno o più blocchi (per esempio possono contenere dei sottoelenchi); comunque, per evitare ambiguità, conviene usare sempre dei blocchi per il contenuto degli elementi LI.
Esempio
Seguono alcuni esempi.
Il seguente frammento HTML:
<P>I - Immobilizzazioni immateriali</P> <OL><LI> <P>costi di impianto e di ampliamento</P> </LI><LI> <P>costi di ricerca, di sviluppo e di pubblicità</P> </LI><LI> <P>diritti di brevetto industriale e diritti di utilizzazione delle opere dell'ingegno</P> </LI><LI> <P>concessioni, licenze, marchi e diritti simili</P> </LI><LI> <P>avviamento</P> </LI><LI> <P>immobilizzazioni immateriali in corso e acconti</P> </LI><LI> <P>altre immobilizzazioni immateriali</P> </LI></OL>
potrebbe venir reso come segue:
Si noti come la numerazione venga generata automaticamente in fase di resa, senza che sia necessario includerla nel sorgente HTML; si noti altresì l'allineamento della lista rispetto al testo normale.
Ecco un esempio di elenco puntato:
<P>Immobilizzazioni</P> <UL><LI> <P>I - Immobilizzazioni immateriali</P> </LI><LI> <P>II - Immobilizzazioni materiali</P> </LI><LI> <P>[...]</P> </LI></UL>
che potrebbe essere reso come segue:
Ecco, infine, un esempio di elenchi «annidati»; in pratica, è possibile fare in modo che una voce di un elenco contenga un altro elenco:
<P>Immobilizzazioni</P> <UL><LI> <P>I - Immobilizzazioni immateriali</P> <OL><LI> <P>costi di impianto e di ampliamento</P> </LI><LI> <P>costi di ricerca, di sviluppo e di pubblicità</P> </LI><LI> <P>diritti di brevetto industriale e diritti di utilizzazione delle opere dell'ingegno</P> </LI><LI> <P>concessioni, licenze, marchi e diritti simili</P> </LI><LI> <P>avviamento</P> </LI><LI> <P>immobilizzazioni immateriali in corso e acconti</P> </LI><LI> <P>altre immobilizzazioni immateriali</P> </LI></OL> </LI><LI> <P>II - Immobilizzazioni materiali</P> <OL><LI> <P>terreni e fabbricati</P> </LI><LI> <P>[...]</P> </LI></OL> </LI><LI> <P>[...]</P> </LI></UL>
Ed ecco la resa del precedente frammento HTML:
Le tabelle sono elementi molto usati per la realizzazione di documenti in HTML in quanto permettono di organizzare i dati in strutture formate da righe e colonne.
Nota
Per molto tempo diversi autori di documenti HTML hanno utilizzato le tabelle anche allo scopo di impostare il layout di una pagina disponendo i paragrafi in colonne, oppure creando dei margini, o ancora distribuendo testo ed immagini in modo più vario e movimentato; sebbene questo utilizzo non otrodosso delle tabelle sia ancora molto in voga, si tratta di una pratica deprecata dal W3C, il quale suggerisce di utilizzare gli stili a questo scopo; di conseguenza, negli esempi di questa sezione, ci si asterrà dall'utilizzo delle tabelle a scopo meramente estetico.La tabella è definita dall'elemento TABLE; al suo interno può essere inclusa una didascalia rappresentata dall'elemento CAPTION, quindi il contenuto della tabella viene distinto in intestazione, piede e corpo, all'interno dei quali si inseriscono le righe della tabella stessa. L'intestazione e il piede non sono obbligatori; in ogni caso, se si utilizzano vanno inseriti ordinatamente prima del corpo.
Inoltre, si tenga presente che lo standard ISO 15445 obbliga all'utilizzo dell'attributo SUMMARY nell'elemento TABLE. Questo attributo dovrebbe permettere di riassumere il contenuto della tabella per quelle situazioni in cui dovesse essere impossibile consultarla correttamente (eventualmente, è anche possibilile non sfruttare questa possibilità, pur mantenendo l'aderenza allo standard, semplicemente dando valore nullo all'attributo, così: SUMMARY="").
Ecco gli elementi da usare per la realizzazione delle tabelle HTML:
Elemento | Significato |
---|---|
TABLE | Delimita la tabella. |
CAPTION | Didascalia. |
THEAD | Righe di intestazione. |
TFOOT | Righe del piede. |
TBODY | Righe del corpo. |
TR | Riga normale (table row). |
TH | Elemento evidenziato di una riga (table head). |
TD | Elemento di una riga (table data). |
Esempio
Poiché intestazione e piede non sono obbligatori, un caso semplificato al massimo di tabella potrebbe essere illustrato dal seguente frammento HTML:
<TABLE SUMMARY="I numeri interi da 1 a 6"><TBODY><TR><TD> <P>uno</P></TD><TD><P>due</P> </TD></TR><TR><TD> <P>tre</P></TD><TD><P>quattro</P> </TD></TR><TR><TD> <P>cinque</P></TD><TD><P>sei</P> </TD></TR></TBODY></TABLE>
La resa grafica potrebbe essere simile alla seguente figura:
Vale la pena di sottolineare il fatto che gli elementi TD, ovvero le celle all'interno delle righe, possono contenere sia testo normale, sia blocchi di testo, ma qui, come nelle altre sezioni del presente articolo, si preferisce usare sempre solo blocchi.
Si noti che la resa grafica del precedente esempio non presenta nessun tipo di messa in risalto dei bordi della tabella; in effetti, lo standard ISO 15445 non consente l'utilizzo di attributi per la descrizione dei bordi da far risaltare, perché per questo si possono applicare degli stili, come viene illustrato nel seguito.
L'evoluzione del linguaggio HTML si è sviluppata attraverso la ricerca di introdurre elementi e attributi per il controllo della resa estetica. Tuttavia, questo approccio ha dimostrato di non essere efficace e lo standard ISO 15445 ha eliminato tutto il superfluo, per lasciare il controllo dell'estetica al di fuori del linguaggio, contando eventualmente sui fogli di stile CSS per questo scopo.
Il modo più semplice per utilizzare gli stili è forse quello di incorporare il contenuto di un foglio di stile direttamente all'interno di un documento HTML usando (all'interno dell'elemento HEAD) l'elemento STYLE, come nell'esempio seguente:
<HEAD> <TITLE>Esempio</TITLE> <STYLE TYPE="text/css"><!-- H1 { color: blue; } P { font-size: 8pt; color: red; } --></STYLE> </HEAD> <BODY> <H1>Questo è il titolo della sezione principale</H1> <H2>Questo è il titolo della prima sezione di secondo livello</H2> <P>Questo è il primo paragrafo della prima sezione di secondo livello... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.</P> <P>Questo è il secondo paragrafo... bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla.</P> <H2>Questo è il titolo della seconda sezione di secondo livello</H2> <P>Questo è il primo paragrafo della seconda sezione di secondo livello... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.</P> </BODY>
Teoricamente, il titolo principale dovrebbe apparire di colore blu e il testo dei paragrafi di colore rosso con dimensioni del carattere leggermente ridotte rispetto al normale, come si vede nella figura successiva:
Il linguaggio CSS (Cascading style sheet) permette di esprimere le caratteristiche «stilistiche» delle varie componenti di un documento HTML; questo avviene tramite regole come la seguente:
H1 { color: blue; }
in cui è presente un selettore (in questo caso H1) seguito da una dichiarazione fra parentesi graffe { e } terminata dal simbolo ;; la dichiarazione è composta da una proprietà separata dal successivo valore tramite il simbolo :. Una dichiarazione può eventualmente essere composta da più coppie proprietà/valore, come nel seguente esempio:
P { font-size: 8pt; color: red; }
Inoltre, al posto di un singolo selettore potrebbe essere indicata una lista di selettori separata dal simbolo ,.
Il selettore di una regola CSS è qualcosa che rappresenta una parte del testo a cui si vogliono applicare le dichiarazioni relative. Nella situazione più semplice, il selettore viene indicato con il nome dell'elemento a cui si attribuisce, come già apparso negli esempi mostrati in precedenza.
Un caso particolarmente interessante di utilizzo degli stili è quello che permette di «decorare» opportunamente le tabelle HTML, le quali (si rammenti) normalmente vengono rese in una forma esteticamente piuttosto spoglia. A tale scopo sono utili le proprietà CSS seguenti: border-style, border-width, background-color.
Esempio
Si riconsideri l'esempio iniziale, e lo si completi come segue:
<HEAD> <TITLE>Esempio</TITLE> <STYLE TYPE="text/css"><!-- TABLE { border-style: dotted; border-width: thick; } --></STYLE> </HEAD> <BODY> <TABLE SUMMARY="I numeri interi da 1 a 6"><TBODY><TR><TD> <P>uno</P></TD><TD><P>due</P> </TD></TR><TR><TD> <P>tre</P></TD><TD><P>quattro</P> </TD></TR><TR><TD> <P>cinque</P></TD><TD><P>sei</P> </TD></TR></TBODY></TABLE> </BODY>
ossia, si attribuisca (tramite il corrispondente selettore) all'elemento TABLE la proprietà di avere un bordo spesso con stile puntato. Graficamente il risultato potrebbe essere simile al seguente:
Uno stile più consueto potrebbe essere il seguente:
<STYLE TYPE="text/css"><!-- TABLE { border-style: solid; border-width: medium; } TD { border-style: dashed; border-width: thin; background-color: yellow; } --></STYLE>
corrispondente alla seguente resa grafica:
Si tenga comunque presente che, in generale, l'uso dei colori deve essere considerato con attenzione, sia per il fatto che alcuni possibili utenti del documento potrebbero non essere in grado di visualizzarli correttamente, sia perché alcuni programmi che trasformano documenti HTML in altri formati non supportano pienamente l'intero repertorio CSS (senza contare il fatto che spesso i documenti vengono stampati con stampanti in bianco e nero).
Se l'unico effetto che si vuole ottenere (ed è il caso più comune) è quello di bordare la tabella e le singole celle, sono sufficienti le regole seguenti:
TABLE { border-style: solid; border-width: thin; } TD { border-style: dotted; border-width: thin; }
o qualcosa del genere.
Ecco nel dettaglio le principali proprietà di interesse nello stile delle tabelle e di tutti i blocchi rettangolari:
Proprietà | Valori | Descrizione |
---|---|---|
border-width | thin | Bordo sottile. |
medium | Bordo medio. | |
thick | Bordo spesso. | |
border-color | colore | Colore del bordo. |
border-style | none | Bordo non visibile. |
dotted | Bordo puntato. | |
dashed | Bordo tratteggiato. | |
solid | Bordo continuo. | |
double | Bordo continuo doppio. | |
width | auto | Larghezza automatica. |
n pt | Larghezza in punti. | |
n cm | Larghezza in centimetri. | |
n mm | Larghezza in millimetri. | |
n % | Larghezza relativa in percentuale. | |
height | auto | Altezza automatica. |
n pt | Altezza in punti. | |
n cm | Altezza in centimetri. | |
n mm | Altezza in millimetri. | |
n % | Altezza relativa in percentuale. |
Nel capitolo intitolato «Blocchi» degli «Appunti di informatica libera» il lettore potrà trovare ulteriori informazioni in merito.
Si consideri ad esempio la seguente figura:
la quale rappresenta una tabella con piede, corpo e intestazione. Per ottenere una simile tabella, completa di bordi sulle singole celle, è possibile scrivere il seguente codice HTML:
<HEAD> <TITLE>Esempio tabella con stili</TITLE> <STYLE TYPE="text/css"><!-- THEAD { background-color: cyan; } TFOOT { background-color: yellow; } TD { border-style: solid; border-width: thin; } --></STYLE> </HEAD> <BODY> <TABLE SUMMARY=""><THEAD><TR><TD> <P>Codice RGB</P></TD><TD><P>Denominazione</P> </TD></TR></THEAD><TFOOT><TR><TD> <P>Codice RGB</P></TD><TD><P>Codice RGB</P> </TD></TR></TFOOT><TBODY><TR><TD> <P>255,0,0</P></TD><TD><P>Rosso</P> </TD></TR><TR><TD> <P>0,255,0</P></TD><TD><P>Verde</P> </TD></TR><TR><TD> <P>0,0,255</P></TD><TD><P>Blu</P> </TD></TR></TBODY></TABLE> </BODY>
Come esercizio per il lettore volenteroso, si provi l'effetto della proprietà border-collapse in corrispondenza del selettore TABLE, tenendo presente i valori separate e collapse.
HTML2ps (versione 1.0 beta3) non gestisce che un limitato sottoinsieme di regole del linguaggio CSS, e in particolare sembra ignorare le proprietà riguardanti i bordi dei blocchi rettangolari, il che influsce sulla resa delle tabelle. Inoltre non considera le proprietà riguardanti il colore dello sfondo, e altre ancora come la larghezza delle celle.
Per risolvere, almeno in parte, il primo problema si deve uscire dall'ambito dello standard ISO 15445, e in particolare utilizzare l'attributo BORDER dell'elemento TABLE 1, previsto ad esempio da standard meno restrittivi, come HTML 4.01 o addirittura HTML 3.2 di W3C.
Esempio
Si consideri il primo esempio presentato nella sezione intitolata Applicazione degli stili alle tabelle. La resa PostScript prodotta da HTML2ps potrebbe essere qualcosa del genere:
Volendo, se si sostituisce la riga:
<TABLE SUMMARY="I numeri interi da 1 a 6"><TBODY><TR><TD>
con la riga:
<TABLE SUMMARY="I numeri interi da 1 a 6" BORDER="1"><TBODY><TR><TD>
si avrebbe una resa PostScript simile alla seguente:
Ci sono almeno due effetti collaterali indesiderati nella soluzione proposta nel precedente esempio:
Per quanto riguarda il secondo problema, può venire in aiuto il seguente script SED:
#!/bin/sed -f # # htmltableborder.sed # s/\(<TABLE\)/\1 BORDER=\"1\"/g
Per illustrarne il funzionamento si consideri il seguente esempio interattivo:
$ cat tab.html <TABLE SUMMARY="I numeri interi da 1 a 6"><TBODY><TR><TD> <P>uno</P></TD><TD><P>due</P> </TD></TR><TR><TD> .... $ ./htmltableborder.sed tab.html > tab-no-iso.html $ cat tab-no-iso.html <TABLE BORDER="1" SUMMARY="I numeri interi da 1 a 6"><TBODY><TR><TD> <P>uno</P></TD><TD><P>due</P> </TD></TR><TR><TD> ....
Pertanto, se si desidera aggiungere l'attributo non conforme BORDER prima di dare il documento HTML in pasto a HTML2ps, si può procedere con una pipeline, come segue:
$ ./htmltableborder.sed tab.html | html2ps -o tab.ps
Nota
Esistono altri problemi inerenti il difettoso supporto di HTML2ps al linguaggio CSS, nell'ambito delle tabelle: ad esempio non sembrano essere supportate alcune proprietà relative all'allineamento e alla larghezza. Anche in questi casi può essere necessario deviare temporaneamente dallo standard ISO 15445, e introdurre attributi specifici per i vari elementi. Preparare opportuni script che siano di ausilio a rendere (per quanto possibile) automatici tali inteventi può essere un utile esercizio per il lettore diligente e interessato.
Si consiglia comunque di non intestardirsi troppo nella ricerca di aspetti estetici più o meno soddifacenti, poiché è nella loro natura che siano soggetti a continue e mai terminate revisioni. È meglio invece concentrarsi sullo studio degli elementi strutturali dei documenti che si preparano (e sul contenuto) e accontentarsi dell'aspetto finale dei risultati che si ottengono automaticamente, poichè spesso è il migliore che si possa avere da più punti di vista.
La composizione di un documento HTML richiede una solida conoscenza del linguaggio, ma le caratteristiche sintattiche del linguaggio sono tali da indurre anche i più esperti in errori od omissioni. Allo scopo di evitare - per quanto possibile - questo genere di inconvenienti è necessario utilizzare degli strumenti di composizione abbastanza sofisticati da consentire di automatizzare l'inserimento dei marcatori e delle varie componenti sintattiche, magari secondo uno stile personalizzato.
Ovviamente la realizzazione pratica di quanto sopra descritto dipende sia dallo specifico editor utilizzato che dallo stile che l'autore sceglie di adottare; per quanto riguarda lo stile, una lettura attenta degli esempi proposti dovrebbe chiarire alcuni aspetti stilistici congeniali all'autore del presente documento; relativamente all'editor, si propone in questa sezione una soluzione che riguarda nVI, l'editor utilizzato dall'autore (se il lettore intende adattare tali proposte al suo editor preferito dovrà ovviamente consultare l'opportuna documentazione).
nVI consente l'uso di abbreviazioni; ciò significa che è possibilie associare a opportune sequenze di caratteri delle altre.
Esempio
Se, ad esempio, durante una sessione di editing si esegue il comando:
:ab CPP Codice di Procedura Penale
allora, da quel momento in poi, ogni volta che si inserisce nel testo la stringa CPP, essa verrà automaticamente sostituita con la stringa Codice di Procedura Penale.
La validità delle abbreviazioni definite nel corso di una sessione di editing termina con la sessione stessa. Per fare in modo che le abbreviazioni siano permanenti è necessario inserire i corrispondenti comandi nel file di configurazione ~/.exrc: i comandi presenti in questo file vengono eseguiti all'avvio di ciascuna sessione di nVI.
Nel tempo, ogni utente di nVI tende a personalizzare il file ~/.exrc, per adattarlo alle proprie esigenze. L'autore del presente documento non fa eccezione e propone in questa sede il proprio; il file in questione è reperibile via Internet presso http://linuxdidattica.org/docs/altre_scuole/msm_p/hxs_01_01.exrc o localmente presso il nodo che serve questo documento. e una volta scaricato va opportunamente collocato e rinominato per l'uso, oppure combinato col proprio file personalizzato, qualore esso già esistesse.
Il file contiene in particolare una serie di abbreviazioni utili alla composizione «manuale» di documenti HTML, coerentemente a quanto già esposto nelle precedenti sezioni; inoltre sono presenti dei comandi che rendono più semplice l'utlizzo generale dell'editor oltre a delle abbreviazioni che corrispondono a comandi utili per la riformattazione dei paragrafi, e altro ancora.
Ecco di seguito riassunte le abbreviazioni di interesse per l'editing di documenti HTML presenti nel file di configurazione, opportunamente commentate:
Abbreviazione | Significato |
---|---|
HThtml | Elemento HTML |
HThead | Elemento HEAD |
HTbody | Elemento BODY |
HTp | Elemento P |
HTh1 | Elemento H1 |
HTh2 | Elemento H2 |
HTh3 | Elemento H3 |
HTh4 | Elemento H4 |
HTh5 | Elemento H5 |
HTh6 | Elemento H6 |
HTem | Elemento EM |
HTstrong | Elemento STRONG |
HTq | Elemento Q |
HTcode | Elemento CODE |
HTsub | Elemento SUB |
HTsup | Elemento SUP |
HTimg | Elemento IMG |
HTpre | Elemento PRE |
HTol1 | Elenco numerato, formato da un solo elemento |
HTol2 | Elenco numerato, formato da due elementi |
HTol3 | Elenco numerato, formato da tre elementi |
HTol4 | Elenco numerato, formato da quattro elementi |
HTol5 | Elenco numerato, formato da cinque elementi |
HTol6 | Elenco numerato, formato da sei elementi |
HTol7 | Elenco numerato, formato da sette elementi |
HTol8 | Elenco numerato, formato da otto elementi |
HTol9 | Elenco numerato, formato da nove elementi |
HTul1 | Elenco puntato, formato da un solo elemento |
HTul2 | Elenco puntato, formato da due elementi |
HTul3 | Elenco puntato, formato da tre elementi |
HTul4 | Elenco puntato, formato da quattro elementi |
HTul5 | Elenco puntato, formato da cinque elementi |
HTul6 | Elenco puntato, formato da sei elementi |
HTul7 | Elenco puntato, formato da sette elementi |
HTul8 | Elenco puntato, formato da otto elementi |
HTul9 | Elenco puntato, formato da nove elementi |
HTtable1 | Tabella con corpo e spazio per una sola riga |
HTtable2 | Tabella con corpo e spazio per due righe |
HTtable3 | Tabella con corpo e spazio per tre righe |
HTtable4 | Tabella con corpo e spazio per quattro due righe |
HTtable5 | Tabella con corpo e spazio per cinque righe |
HTtable6 | Tabella con corpo e spazio per sei righe |
HTtable7 | Tabella con corpo e spazio per sette righe |
HTtable8 | Tabella con corpo e spazio per otto righe |
HTtable9 | Tabella con corpo e spazio per nove righe |
HTtablecaption1 | Come sopra, con in più la didascalia |
HTtablecaption2 | Come sopra |
HTtablecaption3 | Come sopra |
HTtablecaption4 | Come sopra |
HTtablecaption5 | Come sopra |
HTtablecaption6 | Come sopra |
HTtablecaption7 | Come sopra |
HTtablecaption8 | Come sopra |
HTtablecaption9 | Come sopra |
HTtablecaptionthead1 | Come sopra, con in più l'intestazione |
HTtablecaptionthead2 | Come sopra |
HTtablecaptionthead3 | Come sopra |
HTtablecaptionthead4 | Come sopra |
HTtablecaptionthead5 | Come sopra |
HTtablecaptionthead6 | Come sopra |
HTtablecaptionthead7 | Come sopra |
HTtablecaptionthead8 | Come sopra |
HTtablecaptionthead9 | Come sopra |
HTtablecaptiontheadtfoot1 | Come sopra, con in più il piede |
HTtablecaptiontheadtfoot2 | Come sopra |
HTtablecaptiontheadtfoot3 | Come sopra |
HTtablecaptiontheadtfoot4 | Come sopra |
HTtablecaptiontheadtfoot5 | Come sopra |
HTtablecaptiontheadtfoot6 | Come sopra |
HTtablecaptiontheadtfoot7 | Come sopra |
HTtablecaptiontheadtfoot8 | Come sopra |
HTtablecaptiontheadtfoot9 | Come sopra |
HTtablerow1 | Una riga di una tabella, formata da una sola cella |
HTtablerow2 | Una riga di una tabella, formata da due celle |
HTtablerow3 | Una riga di una tabella, formata da tre celle |
HTtablerow4 | Una riga di una tabella, formata da quattro celle |
HTtablerow5 | Una riga di una tabella, formata da cinque celle |
HTtablerow6 | Una riga di una tabella, formata da sei celle |
HTtablerow7 | Una riga di una tabella, formata da sette celle |
HTtablerow8 | Una riga di una tabella, formata da otto celle |
HTtablerow9 | Una riga di una tabella, formata da nove celle |
HTstyle | Elemento STYLE |
HTahref | Riferimento ipertestuale |
HTquot | Entità " |
HTamp | Entità & |
HTlt | Entità < |
HTgt | Entità > |
HTcomment | Commento |
HTbr | Interruzione di linea |
HTdoctype | Dichiarazione del tipo di documento |
HTmetaascii | Elemento META per dichiarare la codifica (us-ascii) |
HTmetalatin1 | Elemento META per dichiarare la codifica (ISO-8859-1) |
Esempio
Da una sessione nVI, se si inserisce il testo HTtablecaption4, esso viene sostituito da quanto segue:
<TABLE SUMMARY=""><CAPTION> </CAPTION><TBODY><TR><TD> </TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR><TR><TD> </TD></TR></TBODY></TABLE>A questo punto, se ci si posiziona in corrispondenza dello spazio corrispondente alla prima riga e si inserisce il testo HTtablerow3, esso viene sostituito da:
<P> </P></TD><TD><P> </P></TD><TD><P> </P>
Ripetendo l'ultima procedura altre tre volte si arriva ad aver preparato, con soli cinque «comandi», lo schema completo di una tabella 4 per 3, e resta solo da inserire il testo in corrispondanza delle celle.
Quando si studia il linguaggio HTML capita spesso di fare dei tentativi allo scopo di imparare l'uso dei vari elementi del linguaggio; tali tentativi si concretizzano nella composizione di frammenti HTML, ossia di parti incomplete che successivamente si intende inserire in un documento HTML completo e conforme. Alle volte tali frammenti raggiungono dimensioni ragguardevoli, mancando per renderli completi solamente la parte «amministrativa» del documento, ossia gli elementi HTML, HEAD, TITLE e i marcatori dell'elemento BODY, nonchè la dichiarazione del tipo di documento.
Sarebbe una buona pratica che ciascuno mantenesse a propria disposizione un file che contenga lo schema generale di un documento HTML, come esemplificato nella sezione intitolata Standard HTML, e partire da quello schema ogni volta che si intendesse preparare un documento nuovo; tuttavia, qualora invece si volesse completare un frammento già preparato, può tornar utile il seguente script di shell POSIX:
#!/bin/sh # # htmlcomp.sh # cat <<fInE <!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN"> <HTML> <HEAD> <TITLE> </TITLE> </HEAD> <BODY> fInE cat $1 cat <<fInE </BODY> </HTML> fInE
il cui utilizzo è esemplificato nella seguente sessione interattiva:
$ cat frammento.html <H1>Esempio con liste</H1> <OL><LI> <P>primo</P> </LI><LI> <P>secondo</P> <UL><LI> positivo </LI><LI> negativo </LI></UL> </LI><LI> <P>terzo</P> </LI></OL> $ ./htmlcomp.sh frammento.html <!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN"> <HTML> <HEAD> <TITLE> </TITLE> </HEAD> <BODY> <H1>Esempio con liste</H1> <OL><LI> <P>primo</P> </LI><LI> <P>secondo</P> <UL><LI> positivo </LI><LI> negativo </LI></UL> </LI><LI> <P>terzo</P> </LI></OL> </BODY> </HTML> $ ./htmlcomp.sh frammento.html | nsgmls -s $
La sigla HTML fa riferimento esplicitamente a un sistema ipertestuale (Hypertext markup language), pertanto, la realizzazione di collegamenti del genere è una funzionalità essenziale di questo tipo di documento.
Nel caso più semplice, il riferimento punta a un (altro) documento che si trova nella stessa directory in cui si trova il documento che contiene il riferimento.
Per i riferimenti ipertestuali si utilizza l'elemento A, coadiuvato dall'attributo HREF il quale serve a indicare la collocazione del documento puntato.
Esempio
Il seguente frammento:
<A HREF="prova.html">Pagina di prova</A>
offre un esempio in cui la frase «Pagina di prova» serve come riferimento al documento prova.html. Ecco come appare il tutto all'interno di un navigatore ipertestuale (ad esempio Mozilla):
Si noti che il riferimento ipertestuale appare in una forma caratteristica (colore azzurro e sottolineato); se si attiva il riferimento (per esempio mediante un dispositivo di puntamento) si visualizzerà il documento puntato (prova.html), sempre a patto che esso sia disponibile, altrimenti un messaggio di errore.
I seguenti esercizi dovrebbero essere svolti dopo aver letto più volte quanto precede; è maggiormente istruttivo cercare di svolgerli senza «sbirciare»; è molto importante cercare degli esempi significativi per illustrare le proprie risposte.
Qual è l'obiettivo principale del presente documento?
Si prenda in considerazione un testo scritto, per esempio una pagina di un romanzo oppure una parte di un libro di testo (di Storia, di Geografia, eccetera); se ne analizzi attentamante la struttura: in particolare se ne contino le varie componenti (parole, spazi e altri simboli speciali, proposizioni, periodi, paragrafi, simboli di punteggiatura, congiunzioni, predicati verbali, sezioni di vario livello, eccetera).
Cosa significa l'acronimo «HTML»? Cosa si intende con la frase «marcare un testo»?
Si specifichi la struttura generale di un elemento HTML. Cosa si intende per «marcatore», «contenuto», «attributo»?
Cos'è una «sezione»? Come si può specificare l'inizio di una sezione? Che differenza c'è fra l'elemento H1 e l'elemento TITLE?
Fare degli esempi di programmi idonei alla visualizzazione e alla preparazione per la stampa su carta dei documenti HTML.
Scrivere il comando necessario per trasformare il documento HTML denominato pippo.html nel file PostScript denominato pluto.html.
Ripetere l'esercizio del precedente paragrafo specificando che si vuole ottenere la numerazione delle pagine su carta formato A3.
Cosa si intende con «testo lineare»?
Che differenza c'è fra l'elemento EM e l'elemento STRONG?
Che differenza c'è fra l'elemento SUB e l'elemento SUP?
Illustrare l'uso dell'elemento IMG; spiegare in particolare lo scopo dell'attributo ALT.
Cosa significano gli acronimi «W3C» e «ISO»?
Quale comando si può utilizzare per verificare la correttezza sintattica di un documento HTML?
Provare a modificare o spostare i marcatori degli elementi di un documento HTML inizialmente corretto per indurre il verificatore sintattico a rilevare gli errori introdotti.
Spiegare le differenze fra gli elementi CODE e PRE.
Spiegare le differenze fra gli elementi P e PRE.
Che differenza intercorre fra l'elemento OL e l'elemento UL? E fra di essi e l'elemento LI?
Cosa si intende per elenchi «annidati»?
Elencare gli elementi che contribuiscono alla creazione di una tabella HTML.
Spiegare la differenza fra l'elemento CAPTION e l'elemento SUMMARY.
Correggere il seguente esempio errato:
<TABLE SUMMARY="radicchio a 10 euro/kg, zucchine a 8 euro/kg, ciliege a 20 euro/kg" CAPTION="Lista prodotti ortofutticoli 2004" BORDER="0"><TBODY><TD> <P>Radicchio</P><TD></TD><P>10.... ....
trasformandolo in un frammento conforme ISO 15445.
Spiegare la differenza fre l'elemento TH e l'elemento THEAD.
Quali sono gli elementi obbligatori per una tabella? Quali quelli facoltativi? In quale ordine devono susseguirsi?
Per quale motivo lo standard ISO 15445 non permette di evidenziare i bordi?
Cosa significa l'acronimo «CSS»?
Cosa c'è di errato nella seguente dichiarazione CSS?
H1 ( color=blu, font-size=monospace: )
Effettuare una ricerca per determinare quali sono i colori utilizzabili (invocandoli per nome) in un documento HTML.
Fare un esempio ciascuno, in linguaggio CSS, di regola, selettore, dichiarazione, proprietà, valore.
Elencare le principali proprietà CSS inerenti alla decorazione delle tabelle HTML. Per ciascuna di esse si elenchino almeno due valori.
Esercitarsi all'uso dello script border.sed.
Si spieghi cosa non va nel seguente esempio di riferimento ipertestuale:
<A="prova.html">Pagina di prova</A>
Nei seguenti esercizi non si tralasci la verifica sintattica dei documenti che di volta in volta si chiede di preparare.
... la seguente figura:
e si scriva un frammento di documento HTML che produca una resa grafica simile, utilizzando titoli per sezioni di primo e di secondo livello.
... l'esercizio precedente facendo riferimento alla seguente figura:
... l'esercizio precedente facendo riferimento alla seguente figura:
facendo anche uso dell'elemento Q.
... l'esercizio precedente facendo riferimento alla seguente figura e portando particolare attenzione a un uso appropriato degli elementi P e BR:
... un documento HTML contente un titolo di primo livello, tre blocchi di testo lineare e la seguente immagine:
non trascurando l'indicazione di un testo alternativo.
... un documento HTML che produca un risultato abbastanza simile a quello seguente, quando viene visto attraverso un navigatore:
ricordando di usare l'elemento PRE quando ciò è appropriato.
... un documento HTML che produca un risultato abbastanza simile a quello seguente, quando viene visto attraverso un navigatore:
ricordando di usare opportuni elementi HTML per gli elenchi.
... un documento HTML che produca un risultato abbastanza simile a quello seguente, quando viene visto attraverso un navigatore:
ricordando di usare opportuni elementi HTML per le tabelle; la figura rappresenta parte della tabella pitagorica della moltiplicazione. Successivamente si aggiunga una didascalia con il testo «Tavola Pitagorica». Si estenda la tabella fino a includere la moltiplicazione 12*12. Infine si aggiunga un bordo attorno a ciascuna casella, un bordo tratteggiato attorno alla tabella e si faccia in modo (usando gli elementi TH) che le caselle numerate nella prima riga e nella prima colonna abbiano lo sfondo rosso.
... un documento HTML che produca un risultato abbastanza simile a quello seguente, quando viene visto attraverso un navigatore:
ricordando di usare opportuni elementi HTML per le tabelle e gli stili. Successivamente si aggiunga un'intestazione alla tabella, in modo da ottenere un risultato simile al seguente:
Infine si aggiunga una didascalia, per ottenere un risultato simile al seguente:
... tre documenti HTML, in modo che il primo contenga dei riferimenti ipertestuali che puntino agli altri due, e questi ne contengano in modo da puntarsi reciprocamente, come nel seguente schema:
... del presente esercizio è eseguire una serie di passaggi, che portino al termine alla creazione di un file PostScript che una volta stampato appaia (a parte i margini) come segue:
e alla creazione di un file di testo avente il seguente aspetto:
Due favole di Esopo La volpe e l'uva `Che fame!' esclamò la volpe, che era a digiuno da un paio di giorni e non trovava niente da mettere sotto i denti; girellando qua e là, capitò per caso in una vigna, piena di grappoli bruni e dorati. `Bella quell'uva!' disse allora la volpe, spiccando un primo balzo per cercare di afferrarne un grappolo. `Ma com'è alta!' e fece un altro salto. Più saltava e più le veniva fame: fece qualche passo indietro e prese la rincorsa: niente ancora! Non ce la faceva proprio. Quando si accorse che tutti i suoi sforzi non servivano a nulla e che, continuando così, avrebbe potuto farsi deridere da un gattino che se ne stava a sonnecchiare in cima alla pergola, esclamò: `Che brutta uva! È ancora acerba, e a me l'uva acerba non piace davvero!' E si allontanò di là con molta dignità, ma con una gran rabbia in cuore. Il lupo e l'agnello Un agnello si dissetava alla corrente di un ruscello purissimo. Sopraggiunse un lupo in caccia: era digiuno e la fame lo aveva attirato in quei luoghi. - Chi ti dà tanto coraggio da intorbidare l'acqua che bevo? - disse questi furioso. - Sire. - rispose l'agnello - io sto dissetandomi nella corrente sotto di lei, per ciò non posso intorbidare la sua acqua! - La sporchi - insisté la bestia crudele - E poi so che l'anno scorso hai detto male di me. - Io?! Ma se non ero nato - rispose l'agnello. - Se non sei stato tu, è stato tuo fratello. - Non ho fratelli. - Allora qualcuno dei tuoi; perché voi, i vostri pastori e i vostri cani ce l'avete me. Me l'hanno detto: devo vendicarmi. Detto questo il lupo trascinò l'agnello nel fitto della foresta e se lo mangiò.
Per prima cosa si deve preparare un documento HTML conforme allo standard ISO 15445, utilizzando obbligatoriamente gli elementi P, H1, H2, BR, Q; successivamente si utilizzi HTML2ps per generare il file PostScript, tenendo presente che dovrà essere stampato su un unico foglio formato A4; infine si usi W3M per generare il file di testo formattato a partire dal documento HTML.
Copyright © 2004 M. Piai
pxam67 at virgilio dot it
This work is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version, with the following exceptions and clarifications:
This work is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Questo documento contiene figure, esempi e brani di testo ricavati dagli «Appunti di informatica libera» di Daniele Giacomini, che ha concesso espressamente a M. Piai di compiere questa operazione per la realizzazione di questo documento.
This document includes images, examples and text excerpts obtained from «Appunti di informatica libera» by Daniele Giacomini, who explicitly allowed M. Piai to perform such operation in order to create this document.
Una copia della licenza GNU General Public License, versione 2, si trova presso http://www.fsf.org/copyleft/gpl.html.
A copy of GNU General Public License, version 2, is available at http://www.fsf.org/copyleft/gpl.html.
[1] | Chiunque conosca una soluzione migliore a questo problema è pregato di contattare l'autore. |