21 Definizione del Tipo di Documento


<!--
    Questa è la DTD Rigorosa dell'HTML 4.0, che esclude gli attributi
	e gli elementi di rappresentazione che il W3C ritiene saranno
	soppiantati appena maturerà il supporto per i fogli di stile.
	Gli autori dovrebbero usare la DTD Rigorosa
	quando possibile, ma possono usare la DTD Transitoria quando
	è richiesto il supporto per gli attributi e gli elementi di
	rappresentazione.
    
    L'HTML 4.0 include meccanismi per fogli di stile, programmazione,
    inclusione di oggetti, supporto migliorato per
	il testo scritto da destra a sinistra o a direzione mista,
	e miglioramenti ai moduli per fornire una migliore
	accessibilità alle persone disabili.

          Draft: $Date: 1997/12/18 09:36:02 $

          Autori:
              Dave Raggett <dsr@w3.org>
              Arnaud Le Hors <lehors@w3.org>
              Ian Jacobs <ij@w3.org>

    Ulteriori informazioni circa l'HTML 4.0 si possono trovare presso:

        http://www.w3.org/TR/REC-html40
-->
<!--
    Uso tipico:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
            "http://www.w3.org/TR/REC-html40/strict.dtd">
    <html>
    <head>
    ...
    </head>
    <body>
    ...
    </body>
    </html>

    L'URI usato come identificatore di sistema
    insieme all'identificatore pubblico consente
    all'inteprete HTML di prelevare la DTD e le liste 
    delle entità appena necessario.

    L'FPI per la DTD Transitoria dell'HTML 4.0 è:

        "-//W3C//DTD HTML 4.0 Transitional//EN

    ed il suo URI è:

        http://www.w3.org/TR/REC-html40/loose.dtd

    Se state scrivendo un documento che include i frame, usate il
    seguente FPI:

        "-//W3C//DTD HTML 4.0 Frameset//EN"

    con l'URI:

        http://www.w3.org/TR/REC-html40/frameset.dtd

    Possono essere usati i seguenti URI in relazione all'HTML 4.0:

    "http://www.w3.org/TR/REC-html40/strict.dtd" (DTD Rigorosa)
    "http://www.w3.org/TR/REC-html40/loose.dtd" (DTD Allargata)
    "http://www.w3.org/TR/REC-html40/frameset.dtd" (DTD basata su Frame)
    "http://www.w3.org/TR/REC-html40/HTMLlat1.ent" (Entità Latin-1)
    "http://www.w3.org/TR/REC-html40/HTMLsymbol.ent" (Entità Symbol)
    "http://www.w3.org/TR/REC-html40/HTMLspecial.ent" (Entità Special)

    Questi URI si riferiscono alla versione più recente di ogni file.
    Per referenziare questa specifica revisione usate i seguenti URI:

    "http://www.w3.org/TR/REC-html40-971218/strict.dtd"
    "http://www.w3.org/TR/REC-html40-971218/loose.dtd"
    "http://www.w3.org/TR/REC-html40-971218/frameset.dtd"
    "http://www.w3.org/TR/REC-html40-971218/HTMLlat1.ent"
    "http://www.w3.org/TR/REC-html40-971218/HTMLsymbol.ent"
    "http://www.w3.org/TR/REC-html40-971218/HTMLspecial.ent"

-->

<!--================== Nomi Importati ====================================-->

<!ENTITY % ContentType "CDATA"
    -- tipo di media, come secondo [RFC2045]
    -->

<!ENTITY % ContentTypes "CDATA"
    -- lista separata con virgole di tipi di media , come secondo [RFC2045]
    -->

<!ENTITY % Charset "CDATA"
    -- un insieme di caratteri, come secondo [RFC2045]
    -->

<!ENTITY % Charsets "CDATA"
    -- una lista separata con spazi di insieme di caratteri, come
    secondo [RFC2045] -->

<!ENTITY % LanguageCode "NAME"
    -- un codice di lingua, come secondo [RFC1766]
    -->

<!ENTITY % Character "CDATA"
    -- un singolo carattere da [ISO10646] 
    -->

<!ENTITY % LinkTypes "CDATA"
    -- lista di tipi di collegamenti separata con spazi
    -->

<!ENTITY % MediaDesc "CDATA"
    -- singolo o lista separata con virgole di descrittori di media
    (o "media descriptors") -->

<!ENTITY % URI "CDATA"
    -- un Uniform Resource Identifier (o "Identificatore Uniforme di Risorsa"),
       consultare [URI] -->

<!ENTITY % Datetime "CDATA" -- informazione su data ed orario. Formato data ISO -->

<!ENTITY % Script "CDATA" -- enunciati di programma -->

<!ENTITY % StyleSheet "CDATA" -- dati dei fogli di stile -->

<!ENTITY % Text "CDATA">


<!-- Entità parametro -->

<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- elementi ripetibili dell'intestazione -->

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">

<!ENTITY % list "UL | OL">

<!ENTITY % preformatted "PRE">


<!--=================== Entità Carattere =================================-->

<!ENTITY % HTMLlat1 PUBLIC
   "-//W3C//ENTITIES Latin1//EN//HTML"
   "http://www.w3.org/TR/REC-html40-971218/HTMLlat1.ent">
%HTMLlat1;

<!ENTITY % HTMLsymbol PUBLIC
   "-//W3C//ENTITIES Symbols//EN//HTML"
   "http://www.w3.org/TR/REC-html40-971218/HTMLsymbol.ent">
%HTMLsymbol;

<!ENTITY % HTMLspecial PUBLIC
   "-//W3C//ENTITIES Special//EN//HTML"
   "http://www.w3.org/TR/REC-html40-971218/HTMLspecial.ent">
%HTMLspecial;


<!--=================== Attributi Generici ===============================-->

<!ENTITY % coreattrs
 "id          ID             #IMPLIED  -- id univoco nell'intero documento --
  class       CDATA          #IMPLIED  -- lista di classi separata con spazi --
  style       %StyleSheet;   #IMPLIED  -- informazione connessa ai fogli di stile --
  title       %Text;         #IMPLIED  -- titolo introduttivo/chiarimento --"
  >

<!ENTITY % i18n
 "lang        %LanguageCode; #IMPLIED  -- codice di lingua --
  dir         (ltr|rtl)      #IMPLIED  -- direzione per testo debole/neutrale --"
  >

<!ENTITY % events
 "onclick     %Script;       #IMPLIED  -- un pulsante del puntatore è stato cliccato --
  ondblclick  %Script;       #IMPLIED  -- un pulsante del puntatore è stato cliccato due volte--
  onmousedown %Script;       #IMPLIED  -- un pulsante del puntatore è stato abbassato --
  onmouseup   %Script;       #IMPLIED  -- un pulsante del puntatore è stato alzato --
  onmouseover %Script;       #IMPLIED  -- il puntatore è stato mosso sopra --
  onmousemove %Script;       #IMPLIED  -- il puntatore è stato mosso all'interno di --
  onmouseout  %Script;       #IMPLIED  -- il puntatore è stato mosso via da --
  onkeypress  %Script;       #IMPLIED  -- un tasto è stato premuto e rilasciato --
  onkeydown   %Script;       #IMPLIED  -- un tasto è stato premuto  --
  onkeyup     %Script;       #IMPLIED  -- un tasto è stato rilasciato --"
  >

<!-- Enunciati riservati per il futuro-->
<!ENTITY % HTML.Reserved "IGNORE">

<!-- I seguenti attributi sono riservati per un possibile utilizzo futuro -->
<![ %HTML.Reserved; [
<!ENTITY % reserved
 "datasrc     %URI;          #IMPLIED  -- una sorgente di dati singola o tabulare --
  datafld     CDATA          #IMPLIED  -- la proprietà o il nome della colonna --
  dataformatas (plaintext|html) plaintext -- testo o html --"
  >
]]>

<!ENTITY % reserved "">

<!ENTITY % attrs "%coreattrs; %i18n; %events;">


<!--=================== Impaginazione Testo ==============================-->

<!ENTITY % fontstyle
 "TT | I | B | BIG | SMALL">

<!ENTITY % phrase "EM | STRONG | DFN | CODE |
                   SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >

<!ENTITY % special
   "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">

<!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">

<!-- %inline; comprende elementi in linea o a livello del testo -->
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
<!ATTLIST (%fontstyle;|%phrase;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT (SUB|SUP) - - (%inline;)*    -- pedice, apice -->
<!ATTLIST (SUB|SUP)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT SPAN - - (%inline;)*         -- contenitore generico di linguaggio/stile -->
<!ATTLIST SPAN
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;			       -- riservato per possibile uso futuro --
  >

<!ELEMENT BDO - - (%inline;)*          -- I18N BiDi over-ride -->
<!ATTLIST BDO
  %coreattrs;                          -- id, class, style, title --
  lang        %LanguageCode; #IMPLIED  -- codice di lingua --
  dir         (ltr|rtl)      #REQUIRED -- direzione --
  >


<!ELEMENT BR - O EMPTY                 -- interruzione forzata della linea -->
<!ATTLIST BR
  %coreattrs;                          -- id, class, style, title --
  >


<!--================== Modelli di contenuto dell'HTML ====================-->

<!--
    L'HTML ha due modelli di contenuto di base:

        %inline;     elementi in linea e delle stringhe di testo
        %block;      elementi a livello blocco ad es. paragrafi e liste
-->

<!ENTITY % block
     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

<!ENTITY % flow "%block; | %inline;">


<!--================== Corpo del documento ===============================-->

<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- corpo del documento -->
<!ATTLIST BODY
  %attrs;                              -- %coreattrs, %i18n, %events --
  onload          %Script;   #IMPLIED  -- il documento è stato caricato --
  onunload        %Script;   #IMPLIED  -- il documento è stato rimosso --
  >

<!ELEMENT ADDRESS - - (%inline;)* -- informazioni sull'autore -->
<!ATTLIST ADDRESS
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT DIV - - (%flow;)*            -- contenitore generico di linguaggio/stile -->
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                           -- riservato per possibile uso futuro --
  >


<!--================== L'Elemento Ancora =================================-->

<!ENTITY % Shape "(rect|circle|poly|default)">
<!ENTITY % Coords "CDATA" -- lista di lunghezze separate con virgole -->

<!ELEMENT A - - (%inline;)* -(A)       -- ancora -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- insieme di caratteri della risorsa referenziata --
  type        %ContentType;  #IMPLIED  -- tipo di contenuto --
  name        CDATA          #IMPLIED  -- nome della destinazione di un collegamento --
  href        %URI;          #IMPLIED  -- URI per la risorsa referenziata --
  hreflang    %LanguageCode; #IMPLIED  -- codice di lingua --
  rel         %LinkTypes;    #IMPLIED  -- tipi di link forward (o "riferimento successivo") --
  rev         %LinkTypes;    #IMPLIED  -- tipi di link reverse (o "riferimento precedente") --
  accesskey   %Character;    #IMPLIED  -- carattere di un tasto di scelta rapida --
  shape       %Shape;        rect      -- da usare con le mappe per immagini gestite dal client --
  coords      %Coords;       #IMPLIED  -- da usare con le mappe per immagini gestite dal client --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di selezione --
  onfocus     %Script;       #IMPLIED  -- l'elemento è stato selezionato --
  onblur      %Script;       #IMPLIED  -- l'elemento è stato deselezionato --
  >


<!--================== Mappe per immagini gestite dal client =============-->

<!-- Queste sono poste nello stesso documento o raggruppate in un documento
     separato sebbene ciò non sia ancora diffusamente implementato -->

<!ELEMENT MAP - - ((%block;)+ | AREA+) -- mappa per immagini gestita dal client -->
<!ATTLIST MAP
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #REQUIRED -- per essere referenziato da usemap --
  >

<!ELEMENT AREA - O EMPTY               -- area della mappa gestita dal client -->
<!ATTLIST AREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  shape       %Shape;        rect      -- controlla l'interpretazione delle coordinate --
  coords      %Coords;       #IMPLIED  -- lista di lunghezze separate con virgole --
  href        %URI;          #IMPLIED  -- URI per la risorsa referenziata --
  nohref      (nohref)       #IMPLIED  -- questa regione non ha azione --
  alt         %Text;         #REQUIRED -- breve descrizione --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di selezione --
  accesskey   %Character;    #IMPLIED  -- carattere di un tasto di scelta rapida --
  onfocus     %Script;       #IMPLIED  -- l'elemento è stato selezionato --
  onblur      %Script;       #IMPLIED  -- l'elemento è stato deselezionato --
  >

<!--================== L'Elemento LINK ===================================-->

<!--
  I valori di relazione possono essere usati di norma:

   a) Per toolbar/menu proprie del documento quando usate insieme
      all'elemento Link nell'intestazione ad es.
      inizio, sommario, precedente, successivo, indice, fine, guida
   b) per referenziare un foglio di stile esterno (rel=stylesheet)
   c) per referenziare uno script esterno (rel=script)
   d) dai fogli di stile per controllare come le collezioni di nodi html
      sono mostrati nei documenti stampati
   e) per referenziare una versione stampabile del documento
      ad es. una versione postscript o pdf (rel=alternate media=print)
-->

<!ELEMENT LINK - O EMPTY               -- un collegamento indipendente dai media -->
<!ATTLIST LINK
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- insieme di caratteri della risorsa referenziata --
  href        %URI;          #IMPLIED  -- URI per la risorsa referenziata --
  hreflang    %LanguageCode; #IMPLIED  -- codice di lingua --
  type        %ContentType;  #IMPLIED  -- tipo di contenuto --
  rel         %LinkTypes;    #IMPLIED  -- tipi di collegamento successivo --
  rev         %LinkTypes;    #IMPLIED  -- tipi di collegamento precedente --
  media       %MediaDesc;    #IMPLIED  -- per essere mostrati su questi media --
  >

<!--=================== Immagini =========================================-->

<!-- Lunghezza definita nella DTD rigorosa per cellpadding/cellspacing -->
<!ENTITY % Length "CDATA" -- nn per lunghezze in pixel o nn% per quelle percentuali -->
<!ENTITY % MultiLength "CDATA" -- in pixel, percentuale, o relativa -->

<!ENTITY % MultiLengths "CDATA" -- lista separata con virgole di MultiLength -->

<!ENTITY % Pixels "CDATA" -- intero che rappresenta una lunghezza in pixel -->

<!-- Per evitare problemi con interpreti solo testo
   come pure per rendere il contenuto dell'immagine navigabile
   e comprensibile per gli utenti di interpreti non visuali,
   è necessario fornire una descrizione con ALT, ed evitare 
   mappe per immagini gestite dal server -->

<!ELEMENT IMG - O EMPTY                -- Immagine inclusa -->
<!ATTLIST IMG
  %attrs;                              -- %coreattrs, %i18n, %events --
  src         %URI;          #REQUIRED -- URI dell'immagine da includere --
  alt         %Text;         #REQUIRED -- breve descrizione --
  longdesc    %URI;          #IMPLIED  -- collegamento ad una descrizione estesa (completa alt) --
  height      %Length;       #IMPLIED  -- reimposta l'altezza --
  width       %Length;       #IMPLIED  -- reimposta la larghezza --
  usemap      %URI;          #IMPLIED  -- usa una mappa per immagini gestita dal client --
  ismap       (ismap)        #IMPLIED  -- usa una mappa per immagini gestita dal server --
  >

<!-- USEMAP referenzia un elemento MAP che può trovarsi nello stesso
documento o in uno esterno, sebbene l'ultima possibilità non sia
diffusamente implementata -->


<!--==================== OBJECT ======================================-->
<!--
  OBJECT è usato per inserire oggetti come parte delle pagine HTML.
  Gli elementi PARAM dovrebbero precedere l'altro contenuto.
  Il modello SGML per contenuti misti
  preclude tecnicamente che ciò possa essere specificato formalmente...
-->

<!ELEMENT OBJECT - - (PARAM | %flow;)* -- generico oggetto incluso -->
<!ATTLIST OBJECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  declare     (declare)      #IMPLIED  -- impone di dichiarare e di non instanziare --
  classid     %URI;          #IMPLIED  -- identifica un'implementazione --
  codebase    %URI;          #IMPLIED  -- URI di base per classid, data, archive --
  data        %URI;          #IMPLIED  -- riferimento ad i dati dell'oggetto --
  type        %ContentType;  #IMPLIED  -- tipo di contenuto per i dati --
  codetype    %ContentType;  #IMPLIED  -- tipo di contenuto per il codice --
  archive     %URI;          #IMPLIED  -- lista di archivi separata con spazi --
  standby     %Text;         #IMPLIED  -- messaggio da mostrare durante il caricamento --
  height      %Length;       #IMPLIED  -- reimposta l'altezza --
  width       %Length;       #IMPLIED  -- reimposta la larghezza --
  usemap      %URI;          #IMPLIED  -- usa una mappa per immagini gestita dal client --
  name        CDATA          #IMPLIED  -- invia come parte di un modulo --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di tabulazione --
  %reserved;                           -- riservato per possibile uso futuro --
  >

<!ELEMENT PARAM - O EMPTY              -- valore di una proprietà con nome simbolico -->
<!ATTLIST PARAM
  id          ID             #IMPLIED  -- id univoco nell'intero documento --
  name        CDATA          #REQUIRED -- nome della proprietà --
  value       CDATA          #IMPLIED  -- valore della proprietà --
  valuetype   (DATA|REF|OBJECT) DATA   -- come interpretare il valore --
  type        %ContentType;  #IMPLIED  -- tipo di contenuto quando valuetype=ref --
  >


<!--=================== Divisore orizzontale ================================-->

<!ELEMENT HR - O EMPTY -- divisore orizzontale -->
<!ATTLIST HR
  %coreattrs;                          -- id, class, style, title --
  %events;
  >


<!--=================== Paragrafi ========================================-->

<!ELEMENT P - O (%inline;)*            -- paragrafo -->
<!ATTLIST P
  %attrs;                              -- %coreattrs, %i18n, %events --
  >


<!--=================== Titoli ===========================================-->

<!--
  Ci sono sei livelli di titolazione da H1 (il più importante)
  ad H6 (il meno importante).
-->

<!ELEMENT (%heading;)  - - (%inline;)* -- titolo -->
<!ATTLIST (%heading;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >


<!--=================== Testo precomposto ==============================-->

<!-- Esclude l'inserimento di immagini e variazioni nella dimensione dei font -->
<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">

<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- testo precomposto -->
<!ATTLIST PRE
  %attrs;                              -- %coreattrs, %i18n, %events --
  >


<!--===================== Citazioni brevi ================================-->

<!ELEMENT Q - - (%inline;)*            -- citazione breve -->
<!ATTLIST Q
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI per la fonte --
  >


<!--=================== Citazioni estese =================================-->

<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- citazione estesa -->
<!ATTLIST BLOCKQUOTE
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI per la fonte --
  >


<!--=================== Testo Inserito/Eliminato =========================-->

<!-- INS/DEL sono gestiti per mezzo  della inclusione nel corpo del testo -->
<!ELEMENT (INS|DEL) - - (%flow;)*      -- testo inserito, testo eliminato -->
<!ATTLIST (INS|DEL)
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- informazioni sul motivo della modifica --
  datetime    %Datetime;     #IMPLIED  -- data ed ora della modifica --
  >


<!--=================== Liste ============================================-->

<!-- Liste di definizioni - DT per i termini, DD per le loro definizioni -->

<!ELEMENT DL - - (DT|DD)+              -- lista di definizioni -->
<!ATTLIST DL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT DT - O (%inline;)*           -- termine di definizione -->
<!ELEMENT DD - O (%flow;)*             -- descrizione della definizione -->
<!ATTLIST (DT|DD)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >


<!ELEMENT OL - - (LI)+                 -- lista ordinata -->
<!ATTLIST OL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!-- lista non ordinata (UL) stili con pallini -->
<!ELEMENT UL - - (LI)+                 -- lista non ordinata -->
<!ATTLIST UL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT LI - O (%flow;)*             -- elemento della lista -->
<!ATTLIST LI
  %attrs;                              -- %coreattrs, %i18n, %events --
  >


<!--================ Moduli ==============================================-->

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- modulo interattivo -->
<!ATTLIST FORM
  %attrs;                              -- %coreattrs, %i18n, %events --
  action      %URI;          #REQUIRED -- gestore della scheda sul server --
  method      (GET|POST)     GET       -- metodo HTTP usato per inviare il modulo --
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  onsubmit    %Script;       #IMPLIED  -- il modulo è stato inviato --
  onreset     %Script;       #IMPLIED  -- il modulo è stato annullato --
  accept-charset %Charsets;  #IMPLIED  -- lista di insieme di caratteri gestiti --
  >

<!-- Ogni etichetta non deve contenere più di UN campo -->
<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- testo di un'etichetta di un campo del modulo -->
<!ATTLIST LABEL
  %attrs;                              -- %coreattrs, %i18n, %events --
  for         IDREF          #IMPLIED  -- corrisponde al valore ID del campo --
  accesskey   %Character;    #IMPLIED  -- carattere di un tasto di scelta rapida  --
  onfocus     %Script;       #IMPLIED  -- l'elemento è stato selezionato --
  onblur      %Script;       #IMPLIED  -- l'elemento è stato deselezionato --
  >

<!ENTITY % InputType
  "(TEXT | PASSWORD | CHECKBOX |
    RADIO | SUBMIT | RESET |
    FILE | HIDDEN | IMAGE | BUTTON)"
   >

<!-- nome dell'attributo richiesto per tutti tranne che per submit & reset -->
<!ELEMENT INPUT - O EMPTY              -- elemento del modulo -->
<!ATTLIST INPUT
  %attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- che tipo di componente è richiesto --
  name        CDATA          #IMPLIED  -- invia come parte del modulo --
  value       CDATA          #IMPLIED  -- richiesto per radio e checkbox --
  checked     (checked)      #IMPLIED  -- per radio e checkbox --
  disabled    (disabled)     #IMPLIED  -- non utilizzabile in questo contesto --
  readonly    (readonly)     #IMPLIED  -- per testo e password --
  size        CDATA          #IMPLIED  -- specifico per ogni tipo di campo --
  maxlength   NUMBER         #IMPLIED  -- numero massimo di caratteri per il campo di testo --
  src         %URI;          #IMPLIED  -- per campi con immagini --
  alt         CDATA          #IMPLIED  -- descrizione breve --
  usemap      %URI;          #IMPLIED  -- usa mappa per immagini gestita dal client --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di tabulazione --
  accesskey   %Character;    #IMPLIED  -- carattere di un tasto di scelta rapida --
  onfocus     %Script;       #IMPLIED  -- l'elemento è stato selezionato --
  onblur      %Script;       #IMPLIED  -- l'elemento è stato deselezionato --
  onselect    %Script;       #IMPLIED  -- del testo è stato selezionato --
  onchange    %Script;       #IMPLIED  -- il valore dell'elemento è stato cambiato --
  accept      %ContentTypes; #IMPLIED  -- lista di tipi MIME per l'invio del file --
  %reserved;                           -- riservato per possibile uso futuro --
  >

<!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- selettore di opzioni -->
<!ATTLIST SELECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED  -- nome del campo --
  size        NUMBER         #IMPLIED  -- righe visibili --
  multiple    (multiple)     #IMPLIED  -- è predefinita la selezione singola --
  disabled    (disabled)     #IMPLIED  -- non utilizzabile in questo contesto --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di tabulazione --
  onfocus     %Script;       #IMPLIED  -- l'elemento è stato selezionato --
  onblur      %Script;       #IMPLIED  -- l'elemento è stato deselezionato --
  onchange    %Script;       #IMPLIED  -- il valore dell'elemento è stato cambiato --
  %reserved;                           -- riservato per possibile uso futuro --
  >

<!ELEMENT OPTGROUP - - (OPTION)+ -- gruppo di opzioni -->
<!ATTLIST OPTGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  disabled    (disabled)     #IMPLIED  -- non utilizzabile in questo contesto --
  label       %Text;         #REQUIRED -- da usare in menu gerarchici --
  >

<!ELEMENT OPTION - O (#PCDATA)         -- scelta selezionabile -->
<!ATTLIST OPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  selected    (selected)     #IMPLIED
  disabled    (disabled)     #IMPLIED  -- non utilizzabile in questo contesto --
  label       %Text;         #IMPLIED  -- da usare in menu gerarchici --
  value       CDATA          #IMPLIED  -- l'opzione predefinita è il contenuto dell'elemento --
  >

<!ELEMENT TEXTAREA - - (#PCDATA)       -- campo di testo multiriga -->
<!ATTLIST TEXTAREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  rows        NUMBER         #REQUIRED
  cols        NUMBER         #REQUIRED
  disabled    (disabled)     #IMPLIED  -- non utilizzabile in questo contesto --
  readonly    (readonly)     #IMPLIED
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di selezione --
  accesskey   %Character;    #IMPLIED  -- carattere di un tasto di scelta rapida --
  onfocus     %Script;       #IMPLIED  -- l'elemento è stato selezionato --
  onblur      %Script;       #IMPLIED  -- l'elemento è stato deselezionato --
  onselect    %Script;       #IMPLIED  -- del testo è stato selezionato --
  onchange    %Script;       #IMPLIED  -- il valore dell'elemento è stato cambiato --
  %reserved;                           -- riservato per possibile uso futuro --
  >

<!--
  #PCDATA deve risolvere il problema del contenuto misto,
  secondo la specifica solo spazi bianchi
  sono consentiti qui!
 -->
<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- gruppo di componenti del modulo -->

<!ATTLIST FIELDSET
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT LEGEND - - (%inline;)*       -- legenda di un insieme di campi -->
<!ENTITY % LAlign "(top|bottom|left|right)">

<!ATTLIST LEGEND
  %attrs;                              -- %coreattrs, %i18n, %events --
  accesskey   %Character;    #IMPLIED  -- carattere di un tasto di scelta rapida --
  >

<!ELEMENT BUTTON - -
     (%flow;)* -(A|%formctrl;|FORM|FIELDSET)
     -- pulsante a pressione -->
<!ATTLIST BUTTON
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  value       CDATA          #IMPLIED  -- inviato al server quando il modulo è spedito --
  type        (button|submit|reset) submit -- da usare come pulsante del modulo --
  disabled    (disabled)     #IMPLIED  -- non utilizzabile in questo contesto --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di tabulazione --
  accesskey   %Character;    #IMPLIED  -- carattere di un tasto di scelta rapida --
  onfocus     %Script;       #IMPLIED  -- l'elemento è stato selezionato --
  onblur      %Script;       #IMPLIED  -- l'elemento è stato deselezionato --
  %reserved;                           -- riservato per possibile uso futuro --
  >


<!--======================= Tabelle ======================================-->

<!-- Tabella standard IETF HTML, consultare [RFC1942] -->

<!--
 L'attributo BORDER imposta lo spessore della cornice intorno
 alla tabella. L'unità predefinita sono pixel.

 L'attributo FRAME specifica quale parte della cornice intorno
 alla tabella dovrebbe essere mostrata. I valori non sono gli stessi di
 CALS per evitare conflitti di nome con l'attributo VALIGN.

 Il valore "border" è incluso per compatibilità con il sorpassato
 <TABLE BORDER> che consente frame=border e border=implied .
 Per <TABLE BORDER=1> il risultato è border=1 e frame=implied. In
 questo case, è appropriato trattare questo come frame=border
 per compatibilità con i browser diffusi.
-->
<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">

<!--
 L'attributo RULES definisce quali divisori disegnare tra le celle:

 Se RULES è assente allora è assunto:
     "none" se BORDER è assente o BORDER=0 altrimenti "all"
-->

<!ENTITY % TRules "(none | groups | rows | cols | all)">
  
<!-- posizione orizzontale della tabella relativa al documento -->
<!ENTITY % TAlign "(left|center|right)">

<!-- attributi di allineamento orizzontale per i contenuti delle celle -->
<!ENTITY % cellhalign
  "align      (left|center|right|justify|char) #IMPLIED
   char       %Character;    #IMPLIED  -- carattere di allineamento, ad es. char=':' --
   charoff    %Length;       #IMPLIED  -- distanza per il carattere di allineamento --"
  >

<!-- attributi di allineamento verticale per i contenuti delle celle -->
<!ENTITY % cellvalign
  "valign     (top|middle|bottom|baseline) #IMPLIED"
  >

<!ELEMENT TABLE - -
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ELEMENT CAPTION  - - (%inline;)*     -- didascalia della tabella -->
<!ELEMENT THEAD    - O (TR)+           -- intestazione della tabella -->
<!ELEMENT TFOOT    - O (TR)+           -- note della tabella -->
<!ELEMENT TBODY    O O (TR)+           -- corpo della tabella -->
<!ELEMENT COLGROUP - O (col)*          -- gruppo di colonne della tabella -->
<!ELEMENT COL      - O EMPTY           -- colonna della tabella -->
<!ELEMENT TR       - O (TH|TD)+        -- fila della tabella -->
<!ELEMENT (TH|TD)  - O (%flow;)*       -- cella dell'intestazione della tabella, cella dei dati della tabella -->

<!ATTLIST TABLE                        -- elemento tabella --
  %attrs;                              -- %coreattrs, %i18n, %events --
  summary     %Text;         #IMPLIED  -- scopo/struttura per emissione vocale --
  width       %Length;       #IMPLIED  -- larghezza tabella --
  border      %Pixels;       #IMPLIED  -- controlla lo spessore della cornice frame intorno alla tabella --
  frame       %TFrame;       #IMPLIED  -- quale parte della cornice mostrare --
  rules       %TRules;       #IMPLIED  -- griglia tra colonne e file --
  cellspacing %Length;       #IMPLIED  -- distanza tra le celle --
  cellpadding %Length;       #IMPLIED  -- distanza all'interno delle celle --
  %reserved;                           -- riservato per possibile uso futuro 
  datapagesize CDATA         #IMPLIED  -- riservato per possibile uso futuro --
  >

<!ENTITY % CAlign "(top|bottom|left|right)">

<!ATTLIST CAPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--
COLGROUP raggruppa un insieme di elementi COL. Permette di raggruppare
più colonne semanticamente collegate insieme.
-->
<!ATTLIST COLGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- numero predefinito di colonne nel gruppo --
  width       %MultiLength;  #IMPLIED  -- larghezza predefinita delle COL incluse --
  %cellhalign;                         -- allineamento orizzontale nelle celle --
  %cellvalign;                         -- allineamento verticale nelle celle --
  >

<!--
 Gli elementi COL definiscono le proprietà dell'allineamento
 per le celle in una o più colonne.

 L'attributo width specifica la larghezza delle colonne, ad es.

     width=64        larghezza in pixel
     width=0.5*      larghezza relativa in 0.5

 L'attributo SPAN fa in modo che gli attributi di un elemento
 COL siano applicati a più di una colonna.
-->
<!ATTLIST COL                          -- gruppi di colonne e proprietà --
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- gli attributi COL si riferiscono a N colonne --
  width       %MultiLength;  #IMPLIED  -- specifica la larghezza della colonna --
  %cellhalign;                         -- allineamento orizzontale nelle celle --
  %cellvalign;                         -- allineamento verticale nelle celle --
  >

<!--
    Usa THEAD per duplicare le intestazioni quando si interrompe
    la tabella a cavallo di una pagina, o per intestazioni statiche quando
    le sezioni TBODY sono visualizzate nel pannello scorrevole.

    Usa TFOOT per duplicare le note quando si interrompe
    la tabella a cavallo di una pagina, o per note statiche quando
    le sezioni TBODY sono visualizzate nel pannello scorrevole.

    Usa multiple sezioni TBODY quando sono necessarie griglie
    tra gruppi di file della tabella.
-->
<!ATTLIST (THEAD|TBODY|TFOOT)          -- sezione della tabella --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- allineamento orizzontale nelle celle --
  %cellvalign;                         -- allineamento verticale nelle celle --
  >

<!ATTLIST TR                           -- riga della tabella --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- allineamento orizzontale nelle celle --
  %cellvalign;                         -- allineamento verticale nelle celle --
  >

<!-- Scope è più semplice che l'attributo axes per le tabelle comuni-->
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">

<!-- TH è per le intestazioni, TD per i dati,
       ma per celle che hanno la funzione di entrambi bisogna usare TD -->
<!ATTLIST (TH|TD)                      -- cella di dati o dell'intestazione --
  %attrs;                              -- %coreattrs, %i18n, %events --
  abbr        %Text;         #IMPLIED  -- abbreviazione per la cella di intestazione --
  axis        CDATA          #IMPLIED  -- nomi dei gruppi di intestazioni correlate --
  headers     IDREFS         #IMPLIED  -- lista di id per le celle di intestazione --
  scope       %Scope;        #IMPLIED  -- portata coperta dalle celle di intestazione --
  rowspan     NUMBER         1         -- numero di righe coperto dalle celle --
  colspan     NUMBER         1         -- numero di colonne coperto dalle celle --
  %cellhalign;                         -- allineamento orizzontale nelle celle --
  %cellvalign;                         -- allineamento verticale nelle celle --
  >


<!--================ Intestazione del documento ==========================-->

<!-- %head.misc; definito precedentemente come
        "SCRIPT|STYLE|META|LINK|OBJECT" -->
<!ENTITY % head.content "TITLE & BASE?">

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- intestazione del documento -->
<!ATTLIST HEAD
  %i18n;                               -- lang, dir --
  profile     %URI;          #IMPLIED  -- dizionario con nome di metainformazioni --
  >

<!-- L'elemento TITLE non è considerato parte del flusso di testo.
       Dovrebbe essere mostrato, per esempio come titolo
       della pagina della finestra. È richiesto esattamente
       un title per documento.
    -->
<!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- titolo del documento -->
<!ATTLIST TITLE %i18n>


<!ELEMENT BASE - O EMPTY               -- URI base del documento -->
<!ATTLIST BASE
  href        %URI;          #REQUIRED -- URI che funge da URI base --
  >

<!ELEMENT META - O EMPTY               -- metainformazione generica -->
<!ATTLIST META
  %i18n;                               -- lang, dir, da usare con il contenuto --
  http-equiv  NAME           #IMPLIED  -- nome dell'intestazione della risposta HTTP --
  name        NAME           #IMPLIED  -- nome della metainformazione --
  content     CDATA          #REQUIRED -- informazione associata --
  scheme      CDATA          #IMPLIED  -- seleziona la forma del contenuto --
  >

<!ELEMENT STYLE - - %StyleSheet        -- informazione connessa ai fogli di stile -->
<!ATTLIST STYLE
  %i18n;                               -- lang, dir, da usare con il titolo --
  type        %ContentType;  #REQUIRED -- tipo di contenuto del linguaggio dello stile --
  media       %MediaDesc;    #IMPLIED  -- per essere mostrati su questi media --
  title       %Text;         #IMPLIED  -- titolo introduttivo --
  >

<!ELEMENT SCRIPT - - %Script;          -- enunciati di programma -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- insieme di caratteri della risorsa referenziata --
  type        %ContentType;  #REQUIRED -- tipo di contenuto del linguaggio dello script --
  language    CDATA          #IMPLIED  -- nome del linguaggio predefinito del programma --
  src         %URI;          #IMPLIED  -- URI per uno script esterno --
  defer       (defer)        #IMPLIED  -- l'interprete può differire l'esecuzione del programma --
  event       CDATA          #IMPLIED  -- riservato per possibile uso futuro --
  for         %URI;          #IMPLIED  -- riservato per possibile uso futuro --
  >

<!ELEMENT NOSCRIPT - - (%block;)+
  -- contenitore del contenuto alternativo da mostrare in caso di mancato supporto allo script -->
<!ATTLIST NOSCRIPT
  %attrs;                              -- %coreattrs, %i18n, %events --
  >


<!--================ Struttura del documento =============================-->

<!ENTITY % html.content "HEAD, BODY">

<!ELEMENT HTML O O (%html.content;)    -- elemento radice del documento -->
<!ATTLIST HTML
  %i18n;                               -- lang, dir --
  >