Doctype e quirk mode
I documenti SGML (Standard Generalized Markup Language) devono conformarsi ad una
DTD (Document Type Definition). Il W3C consortium, per gli standard web, ha definito
l'HTML, a partire dalla versione 3.2, come un'applicazione SGML che, pertanto, deve
rientrare negli standard internazionali ISO 8879.
La DTD di un documento ne definisce i marcatori e la sintassi, ragione per cui
una pagina HTML deve contenere un <!DOCTYPE> (o Document Type Declaration) per essere
valida.
Esistono diversi tipi di doctype ed in ognuno di essi è contenuta la versione ed la DTD
cui la pagina è conforme.
Questo è il doctype di questa pagina:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
riconosciamo subito la DTD seguita dalle versione dell'HTML utilizzato, nella parte finale
abbiamo "Transitional", questa è la definition del documento.
Esistono diverse definition:
- Strict: esclude gli elementi di presentazione per tag ed attributi che vengono affidati
ai CSS;
- Transitional: comprende tag ed attributi "deprecati" a carattere presentazionale, risulta
pertanto la più permissiva;
- Frameset: viene utilizzato quando una pagina viene suddivisa in frames, al posto
dell'elemento body si trova l'elemento frameset, ma per il resto è identica alla
Definition Transitional.
Tabella riassuntiva DTD:
| Versione | Doctype |
| HTML 2.0 | <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| HTML 3.0 | <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN//"> |
| HTML 3.2 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN" "http://www.w3.org/TR/REC-html32"> |
| HTML 3.2 + URI | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> |
| HTML 4.0 Strict | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> |
| HTML 4.0 Strict + URI | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> |
| HTML 4.0 Transitional | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
| HTML 4.0 Transitional + URI | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> |
| HTML 4.0 Frameset | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"> |
| HTML 4.0 Frameset + URI | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" "http://www.w3.org/TR/REC-html40/frameset.dtd"> |
| HTML 4.01 Strict | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> |
| HTML 4.01 Strict + URI | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
| HTML 4.01 Transitional | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| HTML 4.01 Transitional + URI | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| HTML 4.01 Frameset | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> |
| HTML 4.01 Frameset + URI | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> |
| XHTML 1.0 Strict | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"> |
| XHTML 1.0 Strict + URI | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| XHTML 1.0 Transitional | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"> |
| XHTML 1.0 Transitional + URI | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| XHTML 1.0 Frameset | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"> |
| XHTML 1.0 Frameset + URI | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> |
| XML + XHTML 1.0 Strict | <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"> |
| XML + XHTML 1.0 Strict + URI | <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| XML + XHTML 1.0 Transitional | <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"> |
| XML + XHTML 1.0 Transitional + URI | <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| XML + XHTML 1.0 Frameset | <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"> |
| XML + XHTML 1.0 Frameset + URI | <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> |
| XHTML Basic 1.0 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN""http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"> |
| XML + XHTML Basic 1.0 | <?xml version="1.0" encoding="uft-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN""http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"> |
| XHTML 1.1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
| XML + XHTML 1.1 | <?xml version="1.0" encoding="uft-8"?> < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
| WML 2.0 | <!DOCTYPE HTML PUBLIC "-//WAPFORUM//DTD WML 2.0//EN" "http://www.wapforum.org/DTD/wml20.dtd"> |
Quirk mode
Con l'uscita di Internet Explore 5 viene data la possibilita di scegliere
se far lavorare il browser in modalità standard o retrocompatibile (quirk) a
seconda del Doctype utilizzato, le modalità di utilizzo sono:
- standard
- quirk o retrocompatibile;
- almost standard, introdotto con Mozilla release 1.1 e Netscape 7.
Tabella riassuntiva :
| Doctype | IE5.X | IE 6.x | Mozilla | Mozilla 1.1 in su |
| HTML 2.0 | Quirk | Quirk | Quirk | Quirk |
| HTML 3.0 | Quirk | Quirk | Quirk | Quirk |
| HTML 3.2 | Quirk | Quirk | Quirk | Quirk |
| HTML 4.0 Strict | Standard | Standard | Standard | Standard |
| HTML 4.0 Transitional | Quirk | Quirk | Quirk | Quirk |
| HTML 4.0 Frameset | Quirk | Quirk | Quirk | Quirk |
| HTML 4.01 Strict | Standard | Standard | Standard | Standard |
| HTML 4.01 Transitional | Quirk | Quirk | Quirk | Quirk |
| HTML 4.01 Frameset | Quirk | Quirk | Quirk | Quirk |
| XHTML 1.0 Strict | Standard | Standard | Standard | Standard |
| XHTML 1.0 Transitional | Standard | Standard | Standard | Standard |
| XHTML 1.0 Frameset | Standard | Standard | Standard | (A)Standard |
| XML + XHTML 1.0 Strict | Standard | Quirk | Standard | Standard |
| XML + XHTML 1.0 Transitional | Standard | Quirk | Standard | (A)Standard |
| XML + XHTML 1.0 Frameset | Standard | Quirk | Standard | (A)Standard |
| XHTML Basic 1.0 | Standard | Standard | Standard | Standard |
| XML + XHTML Basic 1.0 | Standard | Quirk | Standard | Standard |
| XHTML 1.1 | Standard | Standard | Standard | Standard |
| XML + XHTML 1.1 | Standard | Quirk | Standard | Standard |
| XML | Standard | Standard | Standard | Standard |
Legenda: (A)standard - almost standard.
Ripropongo questo utile test, nella versione originale, trovato sul sito Html.it.
Il JavaScript restituirà una finestra di alert con valore la scritta "strict=true" se il
browser funziona in modalità Standard, oppure "strict=false" se il browser funziona in
modalità Quirk.
Fonte [
HTML.it]