Questo documento è stato rivisto dai Membri del W3C e da altre parti interessate ed è stato approvato dal Direttore come una Raccomandazione del W3C. E' un documento stabile e può essere usato come materiale di riferimento o citato da un altro documento come una normativa di riferimento. L'obiettivo del W3C nel fare le Raccomandazioni è quello di richiamare l'attenzione alle specifiche e di promuovere la loro più ampia diffusione. Questo aumenta la funzionalità e l'interoperabilità del Web.
Questo documento è stato prodotto come parte del W3C HTML Activity. Gli scopi del HTML Working Group (members only) sono discussi nel HTML Working Group charter (members only).
Un elenco delle attuali Raccomandazioni del W3C e di altri documenti tecnici è reperibile all'indirizzo http://www.w3.org/TR.
La discussione pubblica sulle caratteristiche dell'HTML si ha attraverso la mailing list www-html@w3.org (archivio).
Per favore, riportate gli errori presenti in questo documento a www-html-editor@w3.org.
Una lista degli errori noti di questa specifica si trovano a http://www.w3.org/2000/01/REC-xhtml1-20000126-errata (in inglese).
Contenuto 1. Cosa è XHTML? XHTML è una famiglia di attuali e futuri tipi di documenti che riproduce, ingloba ed estende l'HTML 4 [HTML]. I tipi di documenti della famiglia XHTML si basano su XML, e sono disegnati fondamentalmente per poter lavorare insieme agli user agent basati su XML. I dettagli di questa famiglia e della sua evoluzione sono discussi nella sezione Direzioni future.XHTML 1.0 (questa specifica) è il primo tipo di documento della famiglia XHTML. E' una riformulazione dei tre tipi di documento HTML 4 come applicazioni di XML 1.0 [XML]. Il suo scopo è quello di essere usato come linguaggio di contenuto che sia contemporaneamente conforme a XML e che operi con gli user agent in conformità a HTML 4, nel caso in cui vengano seguite alcune semplici linee guida. Gli sviluppatori che migrano le loro applicazioni verso XHTML 1.0 avranno i seguenti vantaggi:
SGML è un linguaggio per descrivere linguaggi di markup, in particolare per quelli usati nello scambio di documenti elettronici, sviluppo e pubblicazione di documenti. HTML è un esempio di linguaggio definito in SGML.
SGML viene usato dalla metà degli anni '80 ed è rimasto abbastanza stabile. La maggior parte della sua stabilità si deve al fatto che il linguaggio è ricco di caratteristiche e flessibile. La flessibilità, comunque, ha il suo prezzo, e questo prezzo è l'alto livello di complessità che ha inibito l'uso di questo linguaggio in diversi ambienti, incluso il World Wide Web.
L'HTML, così come fu concepito originariamente, era un linguaggio per lo scambio di documenti scientifici e tecnici, adatto per essere usato da persone non specializzate nel trattamento di documenti. L'HTML ha risolto il problema della complessità dell'SGML specificando un piccolo insieme di tag strutturali e semantici adatti alla realizzazione di semplici documenti. Inoltre, per semplificare la struttura del documento, l'HTML ha aggiunto un supporto per l'ipertestualità. In seguito sono state aggiunte le capacità multimediali.
In pochissimo tempo l'HTML è diventato largamente popolare e rapidamente ha superato il suo scopo originale. Fin dagli inizi dell'HTML c'è stata una continua invenzione di nuovi elementi da usare all'interno dell'HTML (come uno standard) e per adattarlo ad un mercato verticale altamente specializzato. Questa pletora di nuovi elementi ha portato a problemi di compatibilità per i documenti nelle diverse piattaforme.
Dato il rapido proliferarsi dell'eterogenità sia del software che delle piattaforme, è chiaro che l'adeguatezza dell'HTML 'classico' per l'uso su queste piattaforme è in qualche modo limitato.
1.2 Cosa è XML? XML è l'abbreviazione di Linguaggio Estensibile di Markup ed è l'acronimo dell'espressione inglese Extensible Markup Language [XML].XML è stato concepito come un mezzo per riguadagnare la potenzialità e la flessibilità di SGML eliminando la maggior parte della sua complessità. Nonostante sia la forma ristretta di SGML, XML conserva gran parte della potenza e della ricchezza di SGML, mantenendo ancora tutte le caratteristiche comunemente usate da SGML.
Conservando tali caratteristiche, XML rimuove le caratteristiche più complesse di SGML che rendevano difficile e costosa la creazione e il disegno di software appropriato.
1.3 Perchè la necessità di XHTML? I benefici del passaggio a XHTML 1.0 vengono descritti di seguito. In generale alcuni di questi sono:<html>
.xmlns
[XMLNAMES]. Lo spazio dei nomi per XHTML è definito in http://www.w3.org/1999/xhtml
.All'interno del documento ci deve essere una dichiarazione di DOCTYPE prima dell'elemento radice. L'identificatore pubblico incluso nella dichiarazione di DOCTYPE si deve riferire ad una delle tre DTD presenti in Appendice A usando il corrispondente Identificatore Formale Pubblico. L'identificatore di sistema può essere cambiato per riflettere le convenzioni del sistema locale.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "DTD/xhtml1-frameset.dtd">
Qui viene riportato un piccolo esempio di un documento XHTML.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Virtual Library</title> </head> <body> <p>Moved to <a href="http://vlib.org/">vlib.org</a>.</p> </body> </html>
Nota che in questo esempio viene inclusa la dichiarazione di XML. Una dichiarazione XML come quella sopra non viene richiesta da tutti i documenti XML. Si raccomanda fermamente agli autori di documenti XHTML di usare le dichiarazioni XML in tutti i loro documenti. Questo tipo di dichiarazione viene richiesta quando la codifica dei caratteri del documento è un'altra rispetto a quella usata per default UTF-8 o UTF-16.
3.1.2 Uso di XHTML con altri spazi di nomi Lo spazio dei nomi XHTML può essere usato con altri spazi dei nomi XML come viene indicato in [XMLNAMES], sebbene questi documenti non siano strettamente conformi ai documenti XHTML 1.0 come definito sopra. Il lavoro futuro del W3C sarà nella direzione di specificare la conformità per quei documenti che comprendono diversi spazi dei nomi.L'esempio seguente mostra il modo in cui XHTML 1.0 può essere usato insieme alle Raccomandazioni MathML:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>A Math Example</title> </head> <body> <p>The following is MathML markup:</p> <math xmlns="http://www.w3.org/1998/Math/MathML"> <apply> <log/> <logbase> <cn> 3 </cn> </logbase> <ci> x </ci> </apply> </math> </body> </html>L'esempio seguente mostra il modo in cui i marcatori di XHTML possono essere incorporati in un altro spazio dei nomi XML:
<?xml version="1.0" encoding="UTF-8"?> <!-- initially, the default namespace is "books" --> <book xmlns='urn:loc.gov:books' xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en"> <title>Cheaper by the Dozen</title> <isbn:number>1568491379</isbn:number> <notes> <!-- make HTML the default namespace for a hypertext commentary --> <p xmlns='http://www.w3.org/1999/xhtml'> This is also available <a href="http://www.w3.org/">online</a>. </p> </notes> </book>3.2 Conformità degli User Agent Uno user agent conforme deve rispettare tutti i seguenti punti:
ID
come identificatori di frammento (per esempio l'attributo id
nella maggior parte degli elementi XHTML).
Il processore XML normalizza diversi sistemi di codice di fine linea in un singolo carattere di line-feed che viene passato all'applicazione. In aggiunta lo user agent XHTML deve trattare come spazi bianchi anche i seguenti caratteri:
Negli elementi dove l'attributo 'xml:space' ha il valore 'preserve', lo user agent deve conservare intatti tutti i caratteri di spazi bianchi (fatta eccezione per i caratteri di spazi bianchi iniziali e finali che dovrebbero essere rimossi). In altri casi uno spazio bianco viene considerato secondo le seguenti regole:
Sebbene la sovrapposizione sia illegale in SGML, è stata ampiamente tollerata dai browser esistenti.
<p>here is an emphasized <em>paragraph</em>.</p>
SBAGLIATO: elementi sovrapposti<p>here is an emphasized <em>paragraph.</p></em>
4.2 Gli elementi e i nomi degli attributi devono essere in lettere minuscole I documenti XHTML devono usare lettere minuscole per tutti gli elementi HTML e per i nomi degli attributi. Questa differenza è necessaria perchè XML è sensibile alle minuscole e alle maiuscole, per esempio <li> e <LI> sono tag diversi. 4.3 Gli elementi non vuoti richiedono il tag di chiusura In HTML 4.0 basato su SGML alcuni elementi potevano omettere il tag di chiusura, in modo tale che gli elementi che seguivano implicavano tale chiusura. Questa omissione non è permessa in XHTML basato su XML. Tutti gli elementi, ad eccezione di quelli dichiarati comeEMPTY
nella DTD devono avere un tag di chiusura.
<p>here is a paragraph.</p><p>here is another paragraph.</p>
SBAGLIATO: elementi non chiusi<p>here is a paragraph.<p>here is another paragraph.
4.4 I valori degli attributi devono sempre essere compresi fra doppi apici Tutti i valori degli attributi devono essere compresi fra doppi apici, inclusi i valori numerici.<table rows="3">
SBAGLIATO: valori di attributo senza doppi apici<table rows=3>
4.5 Minimizzazione degli attributi XML non supporta la minimizzazione degli attributi. I valori degli attributi accoppiati devono essere scritti completamente. I nomi degli attributi comecompact
e checked
non possono essere presenti negli elementi se non viene specificato il loro valore.
<dl compact="compact">
SBAGLIATO: attributi minimizzati<dl compact>
4.6 Elementi vuoti Gli elementi vuoti devono avere un tag di chiusura o il tag iniziale deve terminare con/>
. Per esempio <br/>
o <hr></hr>
. Vedere HTML Compatibility Guidelines per informazioni sul modo con cui poter assicurare la compatibilità retroattiva con gli user agent di HTML 4.
<br/><hr/>
SBAGLIATO: tag vuoto non chiuso<br><hr>
4.7 La manipolazione di spazi bianchi nei valori degli attributi Nei valori degli attributi, gli user agent elimineranno gli spazi bianchi iniziali e finali dai valori degli attributi e sostituiranno la sequenza di uno o più spazi bianchi (compreso il salto di linea) con un singolo spazio tra le parole (un carattere di spazio ASCII per le scritture di tipo occidentale). Vedere la Sezione 3.3.3 di [XML]. 4.8 Gli elementi Script e Style In XHTML gli elementi script e style vengono dichiarati come se avessere un contenuto di tipo#PCDATA
. Come risultato <
e &
verranno trattati come inizio del marcatore, e entità quali <
e &
saranno riconosciute come entità di riferimento dal processore XML rispettivamente come <
e &.
Racchiudere il contenuto dell'elemento script o style dentro una sezione marcata CDATA
evita il processamento di queste entità.
<script> <![CDATA[ ... unescaped script content ... ]]> </script>Le sezioni
CDATA
vengono riconosciute dal processore XML e appaiono come nodi nel Modello dell'Oggetto di Documento, vedi Section 1.3 delle Raccomandazioni DOM Livello 1 [DOM].Una alternativa è quella di usare documenti esterni per gli script e gli style. 4.9 Esclusioni dell'SGML L'SGML dà allo scrittore di una DTD la possibilità di impedire che specifici elementi siano annidati in altri elementi. Queste proibizioni (chiamate "esclusioni") non sono possibili in XML.
Per esempio, la DTD Stretta di HTML 4 proibisce l'annidamento di un elemento 'a
' dentro un altro elemento 'a
' a qualsiasi profondità. Non è possibile dettagliare tale proibizione in XML. Anche se queste proibizioni non possono essere definite in una DTD, certi elementi non dovrebbero essere annidati. Un elenco di questi elementi e degli elementi che non dovrebbero essere annidati con loro si trova nella normativa in Appendix B.
name
per gli elementi a
, applet
, form
, frame
, iframe
, img
, e map
. HTML 4 introduce anche l'attributo id
. Entrambi questi attributi sono disegnati per essere usati come identificatori di frammenti di informazioni.
In XML gli identificatori di frammenti sono di tipo ID
, e ci può essere un solo attributo di tipo ID
per elemento. Quindi, in XHTML 1.0 l'attributo id
viene definito di tipo ID
. Con l'obiettivo di assicurare che i documenti XHTML 1.0 siano documenti XML ben-formati, i documenti XHTML 1.0 DEVONO usare l'attributo id
quando definiscono gli identificatori di frammento, compreso con elementi che storicamente usavano anche un attributo name
. Vedere HTML Compatibility Guidelines per informazioni su come assicurare la compatibilità retroattiva delle ancore quando si servono di documenti XHTML come media di tipo text/html
.
Nota che in XHTML 1.0 l'attributo name
di questi elementi è formalmente proibito e verrà rimosso nella futura versione di XHTML.
Comunque, i documenti XHTML che seguono le linee guida indicate in Appendix C, "Linee guida sulla compatibilità di HTML" possono essere etichettati con il tipo di Media per Internet "text/html", in quanto sono compatibili con la maggior parte dei browser HTML. Questo documento non presenta nessuna raccomandazione sull'etichetta MIME di altri documenti XHTML.
Il processo di modularizzazione spezza XHTML in una serie di piccoli insiemi di elementi. Questi elementi possono essere ricombinati per raggiungere i bisogni delle diverse comunità.
Questi moduli saranno definiti in un futuro documento del W3C.
6.2 Sottoinsiemi e estensibilità La modularizzazione si porta dietro molti vantaggi:Per i designer dei prodotti questo permette di definire il proprio profilo standard dei vari gruppi.
Per gli autori, questo permette di evitare di scrivere versioni differenti dei documenti per diversi clienti.
Per gruppi speciali come i chimici, i medici o i matematici, questo permette di costruire un profilo speciale usando elementi standard di HTML insieme ad un gruppo di elementi appositamente disegnati per le specifiche necessità.
Appendice A. DTDQuesta appendice è normativa.Queste DTD e gli insiemi di entità formano una parte normativa di questa specifica. L'insieme completo dei file delle DTD insieme con la dichiarazione XML e il Catalogo Aperto SGML è incluso nel file zip di questa specifica.
A.1 Definizione del Tipo di Documento Queste DTD si avvicinano alle DTD di HTML 4. Verosimilmente quando queste DTD verranno modularizzate, verrà adottato un modo di costruzione delle DTD che corrisponda più strettamente a HTML 4.0.€
or €
or €
) è stata definita come parte di caratteri speciali.
I seguenti elementi hanno limitazioni sugli elementi che possono essere annidati (vedere la Sezione 4.9). Questa proibizione si applica a tutte le profondità di annidamento, cioè riguarda tutti gli elementi discendenti.
a
a
.
pre
img
, object
, big
, small
, sub
, or sup
button
input
, select
, textarea
, label
, button
, form
, fieldset
, iframe
or isindex
label
label
form
form
Questa appendice riassume le linee guida per gli autori che desiderano che i loro documenti XHTML sia visualizzabili con gli user agent HTML esistenti.
C.1 Istruzioni per il processo E' necessario sapere che le istruzioni di processo sono visualizzabili con alcuni user agent. Nota comunque che quando la dichiarazione XML non viene inclusa in un documento, il documento può usare solo il carattere di default codificato da UTF-8 or UTF-16. C.2 Elementi vuoti Includere uno spazio bianco prima della barra e della parentesi angolare chiusa/
e >
di elementi vuoti, per esempio, <br />
, <hr />
e <img src="karen.jpg" alt="Karen" />
. Inoltre, usare la sintassi minimizzata per i tag degli elementi vuoti, per esempio, <br />
, dato che la sintassi alternativa <br></br>
permessa da XML dà risultati imprevisti con molti user agent esistenti. C.3 Minimizzazione degli elementi e contenuto degli elementi vuoti Data una istanza vuota di un elemento il cui modello di contenuto non è EMPTY
(per esempio, un titolo vuoto o un paragrafo) non usare la forma mimimizzata (per esempio usa <p> </p>
e non <p />
). C.4 Style sheet e script incorporati Usare style sheet esterni se questi usano i caratteri <
or &
or ]]>
or --
. Usare script esterni se questi usano i caratteri <
or &
or ]]>
or --
. Nota che i parser XML possono rimuovere il contenuto dei commenti. Comunque, la pratica comune di "nascondere" gli script e gli style sheet all'interno di commenti rende il documento compatibile con le vecchie versioni di browser, ma non lo rende funzionante con implementazioni basate su XML. C.5 Salto di linea all'interno dei valori dell'attributo Evitare i salti di linea e i caratteri di spazi multipli all'interno dei valori dell'attributo. Questi sono manipolati in maniera inconsistente dagli user agent. C.6 Isindex Non comprendere più di un elemento isindex
nel documento head
. L'elemento isindex
è sconsigliato in favore dell'elemento input
. C.7 Gli attributi lang e xml:lang Usare entrambi gli attributi lang
and xml:lang
quando si vuole specificare il linguaggio di un elemento. Il valore dell'attributo xml:lang
ha la precedenza. C.8 Identificatori di frammenti In XML gli URI [RFC2396] che terminano con gli identificatori di frammenti della forma "#foo"
non si riferiscono a elementi con un attributo name="foo"
; piuttosto si riferiscono a elementi con un attributo definito del tipo ID
, per esempio l'attributo id
in HTML 4. Molti client HTML esistenti non supportano l'uso degli attributi di tipo ID
in questo modo, quindi devono essere sostituiti valori identici per entrambi questi attributi in modo da assicurare una compatibilità futura e retroattiva (e.g., <a id="foo" name="foo">...</a>
).
Inoltre, poichè l'insieme dei valori permessi per gli attributi di tipo ID
è molto più piccolo di quelli per il tipo CDATA
, il tipo dell'attributo name
è stato cambiato in NMTOKEN
. Questo attributo è limitato in modo tale che possa avere solo gli stessi valori del tipo ID
, o come la produzione Name
in XML 1.0 Sezione 2.5, produzione 5. Sfortunatamente questa limitazione non può essere espressa nella DTD di XHTML 1.0. A causa di questo cambiamento, si deve avere molta attenzione quando si convertono i documenti HTML esistenti. I valori di questi attributi devono essere unici all'interno del documento, validi, ed ogni riferimento a questi identificatori di frammenti (sia interni che esterni) dovrebbe essere aggiornato in modo che i valori vengano cambiati durante la conversione.
Notare, in fine, che XHTML 1.0 ha disapprovato l'uso dell'attributo name
degli elementi a
, applet
, form
, frame
, iframe
, img
, e map
, e sarà eliminato da XHTML nella versioni successive.
<?xml version="1.0" encoding="EUC-JP"?>
) sia una frase meta http-equiv (per esempio, <meta http-equiv="Content-type" content='text/html; charset="EUC-JP"' />
). Ha la precedenza il valore dell'attributo di codifica dell'istruzione di processo xml. C.10 Attributi booleani Alcuni user agent HTML sono capaci di interpretare gli attributi booleani quando questi appaiono nella loro forma completa (non-minimizzata), come richiesto da XML 1.0. Notare che questo problema non ha effetto sugli user agent conformi a HTML 4.0. Sono coinvolti i seguenti attributi: compact
, nowrap
, ismap
, declare
, noshade
, checked
, disabled
, readonly
, multiple
, selected
, noresize
, defer
. C.11 Il Document Object Model e XHTML La Raccomandazione del Livello 1 del Document Object Model [DOM] definisce le interfacce del modello dell'oggetto documento per XML e HTML 4. Il modello di oggetto del documento di HTML 4 specifica che gli elementi e i nomi degli attributi di HTML vengono restituiti in lettere maiuscole. Il modello di oggetto del documento XML specifica che gli elementi e i nomi degli attributi vengono restituiti in maiuscolo o minuscolo a seconda del caso in cui erano specificati. In XHTML 1.0, gli elementi e gli attributi sono specificarti in lettere minuscole. Questa apparente differenza può spiegata in due modi:
text/html
via DOM possono usare il DOM di HTML e possono così assicurarsi che gli elementi e i nomi degli attributi vengano ritornati in lettere maiuscole da queste interfacce.text/xml
o application/xml
, possono usare anche il DOM di XML. Gli elementi e gli attributi saranno ritornati in lettere minuscole. Inoltre, alcuni elementi XHTML possono o no apparire nell'albero degli oggetti in quanto sono opzionali nel modello di contenuto (per esempio l'elemento tbody
all'interno di table
). Questo accade perchè in HTML 4.0 alcuni elementi possono essere minimizzati in modo tale che il tag di apertura e di chiusura sia entrambi omessi (una caratteristica di SGML). Questo non è possibile in XML. Piuttosto che richiedere agli autori di documenti di inserire elementi estranei, XHTML ha posto tali elementi come opzionali. Le applicazioni si devono adattare a questo.&
"). Per esempio, quando l'attributo href
dell'elemento a
si riferisce ad uno script CGI con dei parametri, deve essere espresso come http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user
invece che http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user
. C.13 Cascading Style Sheets (CSS) e XHTML Le Raccomandazioni di livello 2 dei Cascading Style Sheet [CSS2] definiscono le proprietà di stile che vengono applicate all'albero di analisi di un documento HTML o XML. Le differenze nell'analisi produrranno risultati visivi o auditivi diversi a seconda del selector usato. La traccia seguente ridurrà questo effetto per i documenti che sono serviti senza modifiche in entrambi i tipi di media:
id
" come un attributo di tipo ID
. Quindi gli style sheet dovrebbero essere capaci di continuare usando la sintassi abbreviata del selector "#" anche se lo user agent non legge la DTD.Queste specifiche sono state scritte con la partecipazione dei membri del gruppo di lavoro HTML del W3C:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.3