21 Definizione del Tipo di Documento

<!--
    Questa è la DTD Ristretta dell'HTML 4.0, che esclude gli attributi 
    e gli elementi di presentazione che il W3C si aspetta di eliminare
    con la maturazione del supporto per i fogli di stile. Gli autori 
    dovrebbero usare la DTD Ristretta quando possibile, ma possono usare 
    la DTD Transitoria quando è richiesto supporto per gli attributi 
    e gli elementi di presentazione.

    L'HTML 4.0 include meccanismi per fogli di stile, scripting,
    incorporamento di oggetti, supporto migliorato per testo da destra
    a sinistra e a direzione mista, e ampliamenti dei moduli per una 
    migliore accessibilità in favore delle persone affette da disabilità. 
	
          Draft: $Date: 1998/04/02 00:17:00 $

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

    Ulteriori informazioni sull'HTML 4.0 sono disponibili in:
        http://www.w3.org/TR/REC-html40
-->
<!--
    Utilizzazione tipica:

    <!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 un identificatore di sistema insieme all'identificatore pubblico
    consente all'interprete HTML di scaricare la DTD e gli insiemi di entità 
    come necessario.

    L'FPI (Identificatore Pubblico Formale) per 
    la DTD Transitoria dell'HTML 4.0 è:

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

    e il suo URI è:

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

    Se si sta scrivendo un documento che include frame, si usi il seguente FPI:

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

    con l'URI:

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

    Vengono mantenuti i seguenti URI in relazione a 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 organizzata a 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 puntano alla versione più recente di ciascun file. Per fare
    referimento a questa particolare revisione si usino i seguenti URI:

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

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

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

<!ENTITY % ContentTypes "CDATA"
    -- elenco di tipi di media separati da virgole, come da [RFC2045]
    -->

<!ENTITY % Charset "CDATA"
    -- una codifica dei caratteri, come da [RFC2045]
    -->

<!ENTITY % Charsets "CDATA"
    -- un'elenco di codifiche dei caratteri separate da spazi, come da
       [RFC2045]
    -->

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

<!ENTITY % Character "CDATA"
    -- un singolo carattere dall'insieme di caratteri [ISO10646] 
    -->

<!ENTITY % LinkTypes "CDATA"
    -- elenco di tipi di collegamenti separati da spazi
    -->

<!ENTITY % MediaDesc "CDATA"
    -- singolo descrittore di media o elenco di descrittori di media
       separati da virgole 
    -->

<!ENTITY % URI "CDATA"
    -- un Identificatore Uniforme di Risorsa,
       si veda [URI] 
    -->

<!ENTITY % Datetime "CDATA" -- informazioni relative a data e orario.     
       Formato ISO per la data
    -->

<!ENTITY % Script "CDATA" -- espressione script -->

<!ENTITY % StyleSheet "CDATA" -- dati di foglio 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 Mnemoniche ========================-->

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

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

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

<!ENTITY % coreattrs
 "id          ID             #IMPLIED  -- identificatore unico nell'ambito del 
                                          documento --
  class       CDATA          #IMPLIED  -- elenco di classi separati da spazi --
  style       %StyleSheet;   #IMPLIED  -- informazioni di stile associate --
  title       %Text;         #IMPLIED  -- titolo/espansione con funzione guida --"
  >

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

<!ENTITY % events
 "onclick     %Script;       #IMPLIED  -- un bottone del dispositivo puntatore è stato 
                                          cliccato --
  ondblclick  %Script;       #IMPLIED  -- un bottone del dispositivo puntatore è stato
                                          cliccato due volte --
  onmousedown %Script;       #IMPLIED  -- un bottone del dispositivo puntatore è stato 
                                          premuto --
  onmouseup   %Script;       #IMPLIED  -- un bottone del dispositivo puntatore è stato 
                                          rilasciato --
  onmouseover %Script;       #IMPLIED  -- un puntatore  è stato spostato sopra 
                                          (l'elemento) --
  onmousemove %Script;       #IMPLIED  -- un puntatore è stato spostato di posizione 
                                          all'interno (dell'elemento) --
  onmouseout  %Script;       #IMPLIED  -- un puntatore è stato spostato fuori 
                                          (dall'elemento) --
  onkeypress  %Script;       #IMPLIED  -- è stato premuto e rilasciato un tasto --
  onkeydown   %Script;       #IMPLIED  -- è stato premuto un tasto --
  onkeyup     %Script;       #IMPLIED  -- è stato rilasciato un tasto --"
  >


<!-- Interruttore per caratteristica riservata -->
<!ENTITY % HTML.Reserved "IGNORE">

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

<!ENTITY % reserved "">

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


<!--=================== Marcatura per 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 nel contesto della riga 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 associato a lingua/stile 
                                          generici -->
<!ATTLIST SPAN
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                           -- riservato per possibile uso futuro --
  >

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

<!ELEMENT BR - O EMPTY                 -- interruzione forzata di riga -->
<!ATTLIST BR
  %coreattrs;                          -- attributi id, class, style, title --
  >

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

<!--
    HTML ha due modelli di contenuto fondamentali:

        %inline;   elementi a livello del carattere e stringhe di testo
        %block;    elementi tipo blocco ad es. paragrafi ed elenchi
-->

<!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 associato a lingua/stile 
                                          generici -->
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                           -- riservato per possibile uso futuro --
  >


<!--================== L'Elemento Àncora ===================================-->

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

<!ELEMENT A - - (%inline;)* -(A)       -- àncora -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- codifica dei caratteri della risorsa 
                                          collegata --
  type        %ContentType;  #IMPLIED  -- tipo di contenuto con funzione guida --
  name        CDATA          #IMPLIED  -- estremità del collegamento con nome 
                                          assegnato --
  href        %URI;          #IMPLIED  -- URI della risorsa collegata --
  hreflang    %LanguageCode; #IMPLIED  -- codice di lingua --
  rel         %LinkTypes;    #IMPLIED  -- tipi di collegamenti diretti -- 
  rev         %LinkTypes;    #IMPLIED  -- tipi di collegamenti inversi --
  accesskey   %Character;    #IMPLIED  -- carattere del tasto di scelta rapida --
  shape       %Shape;        rect      -- da utilizzare con mappe sensibili 
                                          client-side --
  coords      %Coords;       #IMPLIED  -- da utilizzare con mappe sensibili 
                                          client-side --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di tabulazione --
  onfocus     %Script;       #IMPLIED  -- l'elemento è stato messo a fuoco --
  onblur      %Script;       #IMPLIED  -- l'elemento è stato de-focalizzato --
  >

<!--================== Mappe sensibili client-side =========================-->

<!-- Queste possono essere collocate nello stesso documento o essere raggruppate
     in un documento separato sebbene ciò non sia ancora diffusamente supportato -->

<!ELEMENT MAP - - ((%block;)+ | AREA+) -- mappa sensibile client-side -->
<!ATTLIST MAP
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #REQUIRED -- per riferimento da parte 
                                          dell'attributo usemap --
  >

<!ELEMENT AREA - O EMPTY               -- area di mappa sensibile client-side -->
<!ATTLIST AREA
  %attrs;                              --  %coreattrs, %i18n, %events --
  shape       %Shape;        rect      -- controlla l'interpretazione 
                                          dell'attributo coords --
  coords      %Coords;       #IMPLIED  -- elenco di lunghezze separate da virgole --
  href        %URI;          #IMPLIED  -- URI della risorsa collegata --
  nohref      (nohref)       #IMPLIED  -- questa regione non ha azioni --
  alt         %Text;         #REQUIRED -- breve descrizione --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di tabulazione --
  accesskey   %Character;    #IMPLIED  -- carattere del tasto di scelta rapida  --
  onfocus     %Script;       #IMPLIED  -- l'elemento è stato messo a fuoco --
  onblur      %Script;       #IMPLIED  -- l'elemento è stato de-focalizzato --
  >

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

<!--
  I valori di relazione possono essere usati in linea di principio:

   a) per barre degli strumenti/menu specifici del documento quando
      utilizzati con l'elemento LINK nell'intestazione del documento ad es.
      inizio, sommario, precedente, 
      successivo, indice, fine, guida
   b) per collegarsi ad un foglio di stile esterno (rel=stylesheet)
   c) per collegarsi ad uno script esterno (rel=script)
   d) da fogli di stile per controllare come collezioni di nodi html
      vengono riprodotti in documenti stampati
   e) per collegarsi ad una versione stampabile di questo documento
      ad es. una versione postscript o pdf (rel=alternate media=print)
-->

<!ELEMENT LINK - O EMPTY               -- collegamento indipendente dai media -->
<!ATTLIST LINK
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- codifica dei caratteri della risorsa 
                                          collegata --
  href        %URI;          #IMPLIED  -- URI della risorsa collegata --
  hreflang    %LanguageCode; #IMPLIED  -- codice di lingua --
  type        %ContentType;  #IMPLIED  -- tipo di contenuto con funzione guida --
  rel         %LinkTypes;    #IMPLIED  -- tipi di collegamenti diretti --
  rev         %LinkTypes;    #IMPLIED  -- tipi di collegamenti inversi --
  media       %MediaDesc;    #IMPLIED  -- per la riproduzione su questi media --
  >

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

<!-- Lunghezza definita nella DTD ristretta per gli attributi 
     cellpadding/cellspacing -->
<!ENTITY % Length "CDATA" -- nn per lunghezza in pixel o nn% per lunghezza 
                             percentuale -->
<!ENTITY % MultiLength "CDATA" -- in pixel, percentuale, o relativa -->

<!ENTITY % MultiLengths "CDATA" -- elenco di entità MultiLength separate da virgole -->

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


<!-- Per evitare problemi con gli interpreti HTML a solo testo,
   così come per rendere il contenuto dell'immagine comprensibile 
   e navigabile per gli utenti di interpreti HTML non visuali,
   si deve fornire una descrizione tramite ALT e si devono 
   evitare mappe sensibili server-side -->
<!ELEMENT IMG - O EMPTY                -- immagine incorporata -->
<!ATTLIST IMG
  %attrs;                              --  %coreattrs, %i18n, %events --
  src         %URI;          #REQUIRED -- URI dell'immagine da incorporare --
  alt         %Text;         #REQUIRED -- breve descrizione --
  longdesc    %URI;          #IMPLIED  -- collegamento a descrizione estesa
                                          (integra l'attributo alt) --
  height      %Length;       #IMPLIED  -- altezza prestabilita 
                                          --
  width       %Length;       #IMPLIED  -- ampiezza prestabilita 
                                          --
  usemap      %URI;          #IMPLIED  -- utilizza mappa sensibile client-side --
  ismap       (ismap)        #IMPLIED  -- utilizza mappa sensibile server-side
--
  >

<!-- USEMAP punta ad un elemento MAP che può trovarsi nel documento stesso o in un
     documento esterno, sebbene l'ultima possibilità non sia ampiamente supportata --> 

<!--========================== OBJECT ======================================-->

<!--
  OBJECT è usato per incorporare oggetti come parti di pagine HTML.
  Gli elementi PARAM dovrebbero precedere gli altri contenuti.
  Il tecnicismo del modello SGML per contenuti misti preclude 
  che ciò possa essere specificato formalmente...
-->

<!ELEMENT OBJECT - - (PARAM | %flow;)* --  oggetto generico incorporato -->
<!ATTLIST OBJECT
  %attrs;                              --  %coreattrs, %i18n, %events --
  declare     (declare)      #IMPLIED  -- indicatore per dichiarazione senza 
                                          istanziazione --
  classid     %URI;          #IMPLIED  -- identifica una implementazione --
  codebase    %URI;          #IMPLIED  -- URI di base per gli attributi classid, data, 
                                          archive --
  data        %URI;          #IMPLIED  -- riferimento ai dati dell'oggetto --
  type        %ContentType;  #IMPLIED  -- tipo di contenuto dei dati --
  codetype    %ContentType;  #IMPLIED  -- tipo di contenuto del codice --
  archive     %URI;          #IMPLIED  -- elenco di archivi separati da spazi --
  standby     %Text;         #IMPLIED  -- messaggio da mostrare durante il 
                                          caricamento --
  height      %Length;       #IMPLIED  -- altezza prestabilita 
                                          --
  width       %Length;       #IMPLIED  -- ampiezza prestabilita 
                                          --
  usemap      %URI;          #IMPLIED  -- utilizza mappa sensibile client-side --
  name        CDATA          #IMPLIED  -- da inviare come parte del modulo --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di tabulazione --
  %reserved;                           -- riservato per possibile uso futuro --
  >

<!ELEMENT PARAM - O EMPTY              -- valore di proprietà con nome assegnato -->
<!ATTLIST PARAM
  id          ID             #IMPLIED  -- identificatore unico nell'ambito del 
                                          documento --
  name        CDATA          #REQUIRED -- nome della proprietà --
  value       CDATA          #IMPLIED  -- valore della proprietà --
  valuetype   (DATA|REF|OBJECT) DATA   -- Come interpretare l'attributo value --
  type        %ContentType;  #IMPLIED  -- tipo di contenuto per value quando 
                                          valuetype=ref --
  >


<!--=================== Separatore orizzontale =============================-->

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


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

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


<!--=================== Intitolazioni ======================================-->

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

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


<!--=================== Testo preformattato ================================-->

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

<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- testo preformattato -->

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


<!--================= Citazioni nel contesto della riga ====================-->

<!ELEMENT Q - - (%inline;)*            -- breve citazione nel contesto della riga -->
<!ATTLIST Q
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI per documento sorgente o messaggio --
  >


<!--=================== Citazioni tipo blocco ==============================-->

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


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

<!-- INS/DEL sono gestiti attraverso l'inclusione nel BODY -->
<!ELEMENT (INS|DEL) - - (%flow;)*      -- testo inserito, testo rimosso -->
<!ATTLIST (INS|DEL)
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- informazioni sul motivo della modifica --
  datetime    %Datetime;     #IMPLIED  -- data e orario della modifica --
  >


<!--=================== Elenchi ============================================-->

<!-- Elenchi di definizioni - DT per il termine, DD per la sua definizione -->

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

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

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

<!-- elenco non ordinato (UL) stili puntati -->
<!ELEMENT UL - - (LI)+                 -- elenco non ordinato -->
<!ATTLIST UL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT LI - O (%flow;)*             -- voce di elenco -->
<!ATTLIST LI
  %attrs;                              -- %coreattrs, %i18n, %events --
  >


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

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- modulo interattivo -->
<!ATTLIST FORM
  %attrs;                              --  %coreattrs, %i18n, %events --
  action      %URI;          #REQUIRED -- gestore server-side di moduli --
  method      (GET|POST)     GET       -- metodo HTTP utilizzato per inoltrare 
                                          il modulo --
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  onsubmit    %Script;       #IMPLIED  -- il modulo è stato inoltrato --
  onreset     %Script;       #IMPLIED  -- il modulo è stato azzerato --
  accept-charset %Charsets;  #IMPLIED  -- elenco di codifiche dei caratteri 
                                          supportate --
  >

<!-- Ciascuna etichetta non deve contenere più di UN campo -->
<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- testo di etichetta del campo di modulo -->
<!ATTLIST LABEL
  %attrs;                              --  %coreattrs, %i18n, %events --
  for         IDREF          #IMPLIED  -- uguaglia il valore ID del campo --
  accesskey   %Character;    #IMPLIED  -- carattere del tasto di scelta rapida  --
  onfocus     %Script;       #IMPLIED  -- l'elemento è stato messo a fuoco --
  onblur      %Script;       #IMPLIED  -- l'elemento è stato de-focalizzato --
  >

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

<!-- nome di attributo obbligatorio per tutti eccetto "submit" & "reset" -->
<!ELEMENT INPUT - O EMPTY              -- controllo di modulo -->
<!ATTLIST INPUT
  %attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- quale tipo di widget viene richiesto --
  name        CDATA          #IMPLIED  -- da inoltrare come parte del modulo --
  value       CDATA          #IMPLIED  -- obbligatorio per bottoni di opzione 
                                          e caselle di selezione --
  checked     (checked)      #IMPLIED  -- per bottoni di opzione e caselle di 
                                          selezione --
  disabled    (disabled)     #IMPLIED  -- inutilizzabile in questo contesto --
  readonly    (readonly)     #IMPLIED  -- per testo e password --
  size        CDATA          #IMPLIED  -- specifico per ciascun tipo di campo --
  maxlength   NUMBER         #IMPLIED  -- numero massimo di caratteri per campi 
                                          di testo --
  src         %URI;          #IMPLIED  -- per campi con immagini --
  alt         CDATA          #IMPLIED  -- breve descrizione --
  usemap      %URI;          #IMPLIED  -- utilizza mappa sensibile client-side --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di tabulazione --
  accesskey   %Character;    #IMPLIED  -- carattere del tasto di scelta rapida --
  onfocus     %Script;       #IMPLIED  -- l'elemento è stato messo a fuoco --
  onblur      %Script;       #IMPLIED  -- l'elemento è stato de-focalizzato --
  onselect    %Script;       #IMPLIED  -- è stato selezionato del testo --
  onchange    %Script;       #IMPLIED  -- il valore dell'elemento è stato modificato --
  accept      %ContentTypes; #IMPLIED  -- elenco di tipi MIME per il caricamento di 
                                          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 (contemporaneamente) --
  multiple    (multiple)     #IMPLIED  -- il default è la selezione singola --
  disabled    (disabled)     #IMPLIED  -- inutilizzabile in questo contesto --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di tabulazione --
  onfocus     %Script;       #IMPLIED  -- l'elemento è stato messo a fuoco --
  onblur      %Script;       #IMPLIED  -- l'elemento è stato de-focalizzato --
  onchange    %Script;       #IMPLIED  -- il valore dell'elemento è stato modificato --
  %reserved;                           -- riservato per possibile uso futuro --
  >

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

<!ELEMENT OPTION - O (#PCDATA)         -- scelta selezionabile -->
<!ATTLIST OPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  selected    (selected)     #IMPLIED
  disabled    (disabled)     #IMPLIED  -- inutilizzabile in questo contesto --
  label       %Text;         #IMPLIED  -- da utilizzare nei menu gerarchici --
  value       CDATA          #IMPLIED  -- assume di default il contenuto 
                                          dell'elemento --
  >

<!ELEMENT TEXTAREA - - (#PCDATA)       -- campo di testo a righe multiple -->
<!ATTLIST TEXTAREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  rows        NUMBER         #REQUIRED
  cols        NUMBER         #REQUIRED
  disabled    (disabled)     #IMPLIED  -- inutilizzabile in questo contesto --
  readonly    (readonly)     #IMPLIED
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di tabulazione -- 
  accesskey   %Character;    #IMPLIED  -- carattere del tasto di scelta rapida -- 
  onfocus     %Script;       #IMPLIED  -- l'elemento è stato messo a fuoco --  
  onblur      %Script;       #IMPLIED  -- l'elemento è stato de-focalizzato --  
  onselect    %Script;       #IMPLIED  -- è stato selezionato del testo --  
  onchange    %Script;       #IMPLIED  -- il valore dell'elemento è stato modificato --  
  %reserved;                           -- riservato per possibile uso futuro --
  >

<!--
  #PCDATA serve a risolvere il problema del contenuto misto,
  secondo le Specifiche lì è consentito solo spazio bianco!
 -->
<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- raggruppamento di controlli 
                                                     di modulo -->
<!ATTLIST FIELDSET
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT LEGEND - - (%inline;)*       -- didascalia dell'elemento fieldset -->
<!ENTITY % LAlign "(top|bottom|left|right)">

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

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

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

<!-- Standard IETF per le tabelle HTML, si veda [RFC1942] -->

<!--
 L'attributo BORDER imposta lo spessore della cornice attorno
 alla tabella. Le unità di default sono i pixel di schermo.

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

 Il valore "border" è incluso per preservare la compatibilità
 con il precedente <TABLE BORDER> che produce frame=border e 
 border=implied. Per <TABLE BORDER=1> si ha border=1 e frame=implied.
 In questo caso è appropriato trattare questo come frame=border
 per preservare la compatibilità con i browser costruiti.
-->

<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
<!--
 L'attributo RULES definisce quali separatori tracciare tra le celle:

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

<!ENTITY % TRules "(none | groups | rows | cols | all)">  

<!-- posizionamento orizzontale della tabella relativamente 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  -- indentamento del 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 di tabella -->
<!ELEMENT THEAD    - O (TR)+           -- intestazione di tabella -->
<!ELEMENT TFOOT    - O (TR)+           -- piè di tabella -->
<!ELEMENT TBODY    O O (TR)+           -- corpo di tabella -->
<!ELEMENT COLGROUP - O (col)*          -- raggruppamento di colonne di tabella -->
<!ELEMENT COL      - O EMPTY           -- colonna di tabella -->
<!ELEMENT TR       - O (TH|TD)+        -- riga di tabella -->
<!ELEMENT (TH|TD)  - O (%flow;)*       -- cella contenente intestazione di tabella, 
                                          cella contenente dati di tabella -->

<!ATTLIST TABLE                        -- elemento tabella --
  %attrs;                              -- %coreattrs, %i18n, %events --
  summary     %Text;         #IMPLIED  -- scopo/struttura per riproduzione vocale --
  width       %Length;       #IMPLIED  -- ampiezza della tabella --
  border      %Pixels;       #IMPLIED  -- controlla l'ampiezza della cornice attorno 
                                          alla tabella --
  frame       %TFrame;       #IMPLIED  -- quali parti della cornice riprodurre --
  rules       %TRules;       #IMPLIED  -- separazioni tra righe e colonne --
  cellspacing %Length;       #IMPLIED  -- spaziatura tra una cella e l'altra --
  cellpadding %Length;       #IMPLIED  -- spaziatura dentro le 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 insieme
diverse colonne collegate semanticamente.
-->
<!ATTLIST COLGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- numero di colonne di default nel 
                                          raggruppamento --
  width       %MultiLength;  #IMPLIED  -- ampiezza di default per gli elementi COL 
                                          inclusi --
  %cellhalign;                         -- allineamento orizzontale nelle celle --
  %cellvalign;                         -- allineamento verticale nelle celle --
  >

<!--
 Gli elementi COL definiscono le proprietà di allineamento
 delle celle in una o più colonne.

 L'attributo width specifica l'ampiezza delle colonne, ad es.
     width=64        ampiezza in pixel di schermo
     width=0.5*      ampiezza relativa di 0.5

 L'attributo SPAN fa sì che gli attributi di un elemento
 COL siano applicati a più di una colonna.
-->

<!ATTLIST COL                          -- raggruppamenti di colonne e proprietà --
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- gli attributi dell'elemento COL riguardano   
                                          N colonne --
  width       %MultiLength;  #IMPLIED  -- specificazione dell'ampiezza delle colonne --
  %cellhalign;                         -- allineamento orizzontale nelle celle --
  %cellvalign;                         -- allineamento verticale nelle celle --
  >

<!--
    Si usi THEAD per duplicare le intestazioni quando la tabella viene 
    spezzata a cavallo di due pagina, o per intestazioni statiche quando
    le sezioni TBODY sono riprodotte nel pannello scorrevole.

    Si usi TFOOT per duplicare le note in calce quando la tabella viene 
    spezzata a cavallo di due pagina, o per note statiche quando le 
    sezioni TBODY sono riprodotte nel pannello scorrevole.

    Si usino sezioni TBODY multiple quando sono necessari separatori
    tra gruppi di righe della tabella.
-->
<!ATTLIST (THEAD|TBODY|TFOOT)          -- porzione di tabella --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- allineamento orizzontale nelle celle --
  %cellvalign;                         -- allineamento verticale nelle celle --
  >

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

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

<!-- TH è per le intestazioni, TD per i dati,
     ma per celle che agiscono come entrambi usarei TD -->
<!ATTLIST (TH|TD)                      -- cella contenente dati o intestazione --
  %attrs;                              -- %coreattrs, %i18n, %events --
  abbr        %Text;         #IMPLIED  -- abbreviazione per cella di intestazione --
  axis        CDATA          #IMPLIED  -- denomina gruppi di intestazioni correlate --
  headers     IDREFS         #IMPLIED  -- elenco di attributi id per le celle di 
                    intestazione --
  scope       %Scope;        #IMPLIED  -- campo di azione ricoperto dalle celle di 
                                          intestazione --
  rowspan     NUMBER         1         -- numero di righe occupate da una cella --
  colspan     NUMBER         1         -- numero di colonne occupate da una cella --
  %cellhalign;                         -- allineamento orizzontale nelle celle --
  %cellvalign;                         -- allineamento verticale nelle celle --
  >


<!--================ Intestazione del documento ============================-->
<!-- %head.misc; definito più sopra 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;                               -- attributi lang, dir --
  profile     %URI;          #IMPLIED  -- denominazione del dizionario di 
                                          metainformazioni --
  >

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


<!ELEMENT BASE - O EMPTY               -- URI di base del documento -->
<!ATTLIST BASE
  href        %URI;          #REQUIRED -- URI che agisce come URI di base --
  >

<!ELEMENT META - O EMPTY               -- metainformazione generica -->
<!ATTLIST META
  %i18n;                               -- attributi lang, dir, da usare con 
                                          l'attributo content --
  http-equiv  NAME           #IMPLIED  -- nome dell'intestazione HTTP di risposta --
  name        NAME           #IMPLIED  -- nome della metainformazione --
  content     CDATA          #REQUIRED -- informazioni associate --
  scheme      CDATA          #IMPLIED  -- seleziona la forma dell'attributo content --
  >

<!ELEMENT STYLE - - %StyleSheet        -- informazioni di stile -->
<!ATTLIST STYLE
  %i18n;                               -- attributi lang, dir, da utilizzare con 
                                          l'attributo title --
  type        %ContentType;  #REQUIRED -- tipo di contenuto del linguaggio di stile --
  media       %MediaDesc;    #IMPLIED  -- progettato per l'utilizzazione con questi 
                                          media --
  title       %Text;         #IMPLIED  -- titolo guida --
  >

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

<!ELEMENT NOSCRIPT - - (%block;)+
   -- contenitore di contenuto alternativo per riproduzione non basata su 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;                               -- attributi lang, dir --
  >