Migrare da HTML 4.0 a XHTML 1.0 è divenuta una necessità con l’avvento della legge 04/2004, ma nonostante questa necessità ancora moltissimi webmaster non hanno le competenze adeguate per effettuare questa ?migrazione?.

Questo scritto si propone dunque come una specie di guida tecnica per chi volesse effettuare questa migrazione, dando consigli pratici su come effettuarla sul proprio sito.

Per effettuare questa migrazione alla base ci deve essere un sito attualmente codificato in HTML 4.0 valido. La versione del codice potrà tranquillamente essere sia Strict, Transitional o Frameset.

Siccome il W3C non ci da mezzi diretti di migrazione come XSL per XML, ci baseremo sul migliore amico del programmatore, la funzione ?Trova e Sostituisci? disponibile in qualunque programma per la scrittura di codice HTML. Raccomando l’uso di un programma che permetta di fare la sostituzione direttamente su una o più cartelle, ricordo inoltre di attivare la proprietà ?ignora maiuscole e minuscole? all’interno della ricerca.

1 Mettersi in salvo da errori

La prima regola di ogni programmatore e di non fare esperimenti su codice già stabile ma fare le modifiche sempre su copie del codice. Quindi, come primo passo, create una copia della cartella contenente il nostro sito.

2 Formalizzare i documenti

Il secondo passaggio è l’adeguamento di tutte le dichiarazioni DTD all’inizio d’ogni documento in modo conforme. Tramite il comando cerca e sostituisci all’interno della nostra cartella copiata effettuate le seguenti ricerche / sostituzioni secondo la versione di HTML che adottate:

  • In caso di HTML 4.0 Strict cercate:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    e lo sostituite con:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
  • In caso di HTML 4.0 Transitional cercate:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    e lo sostituite con:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
  • In caso di HTML 4.0 Frameset cercate:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
    e lo sostituite con:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "DTD/xhtml1-frameset.dtd">

3 Dichiarare l’appartenenza a XML

Ogni documento XHTML è, di fatto, un documento XML, quindi è corretto inserire come primo elemento all’interno dello stesso l’appartenenza al formalismo XML.

Per effettuare questo avete bisogno di un’informazione essenziale, la codifica con cui avete scritto il documento. Il sistema di codifica dei documenti dichiara semplicemente con quale collezione di caratteri è scritto il documento, questo in HTML 4.0 si definiva tramite il metatag

<meta http-equiv="Content-type" content='text/html; charset="ISO-8859-1"' />

Usualmente tutti i documenti in occidente sono codificati con il set di caratteri UTF-8 o ISO-8859-1. Questi due set sono facilmente distinguibili, infatti, se per scrivere una lettera accentata come ?à? nel nostro codice avete scritto "&agrave;" probabilmente state usando l’UTF-8, mentre se avete scritto puramente ?à? probabilmente state usando l’ISO-8859-1.

Effettuate quindi la trasformazione cercando il testo: ?<!DOCTYPE? e andate a sostituirlo, inserendo la vostra codifica nell’attributo ?encoding?, con il seguente blocco di testo:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE

4 Definire lo spazio dei nomi

XHTML necessita la definizione di uno ?spazio dei nomi? all’interno della sua prima marcatura, quindi cercate il testo ?<html>? e sostituitelo con ?<html xmlns=?http://www.w3.org/1999/xhtml?>?.

5 Adattare le marcature e i rispettivi attributi

In XHTML tutte le marcature e gli attributi devono essere scritte in minuscolo, quindi, se non le avete già scritte così, dovete procedere nel cercare tutte le marcature e tutti gli attributi dell’HTML 4.0 sostituendoli con le stesse in forma minuscola.

Per esempio, cercate la marcatura ?<BODY>? e sostituitela con ?<body>? oppure cercate l’attributo ?NAME? e sostituitelo con ?name?.

Questo lungo lavoro va fatto per tutte le marcature e gli attributi presenti in HTML 4.0.

6 Quotare gli attributi

Ogni attributo in XHTML deve essere messo tra virgolette. Purtroppo una ricerca d’ogni attributo o d’ogni = nel testo del documento non vi garantisce una corretta sostituzione, quindi in questo caso sarebbe meglio procedere manualmente.

Il lavoro da fare è quello di cercare ogni = presente e risultato per risultato inserire le virgolette doppie prima e dopo il valore dell’attributo.

7. Adattare gli elementi vuoti

In XML non è permesso che una marcatura sia aperta ma non chiusa, questo si ripercuote su XHTML. In caso di marcature come ?<br>? o ?<hr>? il validatore vi restituirebbe un errore, dovete quindi chiuderle ?in linea?.

Chiudere una marcatura in linea vuol dire inserire un carattere / prima della sua chiusura. Inoltre per problemi d’interpretazione da parte di alcuni browser il W3C raccomanda di inserire uno spazio vuoto prima del /.

Per fare quest’adattamento, cercate la marcatura in questione (esempio ?<br>?) e sostituitela con il corrispettivo ?in linea? (esempio <br />).

8. Applicare il modello d’identificazione univoca

In XHTML l’identificazione univoca degli elementi, come formulari o ancore, non avviene più con l’attributo ?name? ma bensì con l’attributo ?id?.

Per questo sarebbe bene che in ogni formulario, ancora, applet, ecc. aggiungiate in parallelo agli attributi ?name? degli attributi ?id? con un identico valore.

Questo punto non compromette la validazione del documento ma è molto importante per aderire agli standard futuri del W3C.

Note finali

Volevo concludere questa piccola guida ricordando il fatto che nel caso le pagine avessero una struttura identica tra loro, la migrazione può essere tentata su un documento. Quando il documento sarà conforme all’XHTML 1.0 potrete procedere ad una ricerca e sostituzione dei blocchi di codice per intero, in modo da facilitarvi il lavoro per quei punti problematici come il ?Quotare gli attributi?.