HTML 4.0: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
LiveRC : Annullate le modifiche di 185.168.98.70 (discussione), riportata alla versione precedente di Lemure Saltante
Etichetta: Annulla
 
(41 versioni intermedie di 24 utenti non mostrate)
Riga 1:
{{W|informatica|aprile 2019}}
'''HTML 4.0''' nella sottoversione 4.01 è stato rilasciato il [[24 dicembre]] [[1999]]. Sua naturale evoluzione è [[XHTML]], ormai giunto alla seconda versione.
'''HTML 4.0''' nella sottoversione 4.01 è uscito il 24 dicembre [[1999]]. Sua naturale evoluzione è [[XHTML]], ormai superato da [[HTML5]].
 
Le principali differenze dalla release precedente (HTML 3.2) sono:
* miglior supporto ai [[CSSFoglio di stile|fogli di stile]]
* possibilitàpossibilità di incorporare [[Oggetto (informatica)|oggetti]]
* nuovi [[tag HTML|tag]] per arricchire le tabelle
* accessibilitàaccessibilità per le persone disabili ai contenuti web ([[http://www.aib.it/aib/cwai/WAI-trad.htmWeb Accessibility Initiative|WAI]]
* deprecate alcune proprietà e.g. <code>bgcolor</code>, <code>align</code>, <code>valign</code>, <code>color</code>, <code>border</code>, <code>cellspacing</code> ecc.<ref>{{Cita web|https://www.w3.org/TR/html401/present/graphics.html|Alignment, font styles, and horizontal rules|7 ottobre 2018|lingua=en|sito=[[World Wide Web Consortium]]|citazione=bgcolor deprecated|data = 24 dicembre 1999}}</ref><ref>{{Cita web|https://developer.mozilla.org/en-US/docs/Web/API/Document/bgColor|Document.bgColor|7 ottobre 2018|lingua=en|citazione=This feature has been removed from the Web standards|sito=Mozilla Developer}}</ref>
L'HTML 4.0 inoltre compie grandi passi in direzione dell'internazionalizzazione dei documenti, con l'obiettivo
di rendere il Web di portata davvero globale.
----
Si veda:
* [[Specifiche HTML 4.0]]
 
L'HTML 4.0 introduce altresì specifiche sull'internazionalizzazione dei documenti insieme ad altre caratteristiche per migliorare l'accessibilità del [[World Wide Web|Web]].<ref>{{Cita web|https://www.w3.org/TR/html4/intro/intro.html#h-2.3.1|Internationalization|8 ottobre 2018|citazione = HTML now offers greater support for diverse human languages within a document. This allows for more effective indexing of documents for search engines, higher-quality typography, better text-to-speech conversion, better hyphenation, etc.|lingua = en|pubblicazione=[[World Wide Web Consortium]]|data = 24 dicembre 1999}}</ref>
=== <center>Introduzione a HTML 4.0</center> ===
==== 1 Che cos'è il World Wide Web? ====
Il ''World Wide Web (Web)'' è una rete di risorse di informazioni. Il Web si basa su tre meccanismi per rendere queste risorse prontamente disponibili al più vasto insieme possibile di utenti:
 
== Note ==
# Uno schema di denominazione uniforme per localizzare le risorse sul Web (ad es., gli [[URI]]).
<references />
# [[protocollo|Protocolli]], per accedere alle risorse denominate sul Web (ad es., [[HTTP]]).
# [[Ipertesto]], per una facile navigazione tra le risorse (ad es., HTML).
Le connessioni tra i tre meccanismi risultano evidenti dal principio alla fine di questa specifica.
 
==Voci correlate==
'''1.1 Introduzione agli URI'''<br>
* [[HTML]]
Ogni risorsa disponibile sul Web -- documento HTML, immagine, sequenza video, programma, ecc. -- ha un indirizzo che può essere codificato da un ''Universal Resource Identifier'', o "URI".
 
==Collegamenti esterni==
Gli URI consistono tipicamente di tre parti:
* {{Collegamenti esterni}}
# Lo schema di denominazione del meccanismo usato per accedere alla risorsa.
* {{cita web|http://www.aib.it/aib/cwai/WAI-trad.htm|Contenuti WAI}}
# Il nome della macchina ospitante la risorsa.
{{Portale|internet}}
# Il nome della risorsa stessa, specificato come un percorso.
Si consideri l'URI che indica le Specifiche HTML correnti:
 
[[Categoria:Standard W3C]]
http://www.w3.org/TR/REC-html40
[[Categoria:HTML]]
 
Questo URI può essere interpretato come segue: c'è un documento ottenibile tramite il protocollo HTTP (si veda [http://ds.internic.net/rfc/rfc2068.txt RFC2068]), residente sulla macchina www.w3.org, accessibile tramite il percorso "/TR/REC-html40/". Altri schemi che si possono trovare in documenti HTML includono "mailto" per la posta elettronica e "ftp" per FTP. <br>
Ecco un altro esempio di URI. Questo si riferisce a una casella di posta elettronica di un utente:
 
:''...questo è testo...''
Per qualsiasi commento, inviare un email a
<A href="mailto:joe@someplace.com">Joe Cool</A>.
 
:''Nota. La maggior parte dei lettori può essere familiare con il termine "URL" e non con il termine "URI". Gli URL formano un sottoinsieme dello schema di denominazione più generale URI.''
 
'''1.2 Identificatori di frammento'''<br>
Alcuni URI si riferiscono ad una posizione dentro una risorsa. Questo tipo di URI termina con un simbolo "#" seguito da un'identificatore di ancora (chiamato l'''identificatore di frammento''). Ad esempio, ecco un URI che punta ad un'ancora denominata <tt>sezione_2</tt>:
 
http://somesite.com/html/top.html#sezione_2
 
'''1.3 URI relativi'''<br>
Un ''URI relativo'' non contiene alcuna informazione sullo schema di denominazione. Il suo percorso si riferisce genericamente ad una risorsa sulla stessa macchina che ospita il documento corrente. Gli URI relativi possono contenere componenti di percorso relativo (ad es., ".." significa un livello più in alto nella gerarchia definita dal percorso), e possono contenere identificatori di frammento.
 
Gli URI relativi sono risolti in URI completi utilizzando un URI di base. Come esempio di risoluzione di un URI relativo, si supponga di avere l'URI di base "http://www.acme.com/support/intro.html". L'URI relativo nella seguente marcatura per un collegamento ipertestuale:
 
<A href="suppliers.html">Suppliers</A>
 
si espandererebbe nell'URI completo "http://www.acme.com/support/suppliers.html", mentre l'URI relativo nella seguente marcatura per un'immagine
 
<IMG src="../icons/logo.gif" alt="logo">
 
si espanderebbe nell'URI completo <nowiki>"http://www.acme.com/icons/logo.gif"</nowiki>.
 
In HTML, gli URI sono usati per:
* Collegarsi ad un altro documento o risorsa, (si vedano gli elementi <tt>A</tt> e <tt>LINK</tt>).
* Collegarsi ad un foglio di stile esterno o ad uno script (si vedano gli elementi <tt>LINK</tt> e <tt>SCRIPT</tt>).
* Includere un'immagine, un oggetto, o un applet in una pagina (si vedano gli elementi <tt>IMG</tt>, <tt>OBJECT</tt>, <tt>APPLET</tt> e <tt>INPUT</tt>).
* Creare una mappa sensibile (si vedano gli elementi <tt>MAP</tt> e <tt>AREA</tt>).
* Inoltrare un modulo (si veda l'elemento <tt>FORM</tt>).
* Creare un documento a frame (si vedano gli elementi <tt>FRAME</tt> e <tt>IFRAME</tt>).
* Citare un riferimento esterno (si vedano gli elementi <tt>Q</tt>, <tt>BLOCKQUOTE</tt>, <tt>INS</tt> e <tt>DEL</tt>).
* Riferirsi alle convenzioni sui metadati che descrivono un documento (si veda l'elemento <tt>HEAD</tt>).
Si consulti la sezione sul tipo URI per maggiori informazioni sugli URI.
 
==== 2 Che cosa è l'HTML? ====
Per pubblicare informazioni destinate ad una distribuzione globale è necessario un linguaggio riconosciuto universalmente, una sorta di madre lingua editoriale che tutti i computer possano potenzialmente capire. Il linguaggio di pubblicazione usato dal World Wide Web è l'HTML (da ''<nowiki>HyperText</nowiki> Markup Language'').
 
HTML dà agli autori i mezzi per:
* Pubblicare documenti su rete con intitolazioni, testo, tabelle, elenchi, foto, ecc.
* Recuperare informazioni da rete attraverso collegamenti ipertestuali, cliccando un pulsante.
* Progettare moduli per eseguire transazioni con servizi remoti, da utilizzarsi per ricercare informazioni, fare prenotazioni, ordinare prodotti, ecc.
* Includere fogli elettronici, sequenze video, sequenze audio, ed altre applicazioni direttamente nei propri documenti.
 
'''2.1 Breve storia dell'HTML'''<br>
L'HTML è stato originariamente sviluppato da Tim Berners-Lee durante la sua permanenza al CERN, ed è diventato popolare grazie all'interprete Mosaic sviluppato dalla NCSA. Nel corso degli anni '90 è prosperato con la crescita esplosiva del Web. Durante questo periodo l'HTML è stato esteso in diversi modi. Il Web dipende dalla condivisione da parte di autori e di rivenditori di pagine Web delle stesse convenzioni per l'HTML. Questo ha motivato uno sforzo congiunto sulle specifiche per l'HTML.
 
L'HTML 2.0 (Novembre 1995, si veda [http://ds.internic.net/rfc/rfc1866.txt RFC1866]) è stato sviluppato sotto l'egida della ''Internet Engineering Task Force'' (IETF) per codificare quanto era entrato a far parte dell'uso comune alla fine del 1994. L'HTML+ (1993) e l'HTML 3.0 (1995, si veda [HTML30]) hanno proposto versioni molto più ricche dell'HTML. Nonostante non abbiano mai ricevuto consensi in sede di discussioni sugli standard, questi progetti hanno portato all'adozione di una serie di nuove caratteristiche. Gli sforzi dell'''HTML Working Group'' del ''World Wide Web Consortium'' per codificare quanto era entrato a far parte dell'uso comune nel 1996, hanno portato all'HTML 3.2 (Gennaio 1997, si veda [http://www.w3.org/TR/REC-html32 HTML32]). I cambiamenti occorsi dalla versione HTML 3.2 sono riassunti nell'Appendice A.
 
È opinione comune che i documenti HTML dovrebbero funzionare bene con interpreti e piattaforme differenti. Raggiungere l'interoperabilità abbassa i costi per i fornitori di contenuto dal momento che essi devono sviluppare una sola versione di un documento. Se lo sforzo non venisse fatto, ci sarebbe un rischio molto più grande che il Web possa cadere in un mondo proprietario di formati incompatibili, riducendo in definitiva il potenziale commerciale del Web per tutti i partecipanti.
 
Ogni versione dell'HTML ha tentato di riflettere un sempre maggiore consenso tra i partecipanti dell'industria, in modo che gli investimenti fatti dai content provider non vadano sprecati e che i loro documenti non diventino illegibili in un breve intervallo di tempo.
 
L'HTML è stato sviluppato con in mente l'idea che tutti i tipi di dispositivi dovrebbero esser capaci di usare l'informazione presente sul Web: PC con schermi grafici a differente risoluzione e differente numero di colori, telefoni cellulari, dispositivi palmari, dispositivi con interfaccia vocale, computer ad alta o bassa banda di trasmissione, e così via.
 
==== 3 HTML 4.0 ====
L'HTML 4.0 estende l'HTML con meccanismi per fogli di stile, scripting, frame, incorporamento di oggetti, supporto migliorato per testo da destra a sinistra e a direzione mista, tabelle più ricche, e ampliamenti dei moduli, offrendo migliore accessibilità per persone affette da disabilità.
 
'''3.1 Internazionalizzazione'''<br>
Questa versione dell'HTML è stata progettata con l'aiuto di esperti nel campo dell'internazionalizzazione, così che i documenti possono essere scritti in tutte le lingue ed essere facilmente trasportati in tutto il mondo. Questo è stato possibile incorporando [http://ds.internic.net/rfc/rfc2070.txt RFC2070], che si occupa dell'internazionalizzazione dell'HTML.
 
Un importante passo è stato l'adozione dello standard ISO/IEC:10646 (si veda ISO10646) come insieme di caratteri del documento per l'HTML. Si tratta dello standard più comprensivo a livello mondiale che si occupa di questioni di rappresentazione dei caratteri internazionali, direzione del testo, punteggiatura, ed altri aspetti delle lingue naturali in uso nel mondo.
 
L'HTML ora offre maggiore supporto per lingue differenti dentro un documento. Questo permette una più efficace indicizzazione dei documenti per i motori di ricerca, una superiore qualità tipografica, una migliore conversione da testo a parlato, una migliore suddivisione delle parole in sillabe per il ritorno a capo, ecc.
 
'''3.2 Accessibilità'''<br>
Con la crescita della comunità Web, e la diversificazione delle capacità e delle competenze dei suoi membri, è cruciale che le tecnologie sottostanti siano appropriate alle relative necessità. L'HTML è stato progettato per rendere le pagine Web più accessibili a coloro che sono affetti da limitazioni fisiche. Gli sviluppi dell'HTML 4.0 ispirati da riguardi per l'accessibilità includono:
* Migliore distinzione tra struttura e presentazione del documento, incoraggiando di conseguenza l'uso di fogli di stile piuttosto che di elementi e attributi di presentazione di HTML.
* Migliori moduli, inclusa l'aggiunta di tasti di scelta rapida, la capacità di raggruppare semanticamente controlli di modulo, la capacità di raggruppare semanticamente opzioni <tt>SELECT</tt>, ed etichette attive.
* La capacità di marcare una descrizione testuale di un oggetto incluso (tramite l'elemento <tt>OBJECT</tt>).
* Un nuovo meccanismo di mappa sensibile sul lato cliente (l'elemento <tt>MAP</tt>) che permette agli autori di integrare collegamenti a immagini e testo.
* Il requisito che testo alternativo accompagni immagini incluse con l'elemento <tt>IMG</tt> e mappe sensibili incluse con l'elemento <tt>AREA</tt>.
* Supporto per gli attributi title e lang in tutti gli elementi.
* Supporto per gli elementi <tt>ABBR</tt> e <tt>ACRONYM</tt>.
* Una più ampia gamma di media destinatari (tty, braille, ecc.) da utilizzarsi con i fogli di stile.
* Migliori tabelle, incluse didascalie, raggruppamenti di colonne, e meccanismi per facilitare la riproduzione non visuale.
* Descrizioni estese di tabelle, immagini, frame, ecc.
Gli autori che progettano pagine tenendo presente questioni di accessibilità acquisiranno non solo i vantaggi della comunità legata all'accessibilità, ma saranno beneficiati anche in altri modi: i documenti HTML ben progettati che distinguono tra struttura e presentazione si adatteranno più facilmente a nuove tecnologie.
 
:''Nota. Per maggiori informazioni sulla progettazione di documenti HTML accessibili si consulti [http://www.w3.org/WAI/ WAIGUIDE].''
 
'''3.3 Tabelle'''<br>
Il nuovo modello di tabella HTML è basato su [http://ds.internic.net/rfc/rfc1942.txt RFC1942]. Gli autori ora hanno un maggior controllo su struttura e disposizione (ad es., i raggruppamenti di colonne). La possibilità dei progettisti di raccomandare le ampiezze di colonna permette agli interpreti HTML di mostrare i dati di tabella in modo incrementale (via via che arrivano) piuttosto che attendere l'intera tabella prima di riprodurla.
 
:''Nota. Al momento in cui queste Specifiche vengono scritte, alcuni strumenti di creazione si basano estensivamente sulle tabelle per la formattazione, il che può facilmente causare problemi di accessibilità. ''
 
'''3.4 Documenti composti'''<br>
L'HTML ora offre un meccanismo standard per incorporare oggetti media ed applicazioni generici nei documenti HTML. L'elemento <tt>OBJECT</tt> (assieme con i suoi antenati più specifici <tt>IMG</tt> e <tt>APPLET</tt>) fornisce un meccanismo per includere immagini, video, suoni, formule matematiche, applicazioni specializzate, ed altri oggetti in un documento. Inoltre, permette agli autori di specificare una gerarchia di riproduzioni alternative per quegli interpreti HTML che non supportano una specifica riproduzione.
 
'''3.5 Fogli di stile '''<br>
I fogli di stile semplificano la marcatura HTML e sollevano largamente HTML dalle responsabilità della presentazione. Essi forniscono sia agli autori che agli utenti il controllo sulla presentazione dei documenti -- informazioni sui caratteri, allineamento, colori, ecc.
 
Le informazioni di stile possono essere specificate per singoli elementi o gruppi di elementi. Le informazioni di stile possono essere specificate in un documento HTML o in un foglio di stile esterno.
 
Il meccanismo per associare un foglio di stile ad un documento è indipendente dal linguaggio del foglio di stile.
 
Prima dell'avvento dei fogli di stile, gli autori avevano un controllo limitato sulla riproduzione. L'HTML 3.2 conteneva un insieme di attributi e di elementi che permettevano il controllo sull'allineamento, la dimensione dei caratteri e il colore del testo. Gli autori utilizzavano anche tabelle e immagini come mezzo per la disposizione interna delle pagine. Il tempo relativamente lungo che gli utenti impiegano per aggiornare i loro interpreti significa che queste caratteristiche continueranno ad essere utilizzate per qualche tempo. Comunque, dato che i fogli di stile offrono un meccanismo di presentazione più potente, il ''World Wide Web Consortium'' alla fine eliminerà molti degli elementi e degli attributi di presentazione di HTML. Da un capo all'altro di queste Specifiche, gli elementi e gli attributi a rischio sono marcati come "disapprovati". Essi sono accompagnati da esempi su come ottenere gli stessi effetti tramite altri elementi o fogli di stile.
 
'''3.6 Scripting'''<br>
Attraverso gli script, gli autori possono creare pagine Web dinamiche (ad es., "moduli intelligenti" che reagiscono mentre l'utente li compila) e usare HTML come mezzo per costruire applicazioni di rete.
 
I meccanismi forniti per includere script in un documento HTML sono indipendenti dal linguaggio di scripting.
 
'''3.7 Stampa'''<br>
A volte gli autori vorranno facilitare gli utenti che desiderano stampare più che il semplice documento corrente. Quando i documenti fanno parte di un lavoro più grande, le relazioni tra essi possono essere descritte usando l'elemento HTML <tt>LINK</tt> o usando il ''Resource Description Language'' del W3C (RDF) (si veda [http://www.w3.org/Metadata/RDF/ RDF]).
 
==== 4 Creazione di documenti con HTML 4.0 ====
Si raccomanda agli autori e agli implementatori di osservare i seguenti principi generali nell'utilizzo di HTML 4.0.
 
'''4.1 Separare la struttura dalla presentazione'''<br>
L'HTML ha le sue radici nell'SGML che è sempre stato un linguaggio per la specifica di marcature strutturali. Con la maturazione di HTML, si sta sostituendo un numero crescente dei suoi elementi ed attributi di presentazione con altri meccanismi, in particolare i fogli di stile. L'esperienza ha dimostrato che separare la struttura di un documento dai suoi aspetti di presentazione riduce il costo del servire un'ampia gamma di piattaforme, ''media'', ecc., e facilita le revisioni dei documenti.
 
'''4.2 Tenere conto dell'accessibilità universale al Web '''<br>
Per rendere il Web più accessibile a tutti, in modo particolare a coloro che sono affetti da disabilità, gli autori dovrebbero tenere conto di come i propri documenti possano essere riprodotti su una varietà di piattaforme: interprete con interfaccia vocale, lettori Braille, ecc. Non si raccomanda che gli autori limitino la propria creatività, solo che considerino riproduzioni alternative nella loro progettazione. L'HTML offre un insieme di meccanismi a questo scopo (ad es., l'attributo <tt>alt</tt>, l'attributo <tt>accesskey</tt>, ecc.)
 
Inoltre, gli autori dovrebbero tenere presente che i loro documenti possono raggiungere un pubblico molto distante con configurazioni di computer differenti. Affinché i documenti vengano interpretati correttamente, gli autori dovrebbero includere nei propri documenti informazioni sulla lingua naturale e la direzione del testo, su come il documento è codificato, e su altri aspetti connessi all'internazionalizzazione.
 
'''4.3 Aiutare gli interpreti HTML con la riproduzione incrementale'''<br>
Progettando in maniera attenta le loro tabelle e facendo uso delle nuove caratteristiche delle tabelle in HTML 4.0, gli autori possono aiutare gli interpreti HTML a riprodurre i documenti in modo più rapido. Gli autori possono imparare come progettare tabelle per la riproduzione incrementale (si veda l'elemento <tt>TABLE</tt>). Gli implementatori dovrebbero consultare le note sulle tabelle nell'appendice per informazioni sugli algoritmi incrementali.
----
=== <center>Riguardo a SGML e HTML</center> ===
Questa sezione del documento introduce SGML e descrive la sua relazione con HTML. Per una discussione completa di SGML si rimanda allo standard (si veda [http://www.iso.ch/cate/d16387.html ISO8879] ).
 
==== 1 Introduzione a SGML ====
SGML è un sistema per definire linguaggi di marcatura. Gli autori marcano i loro documenti rappresentando informazioni riguardanti struttura, presentazione e semantica accanto al contenuto. Ecco un esempio di documento HTML: <tt>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<HEAD>
<TITLE>Il mio primo documento in HTML</TITLE>
</HEAD>
<BODY>
<nowiki><P></nowiki>Ciao mondo!
</BODY>
</HTML>
</tt>
Un documento HTML è suddiviso in una intestazione (qui, tra <tt><HEAD></tt> e <tt></HEAD></tt>) e un corpo (qui, tra <tt><BODY></tt> e <tt></BODY></tt>). Il titolo del documento appare nell'intestazione (assieme ad altre informazioni relative al documento), e il contenuto del documento appare nel corpo. Il corpo in questo esempio contiene un solo paragrafo, marcato con <tt><nowiki><P></nowiki></tt>.
 
Ogni linguaggio di marcatura definito in [[SGML]] è chiamato ''applicazione SGML''. Un'applicazione SGML è generalmente caratterizzata da:
# Una dichiarazione SGML. La ''dichiarazione SGML'' specifica quali caratteri e delimitatori possono apparire nell'applicazione.
# Una ''definizione del tipo di documento'' (DTD). La DTD definisce la sintassi dei costrutti di marcatura. La DTD può includere definizioni aggiuntive quali referenze al carattere mediante entità carattere.
# Le specifiche che descrivono la semantica da assegnare alla marcatura. Queste specifiche impongono anche restrizioni sintattiche che non possono essere espresse all'interno della DTD.
# Istanze di documenti contenenti dati (contenuto) e marcatura. Ciascuna istanza contiene un riferimento alla DTD da utilizzare per la sua interpretazione.
Le Specifiche HTML 4.0 includono una dichiarazione SGML, tre definizioni del tipo di documento (si veda la sezione relativa alle informazioni sulla versione di HTML per una loro descrizione), e un elenco di referenze al carattere.
 
==== 2 Costrutti SGML usati in HTML ====
Le seguenti sezioni introducono costrutti SGML che sono usati in HTML.
 
L'appendice elenca alcune caratteristiche SGML che non sono ampiamente supportate da strumenti e interpreti HTML e che dovrebbero essere evitate.
 
'''2.1 Elementi'''<br>
Una definizione del tipo di documento SGML dichiara i ''tipi di elementi'' che rappresentano strutture o comportamenti desiderati. HTML include tipi di elementi che rappresentano paragrafi, collegamenti ipertestuali, elenchi, tabelle, immagini, ecc.
 
Ciascuna '''dichiarazione del tipo di elemento''' presenta generalmente tre parti: un tag di inizio, il contenuto, e un tag di fine.
 
Il nome dell'elemento appare nel ''tag di inizio'' (scritto <tt><nome-elemento></tt>) e nel ''tag di fine'' (scritto <tt></nome-elemento></tt>); si noti il carattere barra ("/") prima del nome dell'elemento nel tag di fine. Per esempio, i tag di inizio e di fine del tipo di elemento <tt>UL</tt> delimitano le voci di un elenco:
<tt><nowiki><UL></nowiki>
<nowiki><LI><P></nowiki>...voce 1 dell'elenco...
<nowiki><LI><P></nowiki>...voce 2 dell'elenco...
<nowiki></UL></nowiki></tt>
 
Alcuni tipi di elementi HTML permettono agli autori di omettere i tag di fine (ad es., i tipi di elementi <tt>P</tt> e <tt>LI</tt>). Un numero ridotto di tipi di elementi permette anche di omettere i tag di inizio; per esempio, <tt>HEAD</tt> e <tt>BODY</tt>. La DTD HTML indica per ciscun tipo di elemento se il tag di inizio ed il tag di fine sono obbligatori.
 
Alcuni tipi di elementi HTML non hanno contenuto. Per esempio, l'elemento interruzione di riga <tt>BR</tt> non ha contenuto; il suo unico compito è quello di terminare una riga di testo. Tali elementi ''vuoti'' non hanno mai tag di fine. La definizione del tipo di documento e il testo delle Specifiche indicano se un tipo di elemento è vuoto (non ha contenuto) o, nel caso possa avere contenuto, quale contenuto è considerato legale.
 
I nomi di elemento sono sempre insensibili alla forma maiuscola/minuscola delle lettere che li specificano.
 
Si consulti lo standard SGML per informazioni sulle regole che governano gli elementi (ad es., gli elementi devono essere annidati appropriatamente, un tag di fine chiude, a ritroso fino al tag di inizio corrispondente, tutti i tag di inizio interposti non chiusi con tag di fine omessi, ecc.).
 
Per esempio, il seguente paragrafo:
 
<tt><nowiki><P>Questo è il primo paragrafo.</P></nowiki></tt>
''...un elemento a livello del blocco...''
 
può essere riscritto senza il suo tag di fine:
 
<tt><nowiki><P>Questo è il primo paragrafo.</nowiki></tt>
''...un elemento a livello del blocco...''
 
poichè il tag di inizio <tt><nowiki><P></nowiki></tt> è chiuso dal successivo elemento a livello del blocco. Similmente, se un paragrafo è racchiuso da un elemento a livello del blocco, come in:
 
<tt><nowiki><DIV></nowiki>
<nowiki><P></nowiki>Questo è il paragrafo.
<nowiki></DIV></nowiki></tt>
 
il tag di fine dell'elemento a livello del blocco che lo racchiude sottintende il tag di fine del tag di inizio <tt><nowiki><P></nowiki></tt> aperto.
 
:'''''Gli elementi non sono tag.''' Alcune persone si riferiscono agli elementi come a tag (ad es., "il tag P"). Si ricordi che l'elemento è una cosa, e il tag (che sia di inizio o di fine) un'altra. Per esempio, l'elemento <tt>HEAD</tt> è sempre presente, anche se i tag <tt>HEAD</tt> di inizio e di fine possono entrambi mancare nella marcatura.''
 
Tutti i tipi di elementi dichiarati in queste Specifiche sono elencati nell'indice degli elementi .
 
'''2.2 Attributi'''<br>
Gli elementi possono avere proprietà associate, chiamate ''attributi'', che possono avere valori (predefiniti, oppure impostati da autori o script). Le coppie attributo/valore appaiono prima del ">" finale del tag di inizio di un elemento. Può apparire un qualunque numero di coppie (legali) attributo valore, separate da spazi, nel tag di inizio di un elemento. Le coppie possono apparire in un ordine qualsiasi.
 
In questo esempio, l'attributo <tt>id</tt> è impostato per un elemento <tt>H1</tt>:
 
<tt><nowiki><H1 id="sezione 1"></nowiki>
Questa è una intitolazione identificabile
grazie all'attributo id
<nowiki></H1></nowiki></tt>
 
Per predefinizione, SGML richiede che tutti i valori di attributo siano delimitati usando o doppi apici (ASCII decimale 34) o apici semplici (ASCII decimale 39). Gli apici semplici possono essere inclusi dentro il valore di attributo quando il valore è delimitato da doppi apici, e viceversa. Gli autori possono usare anche referenze al carattere numeriche per rappresentare doppi apici (<tt>&#</tt><nowiki>34;</nowiki>) e apici semplici (<tt>&#</tt><nowiki>39;</nowiki>). Per i doppi apici gli autori possono usare anche la referenza di entità carattere <tt>&qu</tt><nowiki>ot;</nowiki>.
 
In certi casi, gli autori possono specificare il valore di un attributo senza utilizzare alcun apice. Il valore dell'attributo può contenere solo lettere (a-z e A-Z), cifre (0-9), trattini (ASCII decimale 45), e punti (ASCII decimale 46). Si raccomanda di utilizzare gli apici anche quando è possibile eliminarli.
 
I nomi di attributo sono sempre insensibili alla forma maiuscola/minuscola delle lettere che li specificano.
 
I valori degli attributi sono generalmente insensibili alla forma maiuscola/minuscola delle lettere che li specificano. La definizione di ogni attributo nel manuale di riferimento indica se il valore è insensibile alla forma maiuscola/minuscola delle lettere.
 
Tutti gli attributi definiti da queste Specifiche sono elencati nell'indice degli attributi.
 
'''2.3 Referenze al carattere'''<br>
Le ''referenze al carattere'' sono nomi numerici o simbolici per i caratteri che possono essere inclusi in un documento HTML. Sono utili per riferirsi a caratteri raramente usati, o a quelli che risulta difficile o impossibile inserire tramite gli strumenti di creazione. Si vedranno referenze al carattere dal principio alla fine di questo documento; esse cominciano con un segno "&" e terminano con un punto e virgola (;). Alcuni esempi comuni includono:
* "<tt>&l</tt><tt>t;</tt>" rappresenta il segno <.
* "<tt>&g</tt><tt>t;</tt>" rappresenta il segno >.
* "<tt>&qu</tt><tt>ot;</tt>" rappresenta l'interpunzione ".
* "<tt>&#2</tt><tt>29;</tt>" (in decimale) rappresenta la lettera "a" con un piccolo cerchio sopra.
* "<tt>&#10</tt><tt>48;</tt>" (in decimale) rappresenta la lettera maiuscola cirillica "I".
* "<tt>&#x</tt><tt>6C34;</tt>" (in esadecimale) rappresenta il carattere cinese che indica l'acqua.
Si discuteranno le referenze al carattere HTML in dettaglio più avanti nella sezione sull'insieme di caratteri del documento HTML . Le Specifiche contengono anche un'elenco di referenze ai caratteri che possono apparire nei documenti HTML 4.0.
 
'''2.4 Commenti'''<br>
I commenti HTML hanno la seguente sintassi:
<tt><!-- questo è un commento -->
<!-- anche questo è un commento,
che occupa più di una riga --></tt>
 
Lo spazio bianco non è permesso tra il delimitatore di apertura della dichiarazione di marcatura ("<!") e il delimitatore di apertura del commento ("--"), ma è permesso tra il delimitatore di chiusura del commento ("--") e il delimitatore di chiusura della dichiarazione di marcatura (">"). Un errore comune è l'inclusione di una stringa di trattini ("---") dentro un commento. Gli autori dovrebbero evitare di porre due o più trattini adiacenti nei commenti.
 
L'informazione che appare in mezzo ai commenti non ha significato speciale (ad es., le referenze al carattere non sono interpretate come tali).
 
==== 3 Come leggere la DTD HTML ====
Ciascuna dichiarazione di elemento e di attributo in queste Specifiche è accompagnata dal suo frammento di definizione del tipo di documento. Si è scelto di includere i frammenti DTD nelle Specifiche piuttosto che ricorrere a un mezzo più facile, ma più lungo e meno preciso, per descrivere le proprietà di un elemento. La seguente guida dovrebbe permettere ai lettori non familiari con SGML di leggere la DTD e comprendere i dettagli tecnici delle Specifiche HTML.
 
'''3.1 Commenti nella DTD'''<br>
Nelle DTD, i commenti possono estendersi su una o più righe. Nella DTD, i commenti sono delimitati da una coppia di interpunzioni "--", ad es.
 
<tt><!ELEMENT PARAM - O EMPTY -- valore di proprietà
con nome assegnato --></tt>
 
Qui, il commento "valore di proprietà con nome assegnato" spiega l'uso del tipo di elemento <tt>PARAM</tt>. I commenti nella DTD sono solo informativi.
 
 
'''3.2 Definizioni delle entità parametro'''<br>
La DTD HTML incomincia con una serie di definizioni di entità parametro. Una ''definizione di entità parametro'' definisce un tipo di macro che può essere richiamata ed espansa altrove nella DTD. Queste macro non possono apparire nei documenti HTML, solo nella DTD. Altri tipi di macro, chiamate referenze al carattere, possono essere usate nel testo di un documento HTML o dentro i valori di attributo.
 
Quando l'entità parametro viene riferita per nome nella DTD, essa viene espansa in una stringa.
 
Una definizione di entità parametro inizia con la parola chiave <tt><!ENTITY %</tt> seguita dal nome dell'entità, la stringa tra apici in cui l'entità si espande, e infine un > di chiusura. Le instanze di entità parametro in una DTD iniziano con "%", proseguono con il nome dell'entità parametro, e terminano con un ";" opzionale.
 
L'esempio seguente definisce la stringa in cui l'entità "<tt>%fontstyle;</tt>" si espanderà.
 
<tt><!ENTITY % fontstyle "TT | I | B | BIG | SMALL"></tt>
 
La stringa in cui l'entità parametro si espande può contenere altri nomi di entità parametro. Questi nomi sono espansi ricorsivamente. Nell'esempio seguente si definisce l'entità parametro"<tt>%inline;</tt>" per raggruppare le entità parametro "<tt>%fontstyle;</tt>", "<tt>%phrase;</tt>", "<tt>%special;</tt>" e "<tt>%formctrl;</tt>".
 
<tt><!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;"></tt>
 
Si incontreranno frequentemente due entità DTD nella DTD HTML: "<tt>%block;</tt>" "<tt>%inline;</tt>". Esse sono usate quando il modello di contenuto include rispettivamente elementi a livello del blocco e elementi in linea (definiti nella sezione sulla struttura globale di un documento HTML).
 
'''3.3 Dichiarazioni degli elementi'''<br>
La maggior parte della DTD HTML è composta dalle dichiarazioni dei ''tipi di elementi'' e dei loro attributi. La parola chiave <tt><!ELEMENT</tt> inizia una dichiarazione e il carattere > la termina. In mezzo a questi vengono specificati:
#Il nome dell'elemento.
#Se i tag dell'elemento sono opzionali. Due trattini che appaiono dopo il nome dell'elemento significano che i tag di inizio e di fine sono obbligatori. Un trattino seguito dalla lettera "O" indica che il tag di fine può essere omesso. Una coppia di lettere "O" indica che entrambi i tag di inizio e di fine possono essere omessi.
#Il contenuto dell'elemento, se presente. Il contenuto ammissibile di un elemento è chiamato ''modello di contenuto''. I tipi di elementi che sono destinati a non avere contenuto sono chiamati ''elementi vuoti''. Il modello di contenuto per tali tipi di elementi è dichiarato usando la parola chiave "<tt>EMPTY</tt>".
In questo esempio:
 
<tt><!ELEMENT UL - - (LI)+></tt>
 
* Il tipo di elemento dichiarato è <tt>'''UL'''</tt>.
* I due trattini indicano che sia il tag di inizio <tt><U</tt><tt>L></tt> che il tag di fine <tt></U</tt><tt>L></tt> sono obbligatori per questo tipo di elemento.
* Il modello di contenuto per questo tipo di elemento è dichiarato essere "almeno un elemento <tt>LI</tt>". Sotto viene spiegato come specificare i modelli di contenuto.
Questo esempio illustra la dichiarazione di un tipo di elemento vuoto:
 
<tt><!ELEMENT IMG - O EMPTY></tt>
 
* Il tipo di elemento dichiarato è <tt>'''IMG'''</tt>.
* Il trattino ed il successivo carattere "O" indicano che il tag di fine può essere omesso, ma assieme con il modello di contenuto "<tt>EMPTY</tt>", questo si rafforza nella regola che il tag di fine deve essere omesso.
* La parola chiave "<tt>EMPTY</tt>" significa che le istanze di questo tipo non devono avere contenuto.
 
'''Definizioni dei modelli di contenuto''' <br>
Il modello di contenuto descrive che cosa può essere contenuto da una istanza di un tipo di elemento. Le definizioni di modello di contenuto possono includere:
* I nomi dei tipi di elementi permessi o proibiti (ad es., l'elemento <tt>UL</tt> contiene istanze del tipo di elemento <tt>LI</tt>, e il tipo di elemento <tt>P</tt> non può contenere altri elementi <tt>P</tt>).
* Entità DTD (ad es., l'elemento <tt>LABEL</tt> contiene istanze dell'entità parametro "<tt>%inline;</tt>").
* Testo del documento (indicato dal costrutto SGML "<tt>#PCDATA</tt>"). Il testo può contenere referenze al carattere. Si ricordi che queste iniziano con & e terminano con un punto e virgola (ad es., "Le avventure di Tintin di Herg<tt>&ea</tt><tt>cute;</tt>" contiene la referenza di entità carattere per il carattere "e acute" (ovverosia, "e" con accento acuto)).
Il modello di contenuto di un elemento è specificato tramite la seguente sintassi:
 
'''(...)'''
:Delimita un gruppo.
'''A | B '''
:Sono presenti o A o B, ma non entrambi.
'''A , B '''
:Sono presenti A e B, in questo ordine.
'''A & B '''
:Sono presenti A e B, in un ordine qualsiasi.
'''A? '''
:A è presente zero o una volta.
'''A* '''
:A è presente zero o più volte.
'''A+ '''
:A è presente una o più volte.
 
Ecco alcuni esempi dalla DTD HTML:
 
<tt><!ELEMENT UL - - (LI)+></tt>
 
L'elemento <tt>UL</tt> deve contenere uno o più elementi <tt>LI</tt>.
 
<tt><!ELEMENT DL - - (DT|DD)+></tt>
 
L'elemento <tt>DL</tt> deve contenere uno o più elementi <tt>DT</tt> o <tt>DD</tt> in un ordine qualsiasi.
 
<tt><!ELEMENT OPTION - O (#PCDATA)></tt>
 
L'elemento <tt>OPTION</tt> può contenere solo testo ed entità, quali <tt>&am</tt><tt>p;</tt> -- questo è indicato dal tipo di dato SGML <tt>#PCDA</tt><tt>TA</tt>.
 
Qualche tipo di elemento HTML usa una caratteristica addizionale di SGML per escludere elementi dal proprio modello di contenuto. Gli elementi esclusi sono preceduti da un trattino. Le esclusioni esplicite prevalgono sugli elementi permessi.
 
In questo esempio, <tt>-(A)</tt> significa che l'elemento <tt>A</tt> non può apparire in un altro elemento <tt>A</tt> (ovverosia, le ancore non possono essere annidate).
 
<tt><!ELEMENT A - - (%inline;)* -(A)></tt>
 
Si noti che il tipo di elemento <tt>A</tt> è parte dell'entità parametro DTD "<tt>%inline;</tt>", ma è esplicitamente escluso a causa della presenza di <tt>-(A)</tt>.
 
Analogamente, la seguente dichiarazione del tipo di elemento <tt>FORM</tt> proibisce forme annidate:
 
<tt><!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM)></tt>
 
'''3.4 Dichiarazioni degli attributi'''<br>
La parola chiave <tt><!ATTLIST</tt> inizia la dichiarazione degli attributi che un elemento può avere. È seguita dal nome dell'elemento in questione, una lista di definizioni di attributo, e un > di chiusura. Ciascuna definizione di attributo è una tripla che definisce:
* Il nome di un attributo.
* Il tipo di valore dell'attributo o un insieme esplicito di valori possibili. I valori definiti esplicitamente dalla DTD sono insensibili alla forma maiuscola/minuscola delle lettere che li specificano. Si rimanda alla sezione sui tipi di dati elementari in HTML per maggiori informazioni sui tipi di valori degli attributi.
* Se il valore predefinito dell'attributo è implicito (parola chiave "<tt>#IMPLIED</tt>"), nel qual caso il valore predefinito deve essere fornito dall'interprete HTML (in alcuni casi attraverso eredità da elementi predecessori); sempre richiesto (parola chiave "<tt>#REQUIRED</tt>"); o fissato al valore dato (parola chiave "<tt>#FIXED</tt>"). Alcune definizioni di attributo specificano esplicitamente un valore predefinito per l'attributo.
In questo esempio viene definito l'attributo nome per l'elemento <tt>MAP</tt>. L'attributo è opzionale per questo elemento.
 
<tt><!ATTLIST MAP
name CDATA #IMPLIED
></tt>
 
Il tipo di valori permessi per l'attributo è specificato come <tt>CDATA</tt>, un tipo di dato SGML. <tt>CDATA</tt> è testo che può contenere referenze ai caratteri.
 
Per maggiori informazioni su "<tt>CDATA</tt>", "<tt>NAME</tt>", "<tt>ID</tt>", e altri tipi di dati, si consulti la sezione sui tipi di dati HTML.
 
Gli esempi seguenti illustrano diverse definizioni di attibuto:
 
<tt>rowspan NUMBER 1 -- numero di righe occupate da una cella --
http-equiv NAME #IMPLIED -- nome dell'intestazione HTTP di risposta --
id ID #IMPLIED -- identificatore unico nell'ambito del documento --
valign (top|middle|bottom|baseline) #IMPLIED</tt>
 
L'attributo <tt>rowspan</tt> richiede valori di tipo <tt>NUMBER</tt>. Il valore predefinito è specificato esplicitamente come "1". L'attributo opzionale <tt>http-equiv</tt> richiede valori di tipo <tt>NAME</tt>. L'attributo opzionale <tt>id</tt> richiede valori di tipo <tt>ID</tt>. Il valore opzionale <tt>valign</tt> è obbligato ad assumere valori nell'insieme <tt>{top, middle, bottom, baseline}</tt>.
 
 
'''Entità DTD nelle definizioni degli attributi '''<br>
Le definizioni di attributo possono contenere anche riferimenti ad entità parametro.
In questo esempio si vede che l'elenco delle definizioni di attributo per l'elemento <tt>LINK</tt> inizia con l'entità parametro "<tt>%attrs;</tt>".
 
<tt><!ELEMENT LINK - O EMPTY -- collegamento indipendente dai media -->
<!ATTLIST LINK
%attrs; -- entità %coreattrs, %i18n, %events --
charset %Charset; #IMPLIED -- codifica dei caratteri della risorsa collegata --
href %URI; #IMPLIED -- URI della risorsa collegata --
hreflang <nowiki>%LanguageCode;</nowiki> #IMPLIED -- codice di lingua --
type <nowiki>%ContentType;</nowiki> #IMPLIED -- tipo di contenuto con funzione guida --
rel <nowiki>%LinkTypes;</nowiki> #IMPLIED -- tipi di collegamento diretti --
rev <nowiki>%LinkTypes;</nowiki> #IMPLIED -- tipi di collegamenti inversi --
media <nowiki>%MediaDesc;</nowiki> #IMPLIED -- per la riproduzione su questi media --
></tt>
 
''Tag di inizio: '''obbligatorio''', Tag di fine: '''proibito'''''
 
L'entità parametro "<tt>%attrs;</tt>" è definita come segue:
 
<tt><!ENTITY % attrs "%coreattrs; %i18n; %events;"></tt>
 
L'entità parametro "<tt>%coreattrs;</tt>" nella definizione "<tt>%attrs;</tt>" si espande come segue:
 
<tt><!ENTITY % coreattrs
"id ID #IMPLIED -- identificatore unico nell'ambito del documento --
class CDATA #IMPLIED -- elenco di classi separate da spazi --
style <nowiki>%StyleSheet;</nowiki> #IMPLIED -- informazioni di stile associate --
title %Text; #IMPLIED -- titolo/espansione con funzione guida --"
></tt>
 
L'entità parametro "<tt>%attrs;</tt>" è stata definita per convenienza poichè questi attributi sono definiti per la maggior parte dei tipi di elementi HTML.
 
Analogamente, la DTD definisce l'entità parametro "<tt>%URI;</tt>" come entità che si espande nella stringa "<tt>CDATA</tt>".
 
<tt><!ENTITY % URI "CDATA"
-- un Identificatore Uniforme di Risorsa,
si veda [URI]
--></tt>
 
Come questo esempio illustra, l'entità parametro "<tt>%URI;</tt>" fornisce ai lettori della DTD maggiori informazioni circa il tipo di dato aspettato per un attributo. Entità analoghe sono state definite per "<tt>%Color;</tt>", "<tt>%Charset;</tt>", "<tt>%Length;</tt>", "<tt>%Pixels;</tt>", ecc.
 
'''Attributi booleani '''<br>
Alcuni attributi giocano il ruolo di variabili booleane (ad es., l'attributo <tt>selected</tt> per l'elemento <tt>OPTION</tt>). La loro apparizione nel tag di inizio di un elemento implica che il valore dell'attributo è "vero". La loro assenza implica un valore pari a "falso".
 
Gli attributi booleani possono prendere legalmente un unico valore: il nome dell'attributo stesso (ad es., <tt>selected="selected"</tt>).
 
Questo esempio definisce l'attributo <tt>selected</tt> come un attributo booleano.
 
<tt>selected (selected) #IMPLIED -- spaziatura ridotta tra le voci --</tt>
 
:''(n.d.t.: il commento "spaziatura ridotta tra le voci" è errato: è relativo all'attributo booleano "compact") ''
L'attributo è impostato a "vero" dato che appare nel tag di inizio dell'elemento:
 
<tt><OPTION selected="selected">
''...contenuto...''
</OPTION></tt>
 
 
In HTML, gli attributi booleani possono apparire in forma ''minimizzata'' -- il '''valore''' dell'attributo appare da solo nel tag di inizio dell'elemento. Quindi, <tt>selected</tt> può essere impostato scrivendo:
 
<tt><OPTION selected></tt>
 
invece di:
 
<tt><OPTION selected="selected"></tt>
 
Gli autori dovrebbero essere consapevoli che molti interpreti HTML riconoscono '''solo''' la forma minimizzata degli attributi booleani e non la forma completa.
----
=== <center>Conformità: requisiti e raccomandazioni</center> ===
In questa sezione si comincia la descrizione particolareggiata di HTML 4.0, a partire dalle convenzioni tra autori, documenti, utenti, ed interpreti HTML.
 
Le parole chiave "DEVE", "NON DEVE", "OBBLIGATORIO", "DOVRÀ", "NON DOVRÀ", "DOVREBBE", "NON DOVREBBE", "RACCOMANDATO", "POTREBBE", e "OPZIONALE" in questo documento sono da interpretarsi come descritto in [http://ds.internic.net/rfc/rfc2119.txt RFC2119]. Tuttavia, per ragioni di leggibilità, queste parole non appariranno in caratteri tutti maiuscoli in queste Specifiche.
 
Talvolta gli autori di queste Specifiche raccomandano procedure suggerite per gli autori e gli interpreti HTML. Queste raccomandazioni non sono normative, e la conformità a queste Specifiche non dipende dalla loro attuazione. Queste raccomandazioni contengono le espressioni "Si raccomanda...", "Queste Specifiche raccomandano...", ed altre diciture simili.
 
==== 1 Definizioni ====
'''''Documento HTML '''''
:Un documento HTML è un documento SGML che soddisfa i requisiti di queste Specifiche.
'''''Autore'''''
:Un autore è una persona o un programma che scrive o genera documenti HTML. Uno ''strumento di creazione'' è un caso speciale di autore, ossia, è un programma che genera HTML. Si raccomanda agli autori di scrivere documenti conformi alla DTD rigorosa piuttosto che alle altre DTD definite da queste Specifiche. Si veda la sezione relativa alle informazioni sulla versione per dettagli sulle DTD definite dall'HTML 4.0.
'''''Utente'''''
:Un utente è una persona che interagisce con un interprete HTML per vedere, ascoltare, o comunque utilizzare un documento HTML riprodotto.
'''''Interprete HTML'''''
:Un interprete HTML è un qualunque dispositivo che interpreta documenti HTML. Gli interpreti HTML includono interpreti visuali (in formato solo testo e in formato grafico), interpreti non visuali (audio, Braille), robot di ricerca, server proxy, ecc.
:Un '''''interprete conforme''''' per l'HTML 4.0 è un interprete HTML che osserva le condizioni obbligatorie ("deve") dichiarate in queste Specifiche, inclusi i seguenti punti:
* Un interprete HTML dovrebbe evitare di imporre limiti di lunghezza arbitrari sui letterali dei valori di attributo (si veda la sezione sulle capacità nella dichiarazione SGML). Per informazioni introduttive sugli attributi SGML si consulti la sezione sulle definizioni degli attributi.
* Un interprete HTML deve garantire che la riproduzione del documento non è modificata dalla presenza o dall'assenza dei tag di inizio e dei tag di fine quando la DTD HTML indica che questi sono opzionali. Si veda la sezione sulle definizioni degli elementi per informazioni introduttive sugli elementi SGML.
* Per ragioni di compatibilità con le versioni precedenti, si raccomanda che gli strumenti che interpretano HTML 4.0 continuino a supportare HTML 3.2 (si veda [http://www.w3.org/TR/REC-html32 HTML32]) e HTML 2.0 (si veda [http://ds.internic.net/rfc/rfc1866.txt RFC1866]).
'''''Condizioni di errore'''''
:Queste Specifiche non definiscono come gli interpreti HTML conformi gestiscono condizioni generali di errore, incluso come gli interpreti HTML si comportano quando incontrano elementi, attributi, valore di attributi, o entità non specificati in questo documento. Tuttavia, per un comportamento di gestione degli errori raccomandato, si consultino le note sui documenti non validi.
'''''Disapprovato'''''
:Un elemento o attributo disapprovato è un elemento o attributo che è stato sorpassato da costrutti più nuovi. Gli elementi disapprovati sono definiti nel manuale di riferimento nelle posizioni appropriate, ma sono segnalati come disapprovati. Gli elementi disapprovati potranno diventare obsoleti in versioni future dell'HTML. Per ragioni di compatibilità con le versioni precedenti, gli interpreti HTML dovrebbero continuare a supportare gli elementi disapprovati. Le definizioni degli elementi e degli attributi indicano chiaramente quali sono disapprovati. Queste Specifiche includono esempi che illustrano come evitare l'uso di elementi disapprovati. Nella maggior parte dei casi questi dipendono dal supporto degli interpreti HTML per i fogli di stile. In generale, gli autori dovrebbero usare fogli di stile per raggiungere effetti stilistici e di formattazione piuttosto che usare gli attributi HTML di presentazione. Gli attributi HTML di presentazione sono stati disapprovati qualora esistano fogli di stile (si veda, ad esempio, [http://www.w3.org/TR/REC-CSS1-961217 CSS1]).
'''''Obsoleto'''''
:Un attributo o elemento obsoleto è un attributo o elemento per cui non c'è garanzia di supporto da parte di un interprete HTML. Gli elementi obsoleti non sono più definiti nelle Specifiche, anche se sono elencati per ragioni storiche nella sezione sulle modifiche del manuale di riferimento.
 
==== 2 SGML ====
L'HTML 4.0 è un'applicazione SGML conforme allo Standard Internazionale ISO 8879 -- ''Standard Generalized Markup Language'' SGML (definito in [http://www.iso.ch/cate/d16387.html ISO8879]).
 
Gli esempi nel testo sono conformi alla definizione del tipo di documento rigorosa a meno che l'esempio in questione si riferisca ad elementi o attributi definiti solo dalla definizione del tipo di documento transitoria o dalla definizione del tipo di documento organizzata a frame. Per ragioni di brevità, la maggior parte degli esempi in queste Specifiche non cominciano con la dichiarazione del tipo di documento che è obbligatoria all'inizio di ciascun documento HTML.
 
I frammenti di DTD nella definizione degli elementi sono tratti dalla definizione del tipo di documento rigorosa tranne che per gli elementi che si riferiscono ai frame.
 
Si rimanda alla sezione relativa alle informazioni sulla versione di HTML per dettagli su quando usare la DTD rigorosa, transitoria o organizzata a frame.
 
I commenti che compaiono nella DTD HTML 4.0 non hanno valore normativo; sono solo informativi.
 
Gli interpreti HTML non devono riprodurre le istruzioni di elaborazione SGML (ad esempio, <tt><?full volume></tt>) o i commenti SGML. Per maggiori informazioni su questa ed altre caratteristiche SGML che possono essere legali in HTML ma non sono ampiamente supportate dagli interpreti HTML, si consulti la sezione sulle caratteristiche SGML con supporto limitato.
 
==== 3 Il tipo di contenuto text/html ====
I documenti HTML sono trasmessi su Internet come una sequenza di byte accompagnati da informazioni sulla codifica (descritte nella sezione sulle codifiche dei caratteri). Il costrutto della trasmissione, detto entità messaggio, è definito in [http://ds.internic.net/rfc/rfc2045.txt RFC2045]) e in [http://ds.internic.net/rfc/rfc2068.txt RFC2068]. Un'entità messaggio con un tipo di contenuto uguale a "text/html" rappresenta un documento HTML.
 
Il tipo di contenuto dei documenti HTML è definito come segue:
 
''Nome del tipo di contenuto: ''
:<tt>text </tt>
''Nome del sottotipo di contenuto: ''
:<tt>html </tt>
''Parametri obbligatori: ''
:nessuno
''Parametri opzionali: ''
:<tt>charset </tt>
''Considerazioni sulla codifica: ''
:è permessa qualunque codifica
''Considerazioni sulla sicurezza: ''
:Si vedano le note sulla sicurezza
Il parametro opzionale "<tt>charset</tt>" si riferisce alla codifica dei caratteri usata per rappresentare un documento HTML come una sequenza di byte. I valori legali per questo parametro sono definiti nella sezione sulla codifica dei caratteri. Sebbene questo parametro sia opzionale, si raccomanda che esso sia sempre presente.
----
=== <center>Rappresentazione dei documenti HTML</center> ===
In questo capitolo esaminiamo come i documenti HTML sono rappresentati in un computer e su Internet.
 
La sezione sull'insieme di caratteri del documento si occupa di quali ''caratteri'' astratti possono far parte di un documento HTML. I caratteri includono la lettera latina "A", la lettera cirillica "I", il carattere cinese che significa "acqua", ecc.
 
La sezione sulle codifiche dei caratteri si occupa di come quei caratteri possono essere ''rappresentati'' in un ''file'' o quando vengono trasmessi su Internet. Siccome alcune codifiche dei caratteri non possono rappresentare direttamente tutti i caratteri che un autore può voler includere in un documento, HTML offre altri meccanismi, chiamati referenze al carattere, per riferirsi a qualsiasi carattere.
 
Dato che ci sono un gran numero di caratteri appartenenti ai linguaggi umani, ed una gran varietà di modi di rappresentarli, si deve porre particolare attenzione affinché i documenti possano essere compresi da interpreti HTML in tutte le parti del mondo.
 
==== 1 L'insieme di caratteri del documento ====<br>
Per promuovere l'interoperabilità, SGML richiede che ogni applicazione (HTML incluso) specifichi il proprio ''insieme di caratteri del documento''. Un insieme di caratteri del documento è composto da:
* ''Un Repertorio'': un insieme di caratteri astratti, quali la lettera latina "A", la lettera cirillica "I", il carattere cinese che significa "acqua", ecc.
* ''Posizioni di codifica'': un insieme di riferimenti interi ai caratteri nel repertorio.
Ciascun documento SGML (incluso ogni documento HTML) è una sequenza di caratteri dal repertorio. I sistemi di computer identificano ciascun carattere con la sua posizione di codifica; per esempio, nell'insieme di caratteri ASCII, le posizioni di codifica 65, 66, e 67 si riferiscono rispettivamente ai caratteri 'A', 'B' e 'C'.
 
L'insieme dei caratteri ASCII non è sufficiente per un sistema informativo globale quale il Web, perciò HTML usa l'insieme di caratteri molto più completo chiamato ''Universal Character Set (UCS)'', definito in [ISO10646]. Questo standard definisce un repertorio di migliaia di caratteri usati da comunità da tutte le parti del mondo.
 
L'insieme di caratteri definito in ISO10646 è equivalente carattere per carattere all'Unicode 2.0 ([http://www.unicode.org/ UNICODE]). Entrambi questi standard sono aggiornati di tanto in tanto con nuovi caratteri, e si dovrebbero consultare gli emendamenti sui rispettivi siti Web. Nelle Specifiche correnti, i riferimenti all'ISO/IEC-10646 o all'Unicode indicano lo stesso insieme di caratteri del documento. Tuttavia, le Specifiche HTML si riferiscono alle Specifiche Unicode anche per altre questioni, quali l'algoritmo per testo bidirezionale.
 
L'insieme di caratteri del documento, comunque, non è sufficiente per permettere agli interpreti HTML una corretta interpretazione dei documenti così come sono tipicamente scambiati -- codificati come una sequenza di byte in un ''file'' o nel corso di una trasmissione via rete. Gli interpreti HTML devono conoscere anche la particolare codifica dei caratteri che è stata usata per trasformare la sequenza di caratteri del documento in una sequenza di byte.
 
==== 2 Codifiche dei caratteri ==== <br>
Ciò che queste Specifiche chiamano ''codifica dei caratteri'' è noto con nomi differenti in altre specifiche (il che può creare confusione). Tuttavia il concetto è in larga misura lo stesso da un capo all'altro di Internet. Inoltre le intestazioni di protocollo, gli attributi ed i parametri che si riferiscono alle codifiche dei caratteri condividono lo stesso nome -- "charset" -- e usano gli stessi valori dal registro [http://ds.internic.net/rfc/rfc1700.txt IANA] (si veda [ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets CHARSETS] per un elenco completo).
 
Il parametro "charset" identifica una codifica dei caratteri, che è un metodo per convertire una sequenza di byte in una sequenza di caratteri. Questa conversione corrisponde in modo naturale allo schema di attività del Web: i server inviano i documenti HTML agli interpreti HTML come un flusso di byte; gli interpreti HTML li interpretano come una sequenza di caratteri. Il metodo di conversione può variare da semplice corrispondenza uno-a-uno a schemi di sostituzione complessi o algoritmi.
 
Una semplice tecnica di codifica un-byte-per-carattere non è sufficiente per stringhe di testo basate su un repertorio di caratteri ampio quanto ISO10646. Vi sono molte codifiche differenti di parti di ISO10646 in aggiunta a codifiche dell'intero insieme di caratteri (quali l'UCS-4).
 
==== 2.1 Scegliere una codifica ====
Gli strumenti di creazione (ad es., gli editori di testo) possono codificare i documenti HTML in una codifica dei caratteri di loro scelta, e questa scelta dipende largamente dalle convenzioni usate dal software di sistema. Questi strumenti possono usare una qualsiasi conveniente codifica che includa la maggior parte dei caratteri contenuti nel documento, a patto che la codifica sia specificata correttamente. Quei caratteri occasionali che non rientrano nella codifica possono ugualmente essere rappresentati per mezzo delle referenze al carattere. Queste si riferiscono sempre all'insieme di caratteri del documento, e non alla codifica dei caratteri.
 
I server e i proxy server possono cambiare una codifica dei caratteri (ciò viene detto ''transcodifica'') sull'istante per soddisfare le richieste degli interpreti HTML (si veda la sezione 14.2 di [http://ds.internic.net/rfc/rfc2068.txt RFC2068], intestazione HTTP di richiesta "Accept-Charset"). I server e i proxy server non sono tenuti a servire un documento in una codifica dei caratteri che ricopra l'intero insieme di caratteri del documento.
 
Codifiche dei caratteri comunemente usate sul Web includono l'ISO-8859-1 (conosciuto anche come "Latin-1"; utilizzabile per la maggior parte delle lingue europee occidentali), l'ISO-8859-5 (che supporta il Cirillico), lo SHIFT_JIS (una codifica giapponese), l'EUC-JP (un'altra codifica giapponese), e l'UTF-8 (una codifica dell'ISO 10646 che usa un numero di byte differente per caratteri differenti). I nomi delle codifiche dei caratteri sono insensibili alla forma maiuscola/minuscola delle lettere che li specificano, così che, per esempio, "SHIFT_JIS", "Shift_JIS", e "shift_jis" sono equivalenti.
 
Queste Specifiche non regolano quali codifiche dei caratteri un interprete HTML debba supportare.
 
Gli interpreti HTML conformi devono mappare correttamente in Unicode tutti i caratteri in tutte le codifica dei caratteri che essi riconoscono (o devono comportarsi come se lo avessero fatto).
 
'''Note su particolari codifiche ''' <br>
Quando si trasmette testo HTML in UTF-16 (charset=UTF-16), i dati del testo dovrebbero essere trasmessi secondo l'ordine di byte di rete ("big-endian", il byte di ordine maggiore per primo) in conformità con [ISO10646], sezione 6.3 e [UNICODE], clausola C3, pagina 3-1.
 
Inoltre, per massimizzare le possibilità di una corretta interpretazione, si raccomanda che i documenti trasmessi come UTF-16 inizino sempre con un carattere ZERO-WIDTH NON-BREAKING SPACE (valore esadecimale FEFF, detto anche Byte Order Mark (BOM)) che, rovesciando l'ordine dei byte, diventa valore esadecimale FFFE, un carattere che è garantito non essere mai assegnato. In questo modo, un interprete HTML che riceve un esadecimale FFFE come primo byte di un testo riconoscerebbe che i byte debbono essere rovesciati per la parte residua del testo.
 
Il formato di trasformazione UTF-1 dell'ISO10646 (registrato da IANA come ISO-10646-UTF-1), non dovrebbe essere usato. Per informazioni sull'ISO 8859-8 e sull'algoritmo bidirezionale, si consulti la sezione sulla bidirezionalità e codifica dei caratteri.
 
==== 2.2 Specificare la codifica dei caratteri ====
Come fa un server a determinare quale codifica dei caratteri si applica ad un documento da lui servito? Alcuni server esaminano i primi byte del documento, o controllano rispetto ad un database di ''file'' e di codifiche noti. Molti server recenti danno ai gestori del Web più controllo sulla configurazione del parametro charset di quello che fanno i server più vecchi. I gestori del Web dovrebbero usare questi meccanismi per trasmettere un parametro "charset" ogni volta che è possibile, ma dovrebbero fare attenzione a non identificare un documento con il valore del parametro "charset" sbagliato.
 
Come fa un interprete HTML a sapere quale codifica dei caratteri è stata usata? É il server che dovrebbe fornire questa informazione. Il modo più diretto per un server di informare l'interprete HTML sulla codifica dei caratteri del documento è quello di usare il parametro "charset" del campo di intestazione "Content-Type" del protocollo HTTP. ([http://ds.internic.net/rfc/rfc2068.txt RFC2068], sezioni 3.4 e 14.18). Per esempio, la seguente intestazione HTTP annuncia che la codifica dei caratteri è EUC-JP:
 
<tt>Content-Type: text/html; charset=EUC-JP</tt>
 
Si consulti la sezione sulla conformità per la definizione di text/html.
 
Il protocollo HTTP ([http://ds.internic.net/rfc/rfc2068.txt RFC2068], sezione 3.7.1) cita l'ISO-8859-1 come una codifica dei caratteri di default quando il parametro "charset" è assente dal campo di intestazione "Content-Type". In pratica questa raccomandazione si è dimostrata inutile perché alcuni server non consentono l'invio di un parametro "charset" e altri possono non essere configurati per inviare il parametro. Pertanto gli interpreti HTML non devono assumere alcun valore di default per il parametro "charset".
 
Per andare incontro alle limitazioni dei server o delle loro configurazioni, i documenti HTML possono includere informazioni esplicite riguardanti la codifica dei caratteri; l'elemento <tt>META</tt> può essere utilizzato per fornire agli interpreti HTML queste informazioni.
 
Per esempio, per specificare che la codifica dei caratteri del documento corrente è "EUC-JP", un documento dovrebbe includere la seguente dichiarazione <tt>META</tt>:
 
<tt><META http-equiv="Content-Type" content="text/html; charset=EUC-JP"></tt>
 
La dichiarazione <tt>META</tt> deve essere usata unicamente quando la codifica dei caratteri è organizzata in modo tale che i caratteri ASCII rappresentano sé stessi (almeno fino a che l'elemento <tt>META</tt> sia analizzato). Le dichiarazioni <tt>META</tt> dovrebbero apparire prima possibile nell'elemento <tt>HEAD</tt>.
 
Per i casi in cui né il protocollo HTTP né l'elemento <tt>META</tt> forniscano informazioni sulla codifica dei caratteri di un documento, HTML fornisce anche l'attributo charset su numerosi elementi. Combinando questi meccanismi, un autore può aumentare notevolmente la possibilità che, quando l'utente ritrova una risorsa, l'interprete HTML riconosca la codifica dei caratteri.
 
Per riassumere, gli interpreti HTML conformi devono osservare le seguenti priorità nel determinare la codifica dei caratteri di un documento (in ordine descrescente di priorità):
# Un parametro HTTP <tt>charset</tt> in un campo <tt>Content-Type</tt>.
# Una dichiarazione <tt>META</tt> con <tt>http-equiv</tt> impostato a <tt>Content-Type</tt> e un valore assegnato a <tt>charset</tt>.
# L'attributo <tt>charset</tt> impostato in un elemento che indica una risorsa esterna.
In aggiunta a questa lista di priorità, l'inteprete HTML può usare euristiche e impostazioni di utente. Per esempio, molti interpreti HTML usano un'euristica per distinguere le varie codifiche usate per testo giapponese. Inoltre, gli interpreti HTML tipicamente hanno una codifica dei caratteri locale predefinita, impostabile dall'utente, che essi applicano in assenza di altri indicatori.
 
Gli interpreti HTML possono fornire un meccanismo che permette agli utenti di anullare informazioni <tt>charset</tt> incorrette. Tuttavia, se un inteprete HTML fornisce un tale meccanismo, deve offrirlo solo per la navigazione e non per la composizione, per evitare la creazione di pagine Web marcate con un parametro <tt>charset</tt> incorretto.
 
:''Nota. Se, per una specifica applicazione, diventa necessario riferirsi a caratteri al di fuori dell'ISO10646, i caratteri dovrebbero essere assegnati ad una zona privata per evitare conflitti con versioni presenti o future dello standard. Questo, comunque, è altamente scoraggiato, per ragioni di portabilità.''
 
==== 3 Referenze al carattere ====
Una data codifica dei caratteri può non essere in grado di esprimere tutti i caratteri dell'insieme di caratteri del documento. Per tali codifiche, o quando le configurazioni hardware o software non permettono agli utenti di inserire direttamente determinati caratteri, gli autori possono utilizzare le referenze al carattere SGML. Le referenze al carattere sono un meccanismo, indipendente dalla codifica dei caratteri, per immettere qualsiasi carattere dall'insieme di caratteri di un documento.
 
Le referenze al carattere in HTML possono apparire in due forme:
* Referenze al carattere numeriche (decimali oppure esadecimali).
* Referenze al mediante entità carattere.
Le referenze al carattere all'interno dei commenti non hanno alcun significato speciale; sono solo dati di commento.
 
:'''''Nota.''' L'HTML fornisce altri modi di presentare dati di tipo carattere, in particolare le immagini in linea.''
 
:'''''Nota.''' In SGML, è possibile eliminare il ";" finale dopo una referenza al carattere in alcuni casi (ad es., a fine riga, o immediatamente prima di un tag). In altri casi non può essere eliminato (ad es., nel mezzo di una parola). Si raccomanda di usare sempre il ";" per evitare problemi con quegli interpreti HTML che richiedono la presenza di questo carattere. ''
 
''' 3.1 Referenze al carattere numeriche '''<br>
Le ''referenze al carattere numeriche'' specificano la posizione di codifica di un carattere nell'insieme di caratteri del documento. Le referenze al carattere numeriche possono assumere due forme:
* La sintassi <tt>&#</tt><tt>D;</tt>, dove D è un numero decimale, si riferisce al numero di carattere decimale D dell'Unicode.
* La sintassi <tt>&#</tt><tt>xH;</tt> o <tt>&#</tt><tt>XH;</tt>, dove H è un numero esadecimale, si riferisce al numero di carattere esadecimale H dell'Unicode. I numeri esadecimali nelle referenze al carattere sono insensibili alla forma maiuscola/minuscola delle lettere che li specificano.
Ecco alcuni esempi di referenze al carattere numeriche:
* <tt>&#2</tt><tt>29;</tt> (in decimale) rappresenta la lettera "a" con un piccolo cerchio sopra (usata, per esempio, in norvegese).
* <tt>&#x</tt><tt>E5;</tt> (in esadecimale) rappresenta lo stesso carattere.
* <tt>&#X<tt></tt>e5;</tt> (in esadecimale) rappresenta ancora lo stesso carattere.
* <tt>&#1</tt><tt>048;</tt> (in decimale) rappresenta la lettera cirillica maiuscola "I".
* <tt>&#x</tt><tt>6C34;</tt> (in esadecimale) rappresenta il carattere cinese che indica l'acqua.
:'''''Nota.''' Sebbene la rappresentazione esadecimale non sia definita nell'[http://www.iso.ch/cate/d16387.html ISO8879], ci si aspetta che lo sarà nella revisione, come descritto in [http://www.sgmlsource.com/8879rev/n1929.htm WEBSGML]. Questa convenzione è particolarmente utile poiché gli standard relativi ai caratteri generalmente usano la rappresentazione esadecimale. ''
 
'''3.2 Referenze al carattere mediante entità carattere'''<br>
Per dare agli autori un modo più intuitivo per riferirsi ai caratteri dell'insieme di caratteri del documento, l'HTML offre un insieme di ''referenze al carattere mediante entità carattere''. Le referenze al carattere mediante entità carattere usano nomi simbolici così che l'autore non deve ricordare la posizione di codifica. Per esempio, la referenza al carattere mediante l'entità carattere <tt>&ar</tt><tt>ing;</tt> si riferisce al carattere "a" minuscolo sormontato da un anello; <tt>&ar</tt><tt>ing;</tt> è più facile da ricordare di <tt>&#2</tt><tt>29;</tt>.
 
L'HTML 4.0 non definisce una referenza di entità carattere per ogni carattere dell'insieme di caratteri del documento. Per esempio, non c'è una referenza di entità carattere per la lettera cirillica maiuscola "I". Si consulti l'elenco completo delle referenze al carattere mediante entità carattere definite in HTML 4.0.
 
Le referenze al carattere mediante entità carattere sono sensibili alla forma maiuscola/minuscola delle lettere che le specificano. Quindi, <tt>&Ar</tt><tt>ing;</tt> si riferisce a un carattere (A maiuscola con anello) diverso da <tt>&ar</tt><tt>ing;</tt> (a minuscola con anello).
 
Quattro referenze al carattere mediante entità carattere meritano una menzione speciale, dato che sono usate spesso per evitare caratteri speciali:
* <tt>&l</tt><tt>t;</tt> rappresenta il segno <.
* <tt>&g</tt><tt>t;</tt> rappresenta il segno >.
* <tt>&a</tt><tt>mp;</tt> rappresenta il segno &.
* <tt>&qu</tt><tt>ot;</tt> rappresenta il segno di interpunzione ".
Gli autori che desiderano inserire il carattere "<" nel testo dovrebbero usare <tt>&l</tt><tt>t;<tt> (ASCII decimale 60) per evitare possibili confusioni con l'inizio di un tag (delimitatore di apertura del tag di inizio). Analogamente, gli autori dovrebbero usare <tt>&g</tt><tt>t;</tt> (ASCII decimale 62) nel testo invece di ">" per evitare problemi con gli interpreti HTML più vecchi che interpretano erroneamente questo carattere come la fine di un tag (delimitatore di chiusura del tag) quando esso appare tra virgolette nei valori di attributo.
 
Gli autori dovrebbero usare <tt>&a</tt><tt>mp;</tt> (ASCII decimale 38) invece di "&" per evitare confusione con l'inizio di una referenza al carattere mediante entità carattere (delimitatore di apertura di referenze al carattere mediante entità carattere). Gli autori dovrebbero anche usare <tt>&am</tt><tt>p;</tt> nei valori di attributo dato che le referenze al carattere mediante entità carattere sono permesse nei valori di attributo <tt>CDATA</tt>.
 
Alcuni autori usano la referenza al carattere mediante entità carattere <tt>&qu</tt><tt>ot;</tt> per codificare le istanze del segno di interpunzione doppie virgolette (") dato che quel carattere può essere usato per delimitare i valori di attributo.
 
==== 4 Caratteri non visualizzabili ====
Un interprete HTML può non essere in grado di riprodurre tutti i caratteri in un documento in maniera significativa, ad esempio, perché l'interprete HTML manca di un carattere appropriato, un carattere ha un valore che non può essere espresso nella codifica dei caratteri interna dell'interprete HTML, ecc.
 
Poiché vi sono molte cose che possono essere fatte in questi casi, questo documento non prescrive alcun comportamento specifico. A seconda dell'implementazione, i caratteri non visualizzabili possono anche essere gestiti dal sistema di visualizzazione sottostante e non dall'applicazione stessa. In assenza di un comportamento più sofisticato, per esempio ritagliato alle le necessità di un particolare sistema di scrittura o una lingua, si raccomanda il seguente comportamento per gli interpreti HTML:
 
# Adottare un meccanismo chiaramente visibile, ma non fastidioso, per allertare l'utente delle risorse mancanti.
# Se i caratteri mancanti sono presentati usando la loro rappresentazione numerica, usare la forma esadecimale (non quella decimale), dato che questa è la forma usata negli standard degli insiemi di caratteri.
----
----
[[/Talk]] <br>
da sistemare [http://www.liberliber.it/biblioteca/w/world_wide_web_consortium/specifiche_html40/html/about.html]