21 Definizione del Tipo di Documento

<!--
    Questa è la DTD Rigorosa di HTML 4.01, che esclude gli attributi
    e gli elementi di presentazione, che il W3C attende che siano
    gradualmente eliminati mentre si sviluppa il supporto per i fogli
    di stile. Gli autori dovrebbero usare quando possibile la DTD 
    Rigorosa, ma possono usare la DTD Transitoria quando è necessario
    il supporto per attributi ed elementi di presentazione.
    
    HTML 4 include meccanismi per fogli di stile, linguaggi di script,
    oggetti incorporati, supporto migliorato per testo con direzione da
    destra a sinistra e mista, e miglioramenti ai moduli per una 
    maggiore accessibilità per le persone con disabilità.

          Prima stesura: $Date: 1999/12/24 22:40:35 $

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

    Ulteriori informazioni su HTML 4.01 sono disponibili presso:

        http://www.w3.org/TR/1999/REC-html401-19991224


    Le specifiche HTML 4.01 comprendono vincoli sintattici
    aggiuntivi che non possono essere espressi all'interno
    delle DTD.

-->
<!--
    Impiego tipico:

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

    L'URI usato come un identificatore di sistema con l'identificatore
    pubblico consente al programma utente di scaricare la DTD e gli
    insiemi di entità necessari.

    Lo FPI per la DTD Transitoria HTML 4.01 è:

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

    Tale versione della DTD transitoria è:

        http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd

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

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

    Tale versione della DTD organizzata a frame è:

        http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd

    Usate i seguenti URI (relativi) per riferirvi alle
    DTD e alle definizioni di entità di queste specifiche:
	
    "strict.dtd"
    "loose.dtd"
    "frameset.dtd"
    "HTMLlat1.ent"
    "HTMLsymbol.ent"
    "HTMLspecial.ent"

-->

<!--================== Nomi importati ===================================-->
<!-- Commutatore di configurazione per documenti organizzati a frame -->
<!ENTITY % HTML.Frameset "IGNORE">

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

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

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

<!ENTITY % Charsets "CDATA"
    -- un elenco di codifiche di carattere separato da spazi, come da [RFC2045]
    -->

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

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

<!ENTITY % LinkTypes "CDATA"
    -- elenco separato da spazi di tipi di collegamento
    -->

<!ENTITY % MediaDesc "CDATA"
    -- singolo descrittore di mezzo o elenco separato da virgole
    -->

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

<!ENTITY % Datetime "CDATA" -- informazioni su data e ora. Formato di data ISO -->


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

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



<!ENTITY % Text "CDATA">


<!-- Entità parametro -->

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

<!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"
   "HTMLlat1.ent">
%HTMLlat1;

<!ENTITY % HTMLsymbol PUBLIC
   "-//W3C//ENTITIES Symbols//EN//HTML"
   "HTMLsymbol.ent">
%HTMLsymbol;

<!ENTITY % HTMLspecial PUBLIC
   "-//W3C//ENTITIES Special//EN//HTML"
   "HTMLspecial.ent">
%HTMLspecial;
<!--=================== Attributi generici ===============================-->

<!ENTITY % coreattrs
 "id          ID             #IMPLIED  -- id unico nell'ambito del documento --
  class       CDATA          #IMPLIED  -- elenco di classi separato da spazi --
  style       %StyleSheet;   #IMPLIED  -- informazioni di stile associate --
  title       %Text;         #IMPLIED  -- titolo di suggerimento --"
  >

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

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

<!-- Commutatore di Caratteristica Riservata -->
<!ENTITY % HTML.Reserved "IGNORE">

<!-- I seguenti attributi sono riservati per possibili usi futuri -->
<![ %HTML.Reserved; [
<!ENTITY % reserved
 "datasrc     %URI;          #IMPLIED  -- una Sorgente di Dati singola o tabellare --
  datafld     CDATA          #IMPLIED  -- il nome di proprietà o di colonna --
  dataformatas (plaintext|html) plaintext -- testo o html --"
  >
]]>

<!ENTITY % reserved "">

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


<!--=================== Marcatura del 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; copre gli elementi in 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 generico di lingua/stile -->
<!ATTLIST SPAN
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                   -- riservato per un possibile uso futuro --
  >

<!ELEMENT BDO - - (%inline;)*          -- sovrascrive l'algoritmo bidirezionale -->
<!ATTLIST BDO
  %coreattrs;                          -- id, class, style, title --
  lang        %LanguageCode; #IMPLIED  -- codice di lingua --
  dir         (ltr|rtl)      #REQUIRED -- direzionalità --
  >


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

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

<!--
    L'HTML possiede due modelli di contenuto fondamentali:

        %inline;     elementi a livello di carattere e stringhe di testo
        %block;      elementi a livello di blocco come 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 generico di lingua/stile -->
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                           -- riservato per un possibile uso futuro --
  >


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

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

<!ELEMENT A - - (%inline;)* -(A)       -- àncora -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- codifica del carattere di risorsa collegata --
  type        %ContentType;  #IMPLIED  -- avviso sul tipo di contenuto --
  name        CDATA          #IMPLIED  -- destinazione di collegamento denominata --
  href        %URI;          #IMPLIED  -- URI di risorsa collegata --
  hreflang    %LanguageCode; #IMPLIED  -- codice di lingua --
  rel         %LinkTypes;    #IMPLIED  -- tipi di collegamento in avanti --
  rev         %LinkTypes;    #IMPLIED  -- tipi di collegamento all'indietro --
  accesskey   %Character;    #IMPLIED  -- carattere chiave per l'accessibilità --
  shape       %Shape;        rect      -- da usare con mappe immagine sul lato cliente --
  coords      %Coords;       #IMPLIED  -- da usare con mappe immagine sul lato server --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di selezione --
  onfocus     %Script;       #IMPLIED  -- l'elemento ha ottenuto il fuoco --
  onblur      %Script;       #IMPLIED  -- l'elemento ha perduto il fuoco --
  >

<!--================== Mappe immagine sul lato cliente ===================-->

<!-- Queste possono essere posizionate nello stesso documento o raggruppate in
     un documento separato, benché ciò non sia ancora largamente supportato -->

<!ELEMENT MAP - - ((%block;) | AREA)+ -- mappa immagine sul lato cliente -->
<!ATTLIST MAP
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #REQUIRED -- per riferimento da usemap --
  >

<!ELEMENT AREA - O EMPTY               -- area di mappa immagine sul lato cliente -->
<!ATTLIST AREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  shape       %Shape;        rect      -- controlla l'interpretazione delle coordinate --
  coords      %Coords;       #IMPLIED  -- elenco di lunghezze separato da virgole --
  href        %URI;          #IMPLIED  -- URI di risorsa collegata --
  nohref      (nohref)       #IMPLIED  -- questa regione non è attiva --
  alt         %Text;         #REQUIRED -- descrizione breve --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di selezione --
  accesskey   %Character;    #IMPLIED  -- carattere chiave per l'accessibilità --
  onfocus     %Script;       #IMPLIED  -- l'elemento ha ottenuto il fuoco --
  onblur      %Script;       #IMPLIED  -- l'elemento ha perduto il fuoco --
  >

<!--================== L'elemento Link ===================================-->

<!--
  In linea di principio i valori di relazione possono essere usati:

   a) per barre di navigazione/menu specifici di un documento, quando usati 
      con l'elemento LINK nella testata del documento; es.: inizio, sommario,
      precedente, successivo, indice, fine, aiuto
   b) per richiamare un foglio di stile separato (rel=stylesheet)
   c) per creare un collegamento ad uno script (rel=script)
   d) da fogli di stile per controllare come collezioni di nodi html
      sono riprodotti all'interno di documenti stampati
   e) per creare un collegamento ad una versione stampabile di questo documento
      es: una versione postscript o pdf (rel=alternate media=print)
-->

<!ELEMENT LINK - O EMPTY               -- un collegamento indipendente dal mezzo -->
<!ATTLIST LINK
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- codifica del carattere di risorsa collegata --
  href        %URI;          #IMPLIED  -- URI di risorsa collegata --
  hreflang    %LanguageCode; #IMPLIED  -- codice di lingua --
  type        %ContentType;  #IMPLIED  -- avviso sul tipo di contenuto --
  rel         %LinkTypes;    #IMPLIED  -- tipi di collegamento in avanti --
  rev         %LinkTypes;    #IMPLIED  -- tipi di collegamento all'indietro --
  media       %MediaDesc;    #IMPLIED  -- per la riproduzione con questi media --
  >

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

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

<![ %HTML.Frameset; [
<!ENTITY % MultiLengths "CDATA" -- elenco separato da virgole di MultiLength -->
]]>

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


<!-- Per evitare problemi con i PU solo testuali, come pure
   per rendere il contenuto dell'immagine comprensibile e navigabile
   agli utenti di PU non visuali, occorre fornire una descrizione
   con ALT ed evitare le mappe immagine sul lato server -->
<!ELEMENT IMG - O EMPTY                -- Immagine incorporata -->
<!ATTLIST IMG
  %attrs;                              -- %coreattrs, %i18n, %events --
  src         %URI;          #REQUIRED -- URI di immagine da incorporare --
  alt         %Text;         #REQUIRED -- descrizione breve --
  longdesc    %URI;          #IMPLIED  -- collegamento ad una descrizione lunga
                                          (integra alt) --
  name        CDATA          #IMPLIED  -- nome di immagine per script --
  height      %Length;       #IMPLIED  -- sovrascrive l'altezza --
  width       %Length;       #IMPLIED  -- sovrascrive la larghezza --
  usemap      %URI;          #IMPLIED  -- da usare con una mappa immagine sul lato cliente --
  ismap       (ismap)        #IMPLIED  -- da usare con una mappa immagine sul lato server --
  >

<!-- USEMAP punta ad un elemento MAP che può essere in questo documento o in un
  documento esterno, benché la seconda opzione non sia sufficientemente supportata -->

<!--==================== OBJECT ======================================-->
<!--
  OBJECT è usato per incorporare oggetti come parte di pagine HTML.
  Gli elementi PARAM dovrebbero avere la precedenza su altro contenuto.
  Dettagli tecnici del modello di contenuto misto SGML impediscono di
  specificare ciò formalmente ...
-->

<!ELEMENT OBJECT - - (PARAM | %flow;)*
 -- oggetto generico incorporato -->
<!ATTLIST OBJECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  declare     (declare)      #IMPLIED  -- per dichiarare ma non istanziare l'oggetto --
  classid     %URI;          #IMPLIED  -- identifica un'implementazione --
  codebase    %URI;          #IMPLIED  -- URI di base per classid, data, archive --
  data        %URI;          #IMPLIED  -- riferimento a dati di oggetto --
  type        %ContentType;  #IMPLIED  -- tipo di contenuto per dati --
  codetype    %ContentType;  #IMPLIED  -- tipo di contenuto per codice --
  archive     CDATA          #IMPLIED  -- elenco separato da spazi di URI --
  standby     %Text;         #IMPLIED  -- messaggio da mostrare durante il caricamento --
  height      %Length;       #IMPLIED  -- sovrascrive l'altezza --
  width       %Length;       #IMPLIED  -- sovrascrive la larghezza --
  usemap      %URI;          #IMPLIED  -- da usare con mappe immagine sul lato cliente --
  name        CDATA          #IMPLIED  -- inoltra come parte di un modulo --
  tabindex    NUMBER         #IMPLIED  -- posizione in ordine di selezione --
  %reserved;                           -- riservato per un possibile uso futuro --
  >

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


<!--=================== Linea orizzontale ================================-->

<!ELEMENT HR - O EMPTY -- linea orizzontale -->
<!ATTLIST HR
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

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

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

<!--=================== Intestazioni =====================================-->

<!--
  Esistono sei livelli di intestazione, da H1 (il più importante)
  fino ad H6 (il meno importante).
-->

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

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

<!-- esclude la marcatura per le immagini e cambiamenti nella grandezza dei caratteri -->
<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">

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

<!--===================== Citazioni incorporate ==========================-->

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

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

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

<!--=================== Testo inserito/cancellato ========================-->


<!-- INS/DEL sono usati per aggiunte su BODY -->
<!ELEMENT (INS|DEL) - - (%flow;)*      -- testo inserito, testo cancellato -->
<!ATTLIST (INS|DEL)
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- info sul motivo del cambiamento --
  datetime    %Datetime;     #IMPLIED  -- data e ora 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 --
  >

<!-- Elenchi non ordinati (UL) stili per i pallini -->
<!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 di moduli sul lato server --
  method      (GET|POST)     GET       -- metodo HTTP usato per inoltrare il modulo --
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  accept      %ContentTypes; #IMPLIED  -- elenco di tipi MIME per l'invio di file --
  name        CDATA          #IMPLIED  -- nome di modulo per script --
  onsubmit    %Script;       #IMPLIED  -- il modulo è stato inoltrato --
  onreset     %Script;       #IMPLIED  -- il modulo è stato riportato alla condizione iniziale --
  accept-charset %Charsets;  #IMPLIED  -- elenco di insiemi di caratteri supportati --
  >

<!-- Ciascuna etichetta non deve contenere più di UN SOLO campo -->
<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- etichetta di testo per campo di modulo -->
<!ATTLIST LABEL
  %attrs;                              -- %coreattrs, %i18n, %events --
  for         IDREF          #IMPLIED  -- corrisponde al valore ID del campo --
  accesskey   %Character;    #IMPLIED  -- carattere chiave per l'accessibilità --
  onfocus     %Script;       #IMPLIED  -- l'elemento ha ottenuto il fuoco --
  onblur      %Script;       #IMPLIED  -- l'elemento ha perduto il fuoco --
  >

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

<!-- nome di attributo obbligatorio per tutti tranne che per submit e reset -->
<!ELEMENT INPUT - O EMPTY              -- controllo di modulo -->
<!ATTLIST INPUT
  %attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- che tipo di arnese è necessario --
  name        CDATA          #IMPLIED  -- da inoltrare come parte di un modulo --
  value       CDATA          #IMPLIED  -- da specificare per radiocomandi e caselle di spunta --
  checked     (checked)      #IMPLIED  -- per radiocomandi e caselle di spunta --
  disabled    (disabled)     #IMPLIED  -- non disponibile in questo contesto --
  readonly    (readonly)     #IMPLIED  -- per testo e codice segreto --
  size        CDATA          #IMPLIED  -- specifico di ogni tipo di campo --
  maxlength   NUMBER         #IMPLIED  -- massimo numero di caratteri per campi di testo --
  src         %URI;          #IMPLIED  -- per campi con immagini --
  alt         CDATA          #IMPLIED  -- descrizione breve --
  usemap      %URI;          #IMPLIED  -- da usare con mappe immagine sul lato cliente --
  ismap       (ismap)        #IMPLIED  -- da usare con mappe immagine sul lato server --
  tabindex    NUMBER         #IMPLIED  -- posizione in ordine di selezione --
  accesskey   %Character;    #IMPLIED  -- carattere chiave per l'accessibilità --
  onfocus     %Script;       #IMPLIED  -- l'elemento ha ottenuto il fuoco --
  onblur      %Script;       #IMPLIED  -- l'elemento ha perduto il fuoco --
  onselect    %Script;       #IMPLIED  -- del testo è stato selezionato --
  onchange    %Script;       #IMPLIED  -- il valore dell'elemento è stato cambiato --
  accept      %ContentTypes; #IMPLIED  -- elenco di tipi MIME per l'invio di file --
  %reserved;                           -- riservato per un possibile uso futuro --
  >

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

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

<!ELEMENT OPTION - O (#PCDATA)         -- scelta selezionabile -->
<!ATTLIST OPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  selected    (selected)     #IMPLIED
  disabled    (disabled)     #IMPLIED  -- non disponibile in questo contesto --
  label       %Text;         #IMPLIED  -- per l'uso in menu gerarchici --
  value       CDATA          #IMPLIED  -- assume per difetto 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 disponibile in questo contesto --
  readonly    (readonly)     #IMPLIED
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di selezione --
  accesskey   %Character;    #IMPLIED  -- carattere chiave per l'accessibilità --
  onfocus     %Script;       #IMPLIED  -- l'elemento ha ottenuto il fuoco --
  onblur      %Script;       #IMPLIED  -- l'elemento ha perduto il fuoco --
  onselect    %Script;       #IMPLIED  -- del testo è stato selezionato --
  onchange    %Script;       #IMPLIED  -- il valore dell'elemento è stato cambiato --
  %reserved;                           -- riservato per un possibile uso futuro --
  >

<!--
  #PCDATA è per risolvere il problema del contenuto misto,
  in base alle specifiche ivi è consentito soltanto lo spazio bianco!
 -->
<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- gruppo di controlli di modulo -->
<!ATTLIST FIELDSET
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT LEGEND - - (%inline;)*       -- didascalia per un gruppo di controlli -->

<!ATTLIST LEGEND
  %attrs;                              -- %coreattrs, %i18n, %events --
  accesskey   %Character;    #IMPLIED  -- carattere chiave per l'accessibilità --
  >

<!ELEMENT BUTTON - -
     (%flow;)* -(A|%formctrl;|FORM|FIELDSET)
     -- pulsante di comando -->
<!ATTLIST BUTTON
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  value       CDATA          #IMPLIED  -- inviato al server con l'inoltro --
  type        (button|submit|reset) submit -- da usare come pulsante di un modulo --
  disabled    (disabled)     #IMPLIED  -- non disponibile in questo contesto --
  tabindex    NUMBER         #IMPLIED  -- posizione nell'ordine di selezione --
  accesskey   %Character;    #IMPLIED  -- carattere chiave per l'accessibilità --
  onfocus     %Script;       #IMPLIED  -- l'elemento ha ottenuto il fuoco --
  onblur      %Script;       #IMPLIED  -- l'elemento ha perduto il fuoco --
  %reserved;                           -- riservato per un possibile uso futuro --
  >

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

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

<!--
 L'attributo BORDER imposta lo spessore del bordo intorno alla tabella.
 L'unità di misura predefinita sono i pixel dello schermo.
 
 L'attributo FRAME specifica quale parte del bordo che circonda la tabella
 dovrebbe essere riprodotta. I valori non sono gli stessi di CALS per
 evitare un conflitto di nomi con l'attributo VALIGN.
 
 Il valore "border" è incluso per ragioni di compatibilità all'indietro con
 <TABLE BORDER>, che cede il posto a frame=border e border=implicito
 Per <TABLE BORDER=1> si ha border=1 e frame=implicito. In tal caso,
 è appropriato trattare ciò come frame=border per mantenere la compatibilità
 all'indietro con i browser in campo.
-->
<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">

<!--
 L'attributo RULES definisce quali filetti tracciare tra le celle:

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

<!ENTITY % TRules "(none | groups | rows | cols | all)">
  
<!-- posizionamento orizzontale di una tabella relativamente al documento -->
<!ENTITY % TAlign "(left|center|right)">

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

<!-- attributi di allineamento verticale per contenuti di cella -->
<!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)+           -- piede di tabella -->
<!ELEMENT TBODY    O O (TR)+           -- corpo di tabella -->
<!ELEMENT COLGROUP - O (COL)*          -- gruppo 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 d'intestazione di tabella, cella di dati di tabella -->

<!ATTLIST TABLE                        -- elemento di tabella --
  %attrs;                              -- %coreattrs, %i18n, %events --
  summary     %Text;         #IMPLIED  -- scopo/struttura per riproduzione vocale --
  width       %Length;       #IMPLIED  -- larghezza di tabella --
  border      %Pixels;       #IMPLIED  -- controlla la larghezza del bordo intorno alla tabella --
  frame       %TFrame;       #IMPLIED  -- quale parte del bordo riprodurre --
  rules       %TRules;       #IMPLIED  -- filetti tra righe e colonne --
  cellspacing %Length;       #IMPLIED  -- spaziatura tra le celle --
  cellpadding %Length;       #IMPLIED  -- spaziatura all'interno delle celle --
  %reserved;                           -- riservato per un possibile uso futuro --
  datapagesize CDATA         #IMPLIED  -- riservato per un possibile uso futuro --
  >


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

<!--
 COLGROUP raggruppa un insieme di elementi COL. Ciò consente di raggruppare
 insieme una serie di colonne semanticamente correlate.
-->
<!ATTLIST COLGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- numero predefinito di colonne raggruppate --
  width       %MultiLength;  #IMPLIED  -- larghezza predefinita delle colonne racchiuse --
  %cellhalign;                         -- allineamento orizzontale nelle celle --
  %cellvalign;                         -- allineamento verticale nelle celle --
  >

<!--
 Gli elementi COL definiscono le proprietà di allineamento
 per le celle in una o più colonne.
 
 L'attributo WIDTH specifica la larghezza delle colonne, es.:

     width=64        larghezza in pixel a schermo
     width=0.5*      larghezza relativa di 0,5

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

<!--
    Usate THEAD per duplicare le intestazioni sulle pagine
    successive quando una tabella è interrotta dai margini
    della pagina, o per avere intestazioni statiche quando
    le sezioni TBODY sono riprodotte all'interno di riquadri
    con scorrimento.
	
    Usate TFOOT per duplicare i pie' di pagina sulle pagine
    successive quando una tabella è interrotta dai margini
    della pagina, o per avere pie' di pagina statici quando
    le sezioni TBODY sono riprodotte all'interno di riquadri
    con scorrimento.
	
    Usate più sezioni TBODY quando servono dei filetti per
    separare gruppi di righe di tabella.
-->
<!ATTLIST (THEAD|TBODY|TFOOT)          -- sezione 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 headers per le comuni tabelle -->
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">

<!-- TH è per intestazioni, TD per dati, ma per celle che svolgono entrambe le funzioni usate TD -->
<!ATTLIST (TH|TD)                      -- cella d'intestazione o di dati --
  %attrs;                              -- %coreattrs, %i18n, %events --
  abbr        %Text;         #IMPLIED  -- abbreviazione per cella d'intestazione --
  axis        CDATA          #IMPLIED  -- elenco di intestazioni correlate separato da virgole --
  headers     IDREFS         #IMPLIED  -- elenco di id per celle d'intestazione --
  scope       %Scope;        #IMPLIED  -- àmbito coperto da celle d'intestazione --
  rowspan     NUMBER         1         -- numero di righe su cui si estende una cella --
  colspan     NUMBER         1         -- numero di colonne su cui si estende una cella --
  %cellhalign;                         -- allineamento orizzontale nelle celle --
  %cellvalign;                         -- allineamento verticale nelle celle --
  >


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

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

<!-- L'elemento TITLE non è considerato parte del flusso di testo.
    Esso dovrebbe essere mostrato per esempio come intestazione di una
    pagina o come titolo di una finestra. Uno ed un solo titolo è richiesto
    per un documento.
    -->
<!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- titolo di documento -->
<!ATTLIST TITLE %i18n>


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

<!ELEMENT META - O EMPTY               -- metainformazioni generiche -->
<!ATTLIST META
  %i18n;                               -- lang, dir, da usare con il contenuto --
  http-equiv  NAME           #IMPLIED  -- nome di intestazione di una risposta HTTP  --
  name        NAME           #IMPLIED  -- nome di metainformazione --
  content     CDATA          #REQUIRED -- informazioni associate --
  scheme      CDATA          #IMPLIED  -- seleziona il genere di contenuto --
  >

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

<!ELEMENT SCRIPT - - %Script;          -- istruzioni di script -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- codifica del carattere di risorsa collegata --
  type        %ContentType;  #REQUIRED -- tipo di contenuto del linguaggio di script --
  src         %URI;          #IMPLIED  -- URI per uno script esterno --
  defer       (defer)        #IMPLIED  -- i PU possono differire l'esecuzione di uno script --
  event       CDATA          #IMPLIED  -- riservato per un possibile uso futuro --
  for         %URI;          #IMPLIED  -- riservato per un 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;                               -- lang, dir --
  >