Altijd Strict Doctype ...
Wel, het verhaal van de Doctypes en de Quirksmode is een lang verhaal, dat alles te maken heeft met de geschiedenis van html en css, en ook niet in het minst met de eigenwijzigheid van de browsers in het verleden.
Ik zal proberen het kort samen te vatten.
In den beginne...
... was er html bedacht: een code om vrijwel pure tekst-bestanden (zoals in Kladblok) via internet van de ene naar de andere computer te krijgen. De opmaak was erg beperkt: koppen <h1>, <h2> enz., alinea's <p> en nog een paar dingen.
Met de komst van grafische weergave van Operating Systems en browsers ontstond er behoefte om "mooiere opmaak" te produceren. Aan de html werden zaken als <center> en de eigenschap align="right" toegevoegd.
De verschillende browsers (die toen een browseroorlog uitvochten) streden om de eer om er het mooiste van te maken. Dat deden ze allemaal op hun eigen manier, want er waren nog geen standaarden afgesproken...
Later ...
... begonnen er standaarden te komen en CSS werd uitgevonden om de opmaak geheel van de html te scheiden. Maar lang niet alle browsers hielden zich daaraan; met Internet Explorer als duister voorbeeld. De browsers hadden "quirks" (fratsen), en als geen Doctype was opgegeven (of er iets voorafgaand aan het DOCtype in de pagina stond) gingen de browsers over naar de Quirksmode: waarin ze hun eigen hobby's konden uitleven, want documenten met een ordentelijk Doctype konden ze niet goed renderen.
Toen ...
... werd er in december
1999 een nieuwe standaard voor html uitgeroepen:
html4.01. Daarbij werden een aantal tags (elementen) en eigenschappen (binnen de elementen) "
Deprecated" (= achterhaald) verklaard. Dat waren vooral dingen die veel beter met css geregeld konden worden. Bijvoorbeeld de <center>-tag en de align="...", en niet te vergeten de <font>-tag met al z'n verschillende eigenschappen.
In het
Strict Doctype mochten deze dingen niet meer: verbannen naar het rijk der vergetelheid.
Maar om oude, bestaande websites (die wel op andere punten aan de strict-standaarden voldeden) niet in één klap invalid html te verklaren, werd een overgangsvorm bedacht: het "
Transitional Doctype", ook wel "
Loose" (losse vorm) genoemd. Het was uitdrukkelijk niet de bedoeling dat
nieuwe websites daarvan gebruik zouden maken!
- Helaas zijn sinds 1999 nog hele volksstammen het Transitional Doctype gaan misbruiken om hun zonden te bedekken.

- En helaas gingen html-editor programma's ook lang niet altijd over tot het afschaffen van de Transitional-variant: die waren gebouwd op de <font>-tags e.d., en dat liet men voor het gemak maar zo.

Nu ...
...
ruim 10 jaar later, zou elke zich respecterende website toch wel het Strict Doctype moeten hanteren. Dat is ook het voorschrift van de
Webrichtlijnen: "
Voor nieuwe websites is de Strict variant verplicht" (zie
Richtlijn R-pd.2.4).
En voor zover ik weet is de Quirksmode al helemaal niet meer nodig, want sinds de tijd van IE5 en eerder is er het nodige veranderd.
Tot zover in het kort; maar er valt nog veel meer over te zeggen!
Meer info bijvoorbeeld op:
Nu de vragen uit nr.#7 hierboven.
Eerst nog even de lijsten waarop officieel staat aangegeven
wat Deprecated is aan elementen en attributen: die niet meer gebruikt zou mogen worden:
waar gaat deze lijst vanuit ? de quirksmode van de browser ? van welke doctype ?
Beide lijsten gaan uit van het "normale" geval: een
Strict doctype. Dan staat er in het kolommetje
Depr. niets ingevuld, en in het kolommetje
DTD (DocTypeDefinition) ook niets ingevuld - en dan mag het betreffende element of de betreffende eigenschap gewoon gebruikt worden.
Staat er in de kolom
Depr. echter een
D, dan is het element of de eigenschap Deprecated, en staat in de kolom
DTD een
L - d.w.z. in de Strict variant is het nog steeds invalid html, maar met een (Loose =)
Transitional Doctype is het nog toegestaan.
Empty: wat houdt dit in ? Zoiets als <div id="naam">empty?</div>
Nee, het gaat hier om een "leeg" element zoals een <hr> of een <br>: een horizontale lijn of een verplichte nieuwe regel heeft geen inhoud in dat element zitten (<hr>piep</hr> of <br>piep</br> bestaat niet). Hetzelfde geldt voor de <meta> elementen in de <head>: deze hebben wel eigenschappen (binnen de tag zelf), maar geen inhoud.
Omdat elk element in xhtml ook een afsluit-aanduiding nodig heeft om "well-formed" te zijn (elk begin moet een eind hebben) wordt ingeval van xhtml de afsluiting geregeld in het element zelf, met de bekende eind-slash: <hr />, <br />, <meta .... />.
Loose DTD (Doctype Definition) wat houd dit in ?
Dat is dus hetzelfde als Transitional.
Mijn conclusie
Wat in 1999 al achterhaald was, is in 2011 (enz.) ook achterhaald! :d
Met vriendelijke groet,
CSShunter
PS:
Nog een Helaas: