Introduzione ai CSS - La DTD
Monday 8 October 2007 Marco Bertoni, ultimo aggiornamento: Tuesday 19 August 2008.
Qual'è lo scopo della dichiarazione DOCTYPE?
La dichiarazione DOCTYPE specifica:
- il tipo di elemento radice del documento, per esempio
HTML; - un identificatore pubblico, per esempio:
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"; - il system identifier:
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
Esempi di DTD:
HTML 4.01 Strict
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
XHTML 1.0 Strict
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Enfatizza la separazione del contenuto dalla presentazione e dal comportamento: non sono consentiti marcatori presentazionali, deve essere utilizzata in congiunzione con i Fogli di stile (CSS).
XHTML 1.0 Transitional
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Contiene elementi e attributi presentazionali deprecati nella DTD Strict. E' però necessaria per le pagine contenute nei frame perché consente di utilizzare l'attributo target.
XHTML 1.0 Frameset
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
Consente l'utilizzo dei frame. I frame sono deprecati dal W3C e proibiti dalla L. 4/2004.
Cosa contiene la DTD?
Il contenuto della DTD (e cioè il contenuto del file richiamato con il system identifier, per esempio: xhtml1-strict.dtd) specifica:
- Qual è l'elemento di partenza del documento (HTML).
- Quali elementi sono ammessi.
- Qual è lo scopo di ogni elemento e quando deve essere usato.
- Quali elementi possono essere annidati all'interno di quali elementi e quante occorrenze sono ammesse.
- Quale tipo di contenuto e in che forma può essere inserito all'interno degli elementi.
- Quali attributi sono ammessi.
- Qual è lo scopo di ogni attributo e quando deve essere usato.
- Quali attributi possono essere inseriti in quali elementi.
- Quali valori e che forma possono prendere i vari attributi.
Ecco uno stralcio del contenuto di una DTD (elemento A):
<!--================== The Anchor Element ================================--><!-- content is %Inline; except that anchors shouldn't be nested --><!ELEMENT a %a.content;><!ATTLIST a%attrs;%focus;charset %Charset; #IMPLIEDtype %ContentType; #IMPLIEDname NMTOKEN #IMPLIEDhref %URI; #IMPLIEDhreflang %LanguageCode; #IMPLIEDrel %LinkTypes; #IMPLIEDrev %LinkTypes; #IMPLIEDshape %Shape; "rect"coords %Coords; #IMPLIED- >
Il prolog XML
<?xml version="1.0" encoding="UTF-8"?>
E' previsto prima della dichiarazione DOCTYPE nei documenti XHTML validi ma non è obbligatorio.
Il browser IE 6 attiva la modalità Quirks che, essenzialmente, corrisponde a un'implementazione non standard di CSS, se è presente il prolog XML. Il problema è stato risolto con IE 7, ma si consiglia, per assicurare la retro compatibilità, di non inserire il prolog nei documenti XHTML.


Monday 8 October 2007 15:19
[...] *08.10.2007: Integro con un articolo recente di Marco Bertoni [...]
Tuesday 9 October 2007 14:42
[...] Qui l’articolo originale da semplicemente.org « precedente [...]
Saturday 19 July 2008 12:03
Ma tra XHTML 1.0 Transitional e Strict l’unica differenza importante riguarda l’utilizzo dei frame?
In una pagina che non utilizza frame che motivi avrebbe l’autore per fare una DTD Transitional?
Saturday 19 July 2008 12:57
Ciao Ciel :)
Se intendi dire che quando si utilizza una DTD Frameset allora le pagine richiamate nei frame devono giocoforza essere Transitional per poter utilizzare l’attributo
targetallora ok. In una pagina senza frame non ci sono motivi per utilizzare il Transitional, a meno che non ti trovi nella situazione di dover migrare a XHTML un sito di enormi dimensioni e pieno di markup “sporco”, in questo caso usi il Transitional, che come dice il nome, deve essere considerato come una “transizione” alla DTD Strict. Sempre che tu non debba garantire la conformità alla 4/2004, nel qual caso il Transitional è proibito.Attenzione però che Transitional, Strict e Frameset sono tre DTD differenti. Tre “scelte” diverse che lo sviluppatore può fare. Ognuna delle quali è perfettamente accettabile. Per una descrizione chiara e semplice delle differenze tra Strict e Transitional consiglio l’articolo Transitional vs. Strict Markup di Roger Johansson.
Sunday 20 July 2008 17:46
Grazie davvero ^.^/