Un linguaggio universale

di Nanni Bassetti (nannib@libero.it

L'Xhtml, fusione dell'Html con le rigide regole dell'Xml, permetterà di costruire pagine Web facilmente navigabili da dispositivi come palmari, cellulari o televisori. Vediamo le regole base di questo nuovo linguaggio 

Recentemente il W3c ha introdotto le specifiche per l'Xhtml, la versione conforme a Xml dell'Html. 
Per comprendere l'importanza di questo linguaggio occorre quindi partire dall'Xml, linguaggio a cui abbiamo dedicato un intero corso che può essere ritrovato nel sitowww.interpuntonet.it. L'Xml è un formato che è stato introdotto per generalizzare l'orientamento dell'Html e recuperare l'approccio originario da cui deriva, ossia l'Sgml (Standard Generalized Markup Language). 
Scopo dell'Xml è quello di fornire uno standard per descrivere tutti i vari nuovi formati aperti che sono necessari per lo sviluppo del Web e che si affiancheranno all'Html. In sé l'Xml non è molto di più che una specifica su come devono essere composti documenti i quali sembrano pagine Html con tag arbitrari. Xml non assegna nessun particolare significato ai documenti stessi, compito che è riservato a specifiche ulteriori. 
Oggi sono state definite numerose tecnologie basate su Xml, e molte altre sono in via di definizione. Tra queste citiamo 
Xslt: Xml Stylesheet Transformation Language 
Linguaggio basato su Xml per definire trasformazioni e conversioni di Xml. 
Rdf: Resource Definition Format 
per la definizione di canali e contenuti di siti 
Svg: Simple Vector Graphics 
Formato di grafica vettoriale per il Web 
Xhtml: Xml Hyper Text Markup Language 
Versione conforme a Xml di Html 

L’Xhtml 1.0 è stato rilasciato dal W3c il 26 gennaio, 2000: essendo basato parzialmente su Xml, può estendersi aggiungendo i nuovi elementi senza alterare l'intero Dtd (Document Type Definition). Il Dtd è una collezione di dichiarazioni dell’Xml che definiscono la struttura, gli elementi e gli attributi che sono disponibili per l’uso in un documento. La semantica degli elementi dell’Xhtml e dei loro attributi è definita dalla specifica dell'Html 4.01. 
Xhtml 1,0 ne specifica tre tipi nel documento dell’Xml che corrispondono ai tre dell’Html 4.01 Dtd: Strict, Transitional e Frameset. 
Questi Dtd dell’Xhtml sono più restrittivi del Dtd dell’Html in quanto l’Xml è più restrittivo nella sintassi. 

Una delle tabelle proposta in questo articolo elenca i tre Dtd, una descrizione sommaria di come vanno usati ed i tag di DOCTYPE utilizzati per collegarsi a loro. Dato che nei tre Dtd ci possono essere dei tag o attributi con lo stesso nome ma con effetti differenti allora bisogna assegnare dei nomi qualificati per impedire i conflitti potenziali fra gli elementi identicamente chiamati dall’Xml: ciò avviene associando un prefisso che identifica un namespace ben definito. 
Xhtml 1.0 specifica tre namespace di Xml: 
www.w3.org per il tipo rigoroso del documento di Xhtml 1.0 www.w3.org per il tipo di transizione del documento di Xhtml 1.0 
www.w3.org per il tipo del documento di Xhtml 1.0 Frameset. 
Un documento rigorosamente conforme all’Xhtml 1,0 si limita ai tag ed agli attributi dei namespaces di Xhtml 1.0, quindi deve fare fronte ad alcune richieste piuttosto precise: 

* Il documento deve essere conforme ad uno dei tre Dtd. 
* L' elemento della radice del documento deve essere < Html >. 
* L'elemento radice del documento deve indicare un namespace di Xhtml 1.0 usando l'attributo dei xmlns (XMLNameSpace). 
* Ci deve essere una dichiarazione di DOCTYPE nel documento prima dell'elemento radice e se è presente, il contrassegno pubblico incluso nella dichiarazione di DOCTYPE deve riferirsi ad uno dei tre DOCTYPE. 

Uno dei vantaggi principali dell'Xhtml si riferisce alla sua interoperabilità e trasferibilità che rende l'Html più efficiente in modo tale da poter essere facilmente interpretato anche da dispositivi con minore potenza di elaborazione rispetto ai pc come i palmari o i futuri cellulari. 
Se la "validazione" del codice Html consuma batteria e richiede molta Ram e potenza di Cpu, con Xhtml, grazie alle sue regole rigide sintattiche, è più facile analizzare il codice e quindi i relativi requisiti di hardware sono molto modesti. 
Ciò è particolarmente interessante se pensiamo che in un prossim futuro Internet sarà sempre più navigabile dai cellulari, palmari o televisori, tutti apparecchi che costituiranno un'unica Rete. 
Un'altra cosa da notare è che il codice di Xhtml è compatibile al 100% con l’Html, ciò significa che con qualunque browser si vedranno bene le pagine web, persino col Netscape 1.0 . 

Nell'apposita tabella sono messi a confronto gli atttributi dell'Html e dell'Xhtml. In alcuni casi dobbiamo invece registrare differenze significative. 
Ad esempioL'Html 4.01 definisce un attributo nome per i tag ad applet, frame, iframe, img, e map. 
In Xhtml si usa l'attributo Id. 
E' dunque sbagliato scrivere: 
<img src="picture.gif" name="picture1" /> 
mentre occorre digitare: 
<img src="picture.gif" id="picture1" /> 
Da notare che per operare con I vecchi browser è meglio usare ambedue gli attributi name ed id: 
<img src="picture.gif" id="picture1" name="picture1" /> 
Una segnalazione importante per la compatibilità è che per rendere il codice Xhtml compatibile coi browser attuali e con Netscape si deve lasciare uno spazio bianco prima dello "/" di chiusura, ossia scrivere: <br />. 
Un attributo particolare è poi il Lang che specifica il linguaggio usato all'interno del documento: 
<div lang="en" xml:lang="no">Heia Norge!</div> 


Un esempio di documento 
Prova.xhtml 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3c//Dtd Xhtml 1.0 Strict//EN" 
"www.w3.org"> 
<html xmlns="www.w3.org
xml:lang="en" lang="en"> 
<head> 
<title>Prova 1</title> 
</head> 
<body> 
<p>Ciao Mondo !</p> 

</body> 
</html> 


All'interno di un documento Xhtml si possono inserire parti scritte in altri linguaggi Xml, come per esempio in MathXML: è sufficiente cambiare il namespace xmlns: 

<html xmlns="www.w3.org" xml:lang="en" lang="en"> 
<head> 
<title>A Math Example</title> 
</head> 
<body> 
<p>The following is MathML markup:</p> 
<math xmlns="www.w3.org"> 
<apply> <log/> 
<logbase> 
<cn> 3 </cn> 
</logbase> 
<ci> x </ci> 
</apply> 
</math> 
</body> 
</html> 


Il W3c ha un servizio di convalida del Xhtml basato su un analizzatore sintattico dell’Sgml., che include il Weblint (un programma di utilità per il controllo della sintassi dell'Html). In questo modo se la compatibilità con l’Html è perfetta i documenti di Xhtml 1.0 possono essere visionati sui browsers Html 4.0-compatibili. 
Il Validator di W3c si trova all'indirizzo validator.w3.org 

In queste pagine vi abbiamo fornito le basi per lavorare con l'Xhtml. Chi desiderasse ulteriori informazioni può consultare gli indirizzi www.w3.org, per capire come estendere i tag in Xhtml e www.w3.org dove si trovano i tool di sviluppo. 

Riferimenti e links:
  • Un linguaggio universale (Articolo)
  • Le 6 regole di base dell'Xhtml (listato)
  • Gli attributi dell'Html e dell'Xhtml (listato)
  •