indice pag. precedente


4. Le DTD di HTML

4.1. IETF DTD di HTML 2.0

4.2. IETF DTD di HTML 3.0

4.3. DTD di Netscape


4. Le DTD di HTML

Il linguaggio HTML è stato presentato per la prima volta nel 1990 (HTML 0.0), da Tim Berners-Lee del CERN; questa prima versione prevedeva soltanto dei markup per il trattamento dei testi. Lo stesso Berners-Lee presentava, nell'ottobre 1991, una "mailing list" denominata "www-talk", il cui scopo era quello di raccogliere suggerimenti utili allo sviluppo di HTML nel WWW. Nel marzo 1992, Dan Connolly inizia lo sviluppo della DTD di HTML 1.0; questa versione più aggiornata di HTML, grazie anche all'aiuto dei numerosi suggerimenti arrivati alla "www-talk", giunge alla sua versione finale nel 1993. Da questo momento, inizia il lavoro sulla DTD di HTML 2.0, con lo scopo di introdurre nuovi elementi, come le "forms" e le "image maps", e di eliminarne altri, come <XMP> e <LISTING>, che l'esperienza ha rivelato essere obsoleti. In seguito, nel 1994, viene formato presso il W3 Consortium (http://www.w3.org/), l'"IETF HTML working group" (IETF è l'acronimo di Internet Engineering Task Force) con lo scopo di portare avanti lo sviluppo di HTML. La versione finale di HTML 2.0 è stata presentata nel luglio del 1995 ed attende di essere approvata come standard. Attualmente l'IETF HTML working group sta lavorando sulla DTD di HTML 3.0, con lo scopo di introdurre in HTML elementi come le tabelle, il testo di contorno alle immagini ed equazioni matematiche.

La maggior parte dei protocolli proposti per Internet non diventa mai uno standard. I pochi che diventano standard, ci arrivano dopo una serie di passi di sviluppo, tutti sotto il controllo dell'IETF. I vari stadi attraversati da un documento per arrivare ad essere uno standard sono:

Quando un protocollo è nello stato "standard", può essere definito come:

Il linguaggio HTML 2.0 è entrato nello stato "draft" alla fine di luglio 1995, dove è rimasto fino al 30 novembre 1995, dopodiché è diventato (almeno dovrebbe esserlo) uno standard. E questa sarà la strada anche per HTML 3.0, che attualmente si trova nello stadio experimental. Questo invece non accade per la DTD di Netscape, che viene sviluppata a parte, e che comunque difficilmente verrà soppiantata dalla DTD di HTML 3.0, grazie alla enorme diffusione di Netscape Navigator.


4.1. IETF DTD di HTML 2.0

Questa DTD è stata realizzata, in collaborazione, da Tim Berners Lee e Dan Connolly, presso il WWW Consortium (W3C) e, di fatto, è divenuta lo standard per il WWW ancora prima di essere approvata dal IETF. Anche se la DTD di HTML 2.0 è lo standard, è possibile realizzare delle DTD che differiscono da questo standard; queste variazioni possono essere specificate nella DTD di HTML 2.0 stessa, mediante opportune sezioni, dette "Feature Test Entities". Queste Feature Test Entities sono di quattro tipi:

I valori che queste entità possono assumere sono "IGNORE", oppure "INCLUDE"; ad esempio:

<!- Dichiarazione di una Feature Test Entity ->

<!ENTITY % HTML.Recommended "INCLUDE"

<!- Fino a che il valore di HTML.Recommended è INCLUDE, la seguente sezione di DTD verrà inclusa nella DTD stessa; quando il suo valore è IGNORE, viene esclusa dalla DTD. ->

<![ %HTML.Recommended [

<!ENTITY % body.content "(%heading|%block|HR|ADDRESS)*"

-<h1>Heading</h1>

<p>Testo...

viene preferito a

<h1>Heading</h1>

Testo...

->

]]>

Nella DTD di HTML 2.0, lo stato di questa entità è "IGNORE"; cambiandolo ad "INCLUDE", come nell'esempio precedente, si ha una variazione rispetto alla DTD standard. Questa variazione porta ad una rigorosa implementazione della DTD di HTML 2.0, cioè il documento che viene convalidato da un analizzatore sintattico che usa questa DTD è rigorosamente conforme ad HTML 2.0.

Esiste anche un altro modo per cambiare i valori delle Feature Test Entities, senza modificarli nella DTD: esso consiste nell'inserire nel documento dei comandi opportuni che forzano il cambiamento di queste entità. Ad esempio:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN//"

[ <!ENTITY % HTML.Recommended "INCLUDE"> ] >

Inserendo questo "prologo SGML" all'inizio del documento, si sovrascrive il valore dell'entità "HTML.Recommended" presente nella DTD, forzandola ad assumere il valore "INCLUDE"; quando un analizzatore sintattico esaminerà questo documento, assumerà per le entità "HTML.Recommended" il valore "INCLUDE", anche se nella sua DTD di riferimento è presente il valore "IGNORE". Maggiori informazioni sulle specifiche di HTML 2.0 possono essere trovate all'indirizzo "ftp://www.ics.uci.edu/pub/ietf/html/index.html".

Vediamo alcuni esempi di elementi definiti nella DTD di HTML 2.0:

<!ELEMENT FORM - - %body.content -(FORM) +(INPUT|SELECT|TEXTAREA)>

<!ATTLIST FORM

ACTION %URI #IMPLIED

METHOD (%HTTP-Method) GET

ENCTYPE %Content-Type; "application/x-www-form-urlencoded"

%SDAPREF; "<Para>Form:</Para>"

%SDASUFF: "<Para>Form End.</Para>"

>

Alcuni esempi dell'elemento "FORM" e dei suoi attributi, sono:

<FORM ACTION=" indirizzo dello script CGI da eseguire ">

<!- Specifica l'azione da eseguire sui dati ->

<FORM METHOD="POST">

<!- Specifica il metodo usato per trasmetterei dati ->

<FORM ENCTYPE="application/octet-stream">

<!- Specifica la rappresentazione binaria usata per i dati ->

Questo elemento deve sempre avere una tag di inizio ed una di fine e non permette minimizzazione. Il suo "content data model" contiene elementi definiti dal parametro "%body.content" e la scrittura "-(FORM)" indica che le forms non possono essere annidate.

L'elemento "FORM" ha come sotto-elementi INPUT, SELECT, OPTION e TEXTAREA; per questi si ha:

<!- Si può notare che l'elemento non ha contenuto e richiede la sola tag di inizio ->

<!ELEMENT INPUT - 0 EMPTY>

<!ATTLIST INPUT

TYPE %InputType TEXT

NAME CDATA #IMPLIED

VALUE CDATA #IMPLIED

SRC %URI #IMPLIED

CHECKED (CHECKED) #IMPLIED

SIZE CDATA #IMPLIED

MAXLENGHT NUMBER #IMPLIED

ALIGN (topmiddle|bottom) #IMPLIED

%SDAPREF; "Input:"

>

L'entità "%InputType" definisce il tipo di dati che possono essere inseriti ed è così definita:

<!ENTITY % InputType "(TEXT|PASSWORD|CHECKBOX|RADIO|SUBMIT|

RESET|IMAGE|HIDDEN )">

<!ELEMENT SELECT - - (OPTION+) -(INPUT|SELECT|TEXTAREA)>

<!- La lista degli attributi di questo elemento comprende: il nome dell'elemento da selezionare nella lista; la dimensione della lista, cioè il numero di elementi che la compongono; un attributo per indicare se sono possibili scelte multiple. ->

<!ATTLIST SELECT

NAME CDATA #REQUIRED

SIZE NUMBER #IMPLIED

MULTIPLE (MULTIPLE) #IMPLIED

%SDAFORM; "List"

%SDAPREF;

"<LHead>Select #AttVal(Multiple)</LHead>"

>

Ad esempio, possiamo avere:

<!- Nome dei dati della form ->

<SELECT NAME="regioni-italiane">

<!- Numero di opzioni visualizzate in una volta ->

<SELECT SIZE="10">

<!- Sono permesse selezioni multiple ->

<SELECT MULTIPLE>


4.2. IETF DTD di HTML 3.0

L'IETF HTML working group sta attualmente lavorando sulla versione successiva di HTML 2.0 e cioè HTML 3.0, la cui DTD si trova ancora allo stadio "experimental". La struttura di HTML 3.0 si basa su quella di HTML 2.0 (quest'ultima, a sua volta si basa su quella di HTML 1.0), in modo da mantenere compatibilità con i documenti realizzati secondo la versione precedente di questo linguaggio.

Le innovazioni di HTML 3.0 sono costituite da tags per la realizzazione di tabelle, dalla possibilità di inserire del testo intorno alle immagini e da una serie di tags per l'inserimento nei documenti di formule matematiche (senza quindi doverle convertire in immagini, come accade con le versioni precedenti di HTML).

Maggiori informazioni su HTML 3.0 si trovano all'indirizzo: "http://www.w3.org".


4.3. DTD di NetscapE

Questa DTD è nota anche col nome di "Mozilla DTD" e su di essa si basa il browser "Netscape Navigator", realizzato dalla Netscape Communications Corporation. Nella Mozilla DTD sono contenute numerose estensioni sia della DTD 2.0 che della DTD 3.0. In essa si trovano tutte le strutture della DTD 2.0, più altre strutture che permettono un maggiore controllo sulla rappresentazione del testo da parte del browser; ad esempio, questa DTD permette la centratura delle testate dei documenti, l'annidamento di tags come <I>, <TT> e <B>. Inoltre permette la creazione di tabelle, funzioni per una più efficiente gestione dello sfondo (background) e funzioni che permettono di aggiornare in modo continuo i documenti o parte di essi (documenti dinamici in HTML). Maggiori informazioni sulla Mozilla DTD di trovano all'indirizzo "http://home.netscape.com/assist/net_sites/html_extensions.html".

Ultimo aggiornamento: 21-Mar-1996


imageTelematic lab's home page