In questa guida affronteremo il linguaggio XHTML (extensible HTML

In questa guida affronteremo il linguaggio XHTML (extensible HTML), sottolineandone le
specifiche e le differenze dall'HTML tradizionale.
E' pertanto necessaria una minima conoscenza di HTML.
Sono corredati alla guida dei tutorial pratici, con l'obiettivo di proporre alcuni spunti di
applicazione del linguaggio.
XHTML è l'acronimo di Extensible HyperText Markup Language e si tratta di una estensione del
linguaggio HTML.
Come percettibile dal nome, XHTML si pone come obiettivo quello di estendere HTML a tutte i
dispositivi utilizzabili per la consultazione dei siti web, tramite la tecnologia XML.
E' spettacolare l'avvento di XML negli ultimi anni: esso ha permesso la creazione di linguaggi
estensibili, quali XHTML, XMLDOM, ecc e di linguaggi di distribuzione semplice, come RSS.
La distribuzione delle informazioni in formato RSS, caratterizzato da una struttura semplice e
facilmente riutilizzabile, sta diventando un fenomeno sempre più comune nel web, e sono
sempre di più i siti che mettono a disposizione i loro contenuti in questo formato.
XHTML non è da intendersi come un linguaggio in sostituzione del tradizionale HTML, bensì
come uno strumento per la correzione di alcuni difetti di HTML, per la standardizzazione dello
stesso.
Come vedremo nelle lezioni successive, XHTML non propone una nuova sintassi, bensì
presenta la struttura di HTML con alcune correzioni.
Scrivere codice XHTML valido presenta quindi molteplici vantaggi, fra cui una maggiore
visibilità da parte di qualsiasi dispositivo.
Nelle prossime lezioni vedremo HTML e XHTML a confronto.
Il confronto tra i due linguaggi deve partire innanzitutto dall'analisi della struttura portante
della pagina web.
Il documento HTML si compone in questo modo:
<html>
<head>
<title>Pagina HTML </title>
</head>
<body>
Qui il codice del corpo.
</body>
</html>
Mentre il documento XHTML ha una composizione leggermente diversa:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Pagina XHTML </title>
</head>
<body>
Qui il codice del corpo.
</body>
</html>
Da notare il fatto che all'inizio di dichiari tramite un !DOCTYPE che il documento è scritto in
XHTML secondo gli standard W3C.
Questo non implica comunque la validità del codice inserito.
Si indica solo che il documento deve essere interpretato come XHTML.
Quindi, la riga sotto si dichiara un Namespace XML (xmlns) e la lingua del documento, in
questo caso l'italiano.
Scendiamo di poche righe e troviamo un TAG, che dovrebbe essere presente anche nei
documenti HTML, ma che spesso viene omesso, che indica la certificazione ISO dei documenti
HTML.
In poche parole quindi un documento XHTML necessita di tre informazioni in più nella struttura
base:
- !DOCTYPE che ne specifichi la decifratura
- Namespace XML
- Certificazione ISO.
Un'altro aspetto da notare di XHTML è la conformazione sintattica della scrittura dei TAGs.
Con HTML 4.01 i TAGs possono essere scritti in maiuscolo o minuscolo, poichè vengono
interpretati senza problemi.
XHTML pone invece una scrittura univoca, standard, ossia il minuscolo.
I TAGs vanno rigorosamente in minuscolo altrimenti si rischia che non vengano interpretati.
Ecco un esempio.
HTML 4.01:
<html> - VALIDO
<HTML> - VALIDO
XHTML:
<html> - VALIDO
<HTML> - NON VALIDO
Nella prossima lezione vedremo i !DOCTYPE disponibili per XHTML, ossia le diverse
interpretazioni del documento XHTML.
Abbiamo visto nella lezione precedente come sia necessario impostare un DOCTYPE nel
documento XHTML.
Questo TAG definisce il tipo di XHTML utilizzato nel documento, e quindi a quali standard
corrisponda.
Esistono tre tipologie di !DOCTYPE:
STRICT
Come intuibile dal nome, esso etichetta un documento di struttura semplice, chiusa, rigida.
Non permette infatti definizioni CSS di colori, fonts, ecc. all'interno della pagina, ossia non
posso scrivere
....
<html>
<head>
<style type="text/css" />
body {
...
}
</style>
Possono comunque essere caricate informazioni CSS da un foglio esterno.
TRANSITIONAL
In poche parole ammette la dichiarazione di elementi di stile all'interno della pagina, anche se
è vantaggioso in termini di accessibilità dichiarare le informazioni di stile in file esterni.
FRAMESET
Indicato per documenti che utilizzano strutture a FRAMES (Frameset) o che presentano al loro
interno un iFRAME.
Scrittura
Ecco quindi come dovremo scrivere ciascun DOCTYPE:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
Nella prossima lezione vedremo alcune differenze nella sintassi dei TAGs del corpo della
pagina.
In questa lezione vedremo il comportamento dei tags del corpo della pagina nel linguaggio
XHTML.
E' comunque doveroso spendere qualche parola riguardo al fatto che XHTML presenta una
suddivisione dei TAGs in moduli.
Nella lezione precedente ci siamo occupati del Structure Module, ossia dei TAGs che
definiscono la struttura base, portante di un documento XHTML, quali html, head, body, ecc.
Esistono altri tre moduli:
- Text Module (elementi testuali della pagina)
- Hypertext Module (elementi di collegamento della pagina)
- List Module (elementi per la definizione delle liste)
Si tratta di una distinzione a livello puramente didattico.
Gestione dei tags
I Tags HTML si suddividono in chiusi e vuoti.
Un esempio di TAG chiuso:
<div>Ciao ciao</div>
Un esempio di TAG vuoto:
<img src="pippo.gif">
XHTML non prevede la presenza di TAGS vuoti, ma, non potendo gestirne la chiusura con
"</img>", si aggiunge una "/" prima della chiusura del TAG, ottenendo questo risultato:
<img src="pippo.gif" />
Rispettano questi criteri tutti i TAGS che non presentano chiusura.
Gestione degli attributi
Così come esistono TAGs vuoti, esistono attributi vuoti.
Ecco un esempio di attributo pieno:
<img src="..." />
e uno di attributo vuoto o non dichiarato:
<frame noresize>
Bisognerà quindi dichiarare gli attributi vuoti in questo modo:
<frame noresize="true">
con valori TRUE o FALSE.
Nella prossima lezione vedremo nel dettaglio la gestione dei TAGs di un FORM.
I criteri dichiarati in questa lezione sono universali, ossia valgono per qualsiasi TAG.
XHTML ha portato cambiamenti sintattici anche nei TAGs che compongono un FORM, e in
particolare, sottolineeremo due aspetti.
Inserire l'ID del tag
Risulta obbligatorio secondo le specifiche XHTML inserire l'ID in un TAG componenente il form,
che deve essere univoco nel documento, quindi non possono essere presenti due tags con lo
stesso ID.
Al contrario possono essere presenti due tags con lo stesso NAME.
Quindi il tag di apertura di un form e gli input compresi nel gruppo FORM devono rispettare
questa regola.
Elementi vuoti nel form
Riprendiamo quanto detto in precedenza riguardo gli attributi vuoti, che anche nei tags di un
form devono essere dichiarati.
Questi attributi sono principalmente CHECKED negli INPUT di tipo RADIO e SELECTED nelle
OPTION, che devono essere settati a TRUE o FALSE.
Per validare il codice XHTML della propria pagina, Il W3C (World Wide Web Consortium) mette
a disposizione un servizio gratuito che tramite la digitazione del URL della pagina o l'UPLOAD
del file, consente di verificare la correttezza dei documenti e segnala eventuali errori, di modo
che sia possibile correggerli.
A questo link potrete raggiungere la risorsa:
http://validator.w3.org
E' comunque presente un'ampia documentazione sul linguaggio XHTML al sito
http://www.w3.org.
In questo tutorial vedremo come realizzare un sito TABLELESS, ossia un sito senza l'utilizzo del
TAG TABLE.
Per capire ciò che intendiamo realizzare cliccate qui.
Il sito a questo link contiene codice XHTML e CSS che rispetta gli standard W3C e quindi ha
visibilità garantita da tutti i browser.
La struttura del sito può sembrare in apparenza a tabelle, ma guardando il codice è possibile
vedere come siano stati usati dei DIV disposti in maniera particolare, con un bordo di 1px tali
da formare un layout a 2 colonne e header.
Il layout in questione è probabilmente il più utilizzato dai webmaster poichè consente una
navigazione eccellente e pratica.
Il vantaggio dell'utilizzo dei DIV al posto di una struttura con i classici TAGs <table>, ecc sta
nel fatto che la pagina è accessibile e consente una navigazione migliore da parte di tutti i
browser.
L'impaginazione a tabelle è scorretta e tipica di alcuni anni fa quando il linguaggio CSS era al
suo stadio primordiale o ancora non esisteva.
Come è visibile dal codice della pagina in questione, si ha un DIV #testata con margine di 5px
sia a destra sia a sinistra, poi un DIV #destra con margine 5px da destra e dall'alto e 170 da
sinistra. Ma perchè 170 da sinistra?
Questo margine serve a creare uno spazio in cui porre il DIV #sinistra, che conterrà il menu.
Il DIV #sinistra avrà di particolare position:absolute che gli consente di essere posizionato in
qualsiasi punto della pagina anche sopra al testo.
Combinando distanze dai margini e larghezza dei DIV, si può ottenere facilmente una struttura
accessibile.
Abbiamo poi aggiunto nella pagina la possibilità di ingrandire il carattere del testo del DIV
#destra.
Ecco il codice:
<div align="right">
<a href="#" onclick="document.getElementById('destra').style.fontSize='12px';return
false;">12px</a>
<a href="#" onclick="document.getElementById('destra').style.fontSize='14px';return
false;">14px</a>
<a href="#" onclick="document.getElementById('destra').style.fontSize='16px'; return
false;">16px</a>
</div>
Esso è stato presentato in un tutorial da Michele Sassi e lo utilizzo in questo tutorial
semplicemente per mostrarvi un esempio di script per il "font-resize".
I siti a lungo caricamento non interessano a nessuno
Come da titolo, possiamo affermare che un veloce caricamento della pagina è importantissimo
in un sito web.
E' quindi consigliato evitare filmati WMA inseriti nella pagina, che l'utente impiegherebbe molto
a visualizzare. Optate piuttosto per animazioni Flash. Alla stessa maniera è sconsigliato
realizzare un layout tapezzato di immagini da 1 MB ciascuna.. I visitatori scapperebbero
impauriti.
L'ideale è una struttura grafica semplice, accogliente e VELOCE. Si sa infatti che la grafica
impressiona i visitatori fino ad un certo punto, poi tocca ai contenuti.
CSS
In questo tutorial vedremo come realizzare un menu a schede con i CSS.
Si tratta sicuramente di una tipologia di menu elegante ed interessante.
Probabilmente molti non lo crederanno, ma non utilizzeremo immagini o codici complessi. Solo
ed esclusivamente codice XHTML e CSS.
Supponiamo di avere un sito a cinque pagine, ed ecco il codice CSS da inserire nelle pagine:
<style type="text/css">
#navlist {
padding: 3px 0;
margin-left: 0;
border-bottom: 1px solid #778;
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:12px;
font-weight:bold;
}
#navlist li {
list-style: none;
margin: 0;
display: inline;
}
#navlist li a {
padding: 3px 0.5em;
margin-left: 3px;
border: 1px solid #778;
border-bottom: none;
background: #DDE;
text-decoration: none;
}
#navlist li a:link { color: #448;
}
#navlist li a:visited { color: #667;
}
#navlist li a:hover {
color: #000;
background: #AAE;
border-color: #227;
}
#navlist li a#corrente {
background: white;
border-bottom: 1px solid white;
}
</style>
Da notare di questo codice come si lavori sui bordi dei DIV: vi è un contenitore globale con un
bordo inferiore, e la voce del menu che corrisponde alla pagina corrente viene presentata
senza bordo.
Quindi inseriamo nella prima pagina questo codice:
<div align="center"> </div>
<div id="contenitoremenu">
<ul id="navlist">
<li id="attivo"><a href="#" id="corrente">pagina uno</a></li>
<li><a href="#">pagina due</a></li>
<li><a href="#">pagina tre</a></li>
<li><a href="#">pagina quattro</a></li>
<li><a href="#">pagina cinque</a></li>
</ul>
</div>
Da notare di questo codice la riga
<li id="attivo"><a href="#" id="corrente">pagina uno</a></li>
che imposta come link corrente quello alla pagina 1, ossia presenta in modo diverso il link della
pagina corrente.
Dovrete quindi impostarlo diversamente a seconda della pagina.
A voi il compito di personalizzare il set di colori.
Possiamo personalizzare questo codice in diverse maniere, aggiungendo effetti al nostro menu.