The Extensible HyperText Markup Language (original) (raw)
Riassunto
Questa specifica definisce XHTML 1.0, una riformulazione di HTML 4 come applicazione XML 1.0, e le tre DTD corrispondenti a quelle definite in HTML 4. La semantica degli elementi e dei loro attributi è definita nella Raccomandazione del W3C per HTML 4. Tale semantica fornisce la base per future estensioni di XHTML. La compatibilità con gli user agent esistenti è possibile seguendo un piccolo insieme di regole.
Stato di questo documento
Questa sezione descrive lo stato di questo documento al momento della sua pubblicazione. Altri documenti possono sostituire questo documento. L'ultima versione di questa serie di documenti si trova al W3C.
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'HTMLsi 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?
- 1.1 Cosa è HTML 4?
- 1.2 Cosa è XML?
- 1.3 Perchè la necessità di XHTML?
- 2. Definizioni
- 2.1 Terminologia
- 2.2 Termini generali
- 3. Definizione Normativa di XHTML 1.0
- 4. Differenze con HTML 4
- 5. Compatibilità
- 6. Direzioni future
- Appendix A. DTD
- Appendix B. Incompatibilità tra gli elementi
- Appendix C. Linee guida per la compatibilità con HTML
- Appendix D. Ringraziamenti
- Appendix E. Riferimenti
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:
- i documenti XHTML sono conformi a XML. In quanto tali sono facilmente visualizzati, editati e validati con i tool standard di XML.
- i documenti XHTML possono essere scritti per funzionare in modo uguale o migliore di quanto facessero prima con gli user agent conformi a HTML 4, così come nei nuovi user agent conformi a XHTML 1.0.
- i documenti XHTML possono utilizzare applicazioni (per esempio script e applet) che si basano sia sul Document Object Model di HTML sia su quello di XML [DOM]
- poichè si ha una evoluzione della famiglia XHTML, i documenti conformi a XHTML 1.0 saranno sempre più pronti per interagire all'interno e con diversi ambienti XHTML. La famiglia XHTML è il prossimo passo nell'evoluzione di Internet. Passando oggi a XHTML, gli sviluppatori possono entrare nel mondo XML con tutti i benefici che si aspettano, assicurandosi la compatibilità con gli user agent attuali e futuri.
1.1 Cosa è HTML 4?
HTML 4.0 [HTML] è una applicazione SGML (Standard Generalized Markup Language) conforme allo Standard Internazionale ISO 8879, e viene considerato da tutti il linguaggio standard per le pubblicazioni del World Wide Web.
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:
- Gli sviluppatori di documenti e i disegnatori di user agent sono costantemente alla scoperta di modi nuovi per esprimere le loro idee attraverso nuovi marcatori. In XML è relativamente semplice intodurre nuovi elementi o aggiungere attributi agli elementi. La famiglia XHTML è stata concepita per accogliere queste estensioni attraverso moduli XHTML e tecniche per lo sviluppo di nuovi moduli conformi ad XHTML (descritti nella futura specifica di Modularizzazione di XHTML). Questi moduli permetteranno la combinazione di insiemi di caratteristiche nuove ed esitenti durante la creazione del contenuto così come il disegno di nuovi user agent.
- Costantemente vengono prodotte nuove forme di accesso ad Internet. Alcune stime indicano che nell'anno 2002 il 75% dei documenti visibili su Internet saranno sviluppati da queste piattaforme alternative. La famiglia XHTML è stata concepita tenendo conto della interoperabilità con gli user agent generali. Attraverso un nuovo user agent e un nuovo meccanismo di specifica del documento, i server, i proxies e gli user agent potranno realizzare una migliore trasformazione del contenuto. In ultimo, sarà possibile sviluppare contenuto conforme a XHTML che sia utilizzabili da tutti gli user agent conformi a XHTML.
2. Definizioni
2.1 Terminologia
In questa specifica vengono usati i termini che seguono. Tali termini estendono le definizioni presenti in [RFC2119] basandosi su definizioni simili in ISO/IEC 9945-1:1990 [POSIX.1]:
Definito per l'implementazione (Implementation-defined)
Un valore o un comportamento si dice definito per l'implementazione quando viene lasciata alla stessa implementazione il compito di definire (e documentare) i requisiti corrispondenti per una costruzione corretta del documento.
Può (May)
Rispettando l'implementazione, la parola "may" deve essere interpretata come una caratteristica futura che non viene richiesta in queste specifiche ma che può essere fornita. Rispettando la Conformità del Documento, la parola "may" significa che le caratteristiche opzionali non devono essere usate. Il termine "optional" ha la stessa definizione di "may".
Deve (Must)
In queste specifiche, la parola "must" deve essere interpretata come un requisito obbligatorio dell'implementazione o della Stretta Conformità dei Documenti XHTML, a seconda del contesto. Il termine "shall" ha la stessa definizione di "must".
Riservato (Reserved)
Si riferisce ad una valore o ad un comportamento che non è specificato e il cui uso non è neppure ammesso dalla Conformità dei Documenti nè deve essere supportato dagli User Agent Conformi.
Dovrebbe (Should)
Rispettando l'implementazione, la parola "should" deve essere interpretata come una raccomandazione per l'implementazione, ma non come un requisito. Rispettando i documenti, la parola "should" deve essere interpretata come una raccomandazione pratica per la programmazione dei documenti e un requisito per la Stretta Conformità dei Documenti XHTML.
Ammesso (Supported)
Alcune strutture in queste specifiche sono opzionali. Se alcune di queste vengono supportate, il loro comportamento sarà quello indicato in queste specifiche.
Non specificato (Unspecified)
Quando un valore o un comportamento non è determinato, le specifiche non definiscono requisiti di portabilità sull'implementazione neanche quando si deve analizzare un documento che usi tale struttura. Un documento che richiede uno specifico comportamento in questa situazione, invece di tollerare qualsiasi comportamento nell'uso di questa struttura, non sarà un Documento Strettamente Conforme a XHTML.
2.2 Termini generali
Attributo
Un attributo è un parametro ad un elemento dichiarato nella DTD. Il tipo di un attributo e il suo insieme di valori, compreso un possibile valore di default, vengono definiti nella DTD.
DTD
Una DTD, o definizione di tipo di documento, è una collezione di dichiarazioni XML che. come collezione, definisce la struttura legale, gli elementi, e gli attributiche sono disponibili per l'uso in un documento che soddisfa la DTD.
Documento
Un documento è un flusso di dati che, dopo essere stato combinato con altri flussi di dati a cui fa riferimento, viene strutturato in modo che porta le informazioni contenute all'interno degli elementiorganizzati come definito nella DTD associata. VedereI Requisiti di Conformità dei Documentiper maggiori informazioni.
Elemento
Un elemento è una unità strutturale di un documento dichiarato nella DTD. Il modello del contenuto dell'elemento viene definito nella DTD e la semantica addizionale può essere definita nella descrizione commentata dell'elemento.
Funzionalità
Le funzionalità comprendono gli elementi, gli attributi, e la semantica associata con questi elementi e attributi. Una implementazione che supporti questa funzionalità deve fornire le strutture necessarie.
Implementazione
Una implementazione è un sistema che fornisce un insieme di strutturee servizi che supporti queste specifiche. Vedere User Agent Conformance per maggiori informazioni.
Analisi (Parsing)
Il parsing è l'azione secondo cui un documentoviene analizzato, e l'informazione contenuta all'interno del documentoviene filtrata nel contesto degli elementi in cui l'informazione è strutturata.
Presentazione (Rendering)
Rendering è l'azione secondo cui l'informazione viene presentata all'interno di un documento. Questa presentazione viene fatta nella forma più appropriata rispetto all'ambiente (esempio: uditiva, visiva, per la stampa).
User Agent
Uno user agent è una implementazione che ricerca e processa i documenti XHTML. Vedi Conformità degli User Agent (User Agent Conformance) per maggiori informazioni.
Validazione
La validazione è un processo secondo cui i documentivengono verificati rispetto alla DTD associata, assicurando che la loro struttura, l'uso degli elementi, e l'uso degli attributi sia consistente con le definizioni nella DTD.
Ben-formato
Un documento è ben formato quando la sua struttura è in accordo con le regole definite nella Sezione 2.1 della Raccomandazione XML 1.0 [XML]. Principalmente questa definizione indica che gli elementi, delimitati dai loro tag iniziale e finale, sono annidati in maniera corretta uno dentro l'altro.
3. Definizione Normativa di XHTML 1.0
3.1 Conformità del Documento
Questa versione di XHTML fornisce una definizione di conformità stretta dei documenti XHTML, che viene ristretta ai tag e agli attributi dello spazio dei nomi di XHTML. Vedi Sezione 3.1.2per informazioni sull'uso di XHTML con altri spazi di nomi, per esempio, l'inclusione di metadati espressi in RDF all'interno di documenti XHTML.
3.1.1 Documenti Strettamente Conformi
Un documento XHTML strettamente conforme è un documento che richiede solo le strutture descritte come obbligatorie in queste specifiche. Questi documenti devono rispettare tutti i seguenti punti:
- Deve essere validato rispetto ad una delle tre DTD presenti in Appendice A.
- L'elemento radice del documento deve essere
<html>
. - L'elemento radice del documento deve indicare lo spazio dei nomi di XHTML usando l'attributo
xmlns
[XMLNAMES]. Lo spazio dei nomi per XHTML è definito inhttp://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.
Qui viene riportato un piccolo esempio di un documento XHTML.
Virtual LibraryMoved to vlib.org.
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:
A Math ExampleThe following is MathML markup:
3 xL'esempio seguente mostra il modo in cui i marcatori di XHTML possono essere incorporati in un altro spazio dei nomi XML:
Cheaper by the Dozen isbn:number1568491379
This is also available online.
3.2 Conformità degli User Agent
Uno user agent conforme deve rispettare tutti i seguenti punti:
- Per essere consistente con le Raccomandazioni di XML 1.0 [XML], lo user agent deve analizzare e valutare un documento XHTML come "ben formato". Se lo user agent si dice validante, allora deve validare anche i documenti rispetto alla loro DTD in accordo con [XML].
- Quando uno user agent afferma di supportare strutturedefinite all'interno di queste specifiche o richieste da queste specifiche attraverso le normative di riferimento, lo deve fare in modo consistente rispetto alla definizione di stuttura.
- Quando uno user agent processa un documento XHTML come un generico XML, dovrà riconoscere solo gli attributi di tipo
ID
come identificatori di frammento (per esempio l'attributoid
nella maggior parte degli elementi XHTML). - Se uno user agent incontra un elemento che non riconosce, deve presentare il contenuto di tale elemento.
- Se lo user agent incontra un attributo che non riconosce, deve completamente ignorare le specifiche dell'attributo (per esempio, l'attributo e i suoi valori).
- Se lo user agent incontra un valore di attributo che non riconosce, deve usare il valore di default dell'attributo.
- Se lo user agent incontra un riferimento ad una entità (diversa da quelle predefinite) per la quale lo user agent non ha processato nessuna dichiarazione (può succedere se la dichiarazione si trova in un sottoinsieme esterno che lo user agent non ha letto), l'entità deve essere presentata come i caratteri (iniziando con un ampersand, &, e finendo con un punto e virgola) che formano il riferimento alla entità.
- Quando viene presentato il contenuto, lo user agent che incontra caratteri o entità di tipo carattere che riconosce ma che non sa come presentare, dovrebbe visualizza il documento in modo tale che l'utente si accorga chiaramente che non è stata possibile una corretta presentazione.
- I seguenti caratteri vengono definiti in [XML] come caratteri di spazi bianchi:
- Spazio ( )
- Tabulazione ( )
- Ritorno carrello ( )
- Line feed ( )
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:
- Form feed ()
- Zero-width space ()
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:
- Tutti gli spazi bianchi che circondano elementi in blocco dovrebbero essere rimossi.
- I commenti vengono rimossi interamente e non hanno conseguenza sulla manipolazione di spazi bianchi. Un carattere di spazio bianco su entrambi i lati di un commento viene trattato come due caratteri di spazio bianco.
- Gli spazi bianchi iniziale e finale dentro un elemento in blocco devono essere rimossi.
- I caratteri di line feed all'interno di elementi in blocco devono essere convertiti in uno spazio (tranne quando l'attributo di 'xml:space' viene posto a 'preserve').
- Una sequenza di caratteri di spazi bianchi deve essere ridotta ad un singolo carattere di spazio bianco (tranne quando l'attributo di 'xml:space' viene posto a 'preserve').
- Rispetto alla presentazione, lo user agent dovrebbe visualizzare il contenuto in maniera appropriata al linguaggio secondo cui è scritto il contenuto stesso. Nelle lingue in cui la base di scrittura è il carattere latino, il carattere di spazio ASCII viene usato tipicamente sia come spazio grammaticale tra le parole che come spazio tipografico bianco; nelle lingue la cui scrittura è in relazione al Nagari (esempio Sanscrito, Thai, ecc.) i limiti tra le parole possono essere codificati usando il carattere 'space' ZW, ma non verranno visualizzati come caratteri tipografici di spazi bianchi; lingue con scritture di base araba possono codificare il carattere tipografico di spazio bianco con un carattere di spazio, ma possono anche usare il carattere spazio ZW per delimitare i limiti grammaticali 'interni' (quelle che sembrano parole arabe per un lettore inglese normalmente comprendono più parole, per esempio 'kitAbuhum'= 'kitAbu-hum' = 'libri loro' == i loro libri); e lingue di scrittura cinese normalmente non codificano questi identificatori nè usano spazi bianchi in questo modo. Gli spazi bianchi nel valore degli attributi vengono considerati in accordo a [XML].
4. Differenze con HTML 4
Poichè XHTML è un'applicazione XML, certi usi che erano perfettamente legali in HTML 4.0 basato su SGML [HTML] devono essere cambiati.
4.1 I documenti devono essere ben formati
Ben-formato è un concetto introdotto da[XML]. Sostanzialmente questo significa che tutti gli elementi devono avere il tag di chiusura o devono essere scritti in una forma speciale (come descritto sotto), e che tutti gli elementi devono essere annidati.
Sebbene la sovrapposizione sia illegale in SGML, è stata ampiamente tollerata dai browser esistenti.
CORRETTO: elementi annidati.
here is an emphasized paragraph.
SBAGLIATO: elementi sovrapposti
here is an emphasized paragraph.
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
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 come EMPTY
nella DTD devono avere un tag di chiusura.
CORRETTO: elementi chiusi
here is a paragraph.
here is another paragraph.
SBAGLIATO: elementi non chiusi
here is a paragraph.
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.
CORRETTO: valori di attributo tra doppi apici