XML/XHTML: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nuova pagina: L''''XHTML''' (acronimo di '''eXtensible HyperText Markup Language''', ''Linguaggio di marcatura di ipertesti estensibile'') è un linguaggio di marcatura ...
 
link corretti
Riga 1:
L''''XHTML''' ([[w:acronimo|acronimo]] di '''eXtensible HyperText Markup Language''', ''Linguaggio di marcatura di ipertesti estensibile'') è un [[w:linguaggio di markup|linguaggio di marcatura]] che associa alcune proprietà dell'[[XML]] con le caratteristiche dell'[[HTML]]: un file XHTML è un pagina HTML scritta in conformità con lo standard XML.
 
Il linguaggio prevede un uso più restrittivo dei [[w:tag HTML|tag HTML]] sia in termini di validità che in termini di sintassi per descrivere solo la struttura logica della pagina, mentre il [[w:layout|layout]] e la resa grafica sono imposti dai [[w:foglio di stile|fogli di stile a cascata]] (''Cascading Style Sheets'', CSS).
 
L'XHTML è nato ufficialmente il [[w:26 gennaio|26 gennaio]] [[w:2000|2000]] come standard del [[w:World Wide Web Consortium|World Wide Web Consortium]] (W3C), e può essere definito tecnicamente una riformulazione dell'[[HTML]] 4.01 in [[XML]] 1.0; è una sorta di "ponte" tra questi due linguaggi.
 
== Cenni generali ==
L'XHTML è il successore diretto e la versione più aggiornata dell'HTML. La necessità di un linguaggio dotato di una sintassi meglio definita rispetto a quella dell'HTML cominciò ad essere avvertita quando si diffuse l'uso di inviare [[w:pagine web|pagine web]] ai nuovi dispositivi apparsi sul mercato diversi dai tradizionali [[w:computer|computer]], come ad esempio piccoli apparecchi portatili, dotati di risorse [[w:hardware|hardware]] e [[w:software|software]] non sufficienti ad interpretare il linguaggio HTML. Va tenuto presente che più generica è la sintassi di un [[w:linguaggio di programmazione|linguaggio di programmazione]], più difficile risulta realizzare dispositivi in grado di interpretarlo correttamente. Una specifica [[w:Document Type Definition|Document Type Definition]] (DTD) definisce l'insieme di regole mediante le quali un dato documento può essere [[w:rendering|renderizzato]] (cioè ''rappresentato correttamente'') dall'XHTML.
 
Tutti i [[w:browser|browser]] attualmente più diffusi sono in grado di rendere correttamente i documenti XHTML, ma anche i browser più vecchi sono solitamente in grado di interpretare i documenti XHTML, poiché questo linguaggio è in buona parte un sottoinsieme dell'HTML e le sue regole sintattiche sono compatibili all'indietro. Lo stesso vale anche in senso inverso: quasi tutti i browser compatibili con l'XHTML rendono correttamente anche i documenti HTML.
 
Per sfruttare appieno le potenzialità dell'XHTML è necessario usarlo in abbinamento ai [[w:fogli di stile|fogli di stile]], in modo da scrivere un codice per pagine web in cui la presentazione sia separata dalla struttura dei dati.
 
L<nowiki>'</nowiki>'''XHTML Transitional''' (''XHTML di transizione'', vedi oltre) si distingue dall'HTML principalmente perché è più compatibile con le specifiche dell'[[XML]] e dall'XHTML stretto (''XHTML strict'') per una maggior tolleranza nei confronti di definizioni deprecate.
 
La differenza più importante è che tutti i [[w:tag HTML|tag]] devono essere ben strutturati, cioè obbedire ad una serie di regole che ne assicurino la coerenza reciproca, e devono essere ''terminati'', compresi quelli ''vuoti'' (ad esempio <code>img</code> e <code>br</code>). Per eseguire la terminazione in modo implicito si può aggiungere una "/" di chiusura al tag di apertura (es: <code>&lt;img &hellip; /></code> e <code>&lt;br /></code>). Altri tipi di abbreviazione non sono invece permessi (es: <code>&lt;option selected></code>). <br />
 
La sintassi prevede inoltre che i tag debbano essere sempre scritti in lettere minuscole, convenzione in contrasto con l'abitudine invalsa a partire dalla versione 2.0 di HTML, quando la maggior parte dei programmatori preferiva le maiuscole.
Riga 22:
Per ulteriori dettagli si rinvia alle [http://www.w3.org/TR/xhtml1/#diffs specifiche W3C XHTML].
 
Le pagine di [[w:Wikipedia|Wikipedia]] sono attualmente scritte usando la versione 1.0 Transitional di XHTML.
 
== Versioni di XHTML ==
Riga 29:
* ''XHTML 1.0 Transitional'': nato per favorire la migrazione dalla vecchia versione HTML 3.2 o per uso insieme a link e frame ''in-line''. Accetta come validi anche i tag HTML che sono stati definiti come ''deprecati'' in XHTML ed è tollerante rispetto ad alcune non conformità sintattiche.
* ''XHTML 1.0 Strict'': rispetto alla versione ''Transitional'' non accetta i tag HTML definiti deprecati, non è tollerante a non conformità sintattiche e prevede controlli più rigorosi anche rispetto al valore di alcuni attributi dei tag (per esempio, l'attributo ''id'' deve avere valori univoci all'interno dello stesso documento).
* ''XHTML 1.0 Frameset'': nato per motivi di compatibilità per suddividere la finestra visualizzata dal browser in diversi [[w:frame|frame]] (''sottofinestre''), pratica un tempo diffusa ma ora deprecata dal World Wide Web Consortium.
 
L'ultima versione di XHTML è la ''XHTML 1.1'', che è una riformulazione dell' XHTML ''Strict'', quindi ha una sola DTD. Non accetta i tag e gli attributi più criticati della precedente versione (come la struttura a [[w:frameset|frameset]]). Questa versione invece supporta i tag del cosiddetto markup «ruby», che consente di visualizzare i set di caratteri delle lingue orientali.
 
Esistono altre versioni di XHTML, studiate per dispositivi portatili:
 
* ''[[w:XHTML Basic|XHTML Basic]]'': versione speciale semplificata dell'XHTML, per dispositivi le cui risorse non sono in grado di supportare il set completo di comandi e tag XHTML, come ad esempio i telefoni [[w:Telefono_cellulare|cellulari]]. È da considerare come la controparte degli esistenti linguaggi [[w:Wireless Markup Language|WML]] e [[w:C-HTML|C-HTML]].
* ''[[w:XHTML Mobile Profile|XHTML Mobile Profile]]'': basato sulla versione ''Basic'' di XHTML, sviluppato da [[w:Nokia|Nokia]] per aggiungere all' XHTML Basic funzionalità specifiche dei terminali telefonici.
 
Lo sviluppo delle specifiche della versione [[w:XHTML 2|XHTML 2]] ha subito un rallentamento a causa di grossi problemi di compatibilità, dato che si sarebbe trattato a tutti gli effetti di markup quasi completamente nuovo piuttosto che di un'evoluzione dell'XHTML 1.1. In parallelo, ha ripreso slancio lo sviluppo di una nuova serie di specifiche dell'HTML, l'[[w:HTML5|HTML5]], che riprende alcune delle definizioni e degli approcci concepiti per XHTML 2 ma adattati per garantire un funzionamento compatibile con gli attuali browser. Secondo le intenzioni del W3C, le due specifiche erano nate per coesistere, ma attualmente l'XHTML 2 è stato abbandonato.
 
== Validazione dei documenti XHTML ==
Un documento XHTML che risponde alle specifiche è definito ''documento valido'' ovvero ''well formed''. Teoricamente, tutti i browser dovrebbero essere conformi agli standard W3C, e quindi essere in grado di rendere i documenti su qualsiasi [[w:piattaforma (informatica)|piattaforma]]. La [[w:validazione]] (cioè il ''controllo sintattico'') dei documenti XHTML non assicura tuttavia al 100% la compatibilità con tutti i browser, principalmente per limiti di questi ultimi, ma è comunque fortemente consigliata. Uno strumento per controllare la validità dei documenti è disponibile presso il ''Markup Validation Service'' del W3C ( vedi [http://validator.w3.org/]).
 
Come sopra accennato, perché un documento possa essere validato, deve contenere un elemento chiamato DTD ([[w:Document Type Definition|Document Type Definition]] o Document Type Declaration), da posizionare preferibilmente all'inizio del documento. I tipi più comuni di DTD, e le relative sintassi dichiarative, sono:
 
;XHTML 1.0 Strict
Riga 61:
*Omissione del testo da visualizzare in alternativa ad un'immagine (da usare mediante l'attributo <code>alt</code>, in modo da consentire la compatibilità con dispositivi il cui display non supporta immagini).
*Inserire testi direttamente nel corpo del documento.
*Annidare<ref>Per ''annidare'' si intende inserireInserire un blocco di codice (o di attributi) all'interno di un altro blocco di livello superiore, e così via, secondo un ordine gerarchico del tipo ''a scatole cinesi''. Ciascun livello ''vede'' e ''tratta'' i blocchi ai livelli sottostanti come ''entità'' indivisibili.</ref> blocchi di codice all'interno di elementi inline.
*Dimenticare le virgolette per delimitare gli attributi.
*Annidare gli elementi in modo non valido.
Riga 67:
*Usare le maiuscole per i nomi dei tag e/o degli attributi.
 
Questo non è, ovviamente, un elenco esauriente degli errori, ma solo un'indicazione di quelli che i programmatori commettono più frequentemente. Quando una pagina è validata utilizzando il servizio di validazione del [[W3C]], il validatore restituisce una piccola [[w:Icona (informatica)|icona]] che può essere inserita nel documento per comprovarne la conformità allo standard. Il W3C fornisce lo stesso servizio anche per i fogli di stile [[w:Foglio di stile|CSS]] e per i documenti HTML.
 
== Voci correlate ==
* [[World Wide Web Consortium]]
* [[SGML]]
* [[HTML]]
* [[XML]]
 
==Note==
<references />
 
== Collegamenti esterni ==
*{{Dmoz|World/Italiano/Computer/Formato_Dati/Linguaggi_di_Marcatura/Xml/Xhtml/|XHTML}}
* [http://www.w3c.cnr.it/traduzioni/xhtml1-it.html Specifica XHTML 1.0] (traduzione non normativa)
* [http://lau.csi.it/risorse/xhtml_tagxtag/index.shtml Lista completa dei tag XHTML con descrizione delle funzionalità, supporto dei browser ed esempi pratici di applicazione]
* {{en}} [http://www.w3.org/MarkUp/ W3C's HTML Home Page]
* {{en}} [http://www.w3.org/TR/xhtml1/ Specifica XHTML 1.0] (testo originale normativo)
* {{en}} [http://www.w3.org/TR/xhtml11/ Specifica XHTML 1.1]
* {{en}} [http://www.w3.org/TR/xhtml2/ Working Draft della specifica XHTML 2.0]
* {{en}} [[wikibooks:XHTML (XML)|XHTML tutorial]] su Wikibooks
{{Portale|Web}}