Doctypes - documentsoorten

Techniek, toegankelijkheid en idealen

Katinka Hesselink 2006

Een doctype is een stuk code aan het begin van een HTML of XHTML of XML pagina die aan geeft, voor de browser, wat voor code er in de pagina gebruikt is. Een browser heeft echter zo'n doctype niet echt nodig. HTML en XHTML lijken namelijk zozeer op elkaar dat het meestal toch wel duidelijk is wat de browser er mee moet. Paradoxaal genoeg: de verschillen zijn ook zo duidelijk dat de browser wel weet wat hij er mee moet. 

XML is een ander verhaal: dat komt zo dicht bij een programmeertaal dat een browser geacht wordt een waarschuwing te laten zien als de code niet klopt. Voor een programmeertaal is dit volkomen logisch. Als je iets aan het uit rekenen bent, en de computer kan zien dat de code niet klopt, is de kans dat er een resultaat uit kan komen dat ook maar lijkt op wat je bedoelt hebt niet zo groot. 

HTML en XHTML zijn echter talen die niet meer hoeven te doen dan het ordenen en eventueel mooi neer zetten van informatie. Aangezien in de code duidelijk is wat de informatie is, en wat de code, kan een browser hier altijd wat mee, zelfs al klopt niet alles. Browsers hebben dan ook een traditie van tolerantie: Ze proberen er gewoon wat van te bakken, ook al klopt de code niet precies.

Webstandaarden

Met de komst van de beweging van de webstandaarden, is er ook een roep ontstaan voor technisch kloppende pagina's. Hiertoe heeft W3C validatoren in het leven geroepen. Deze zijn heel nuttig voor het opsporen van fouten als een pagina er niet uit ziet zoals je zou willen, in een of andere browser. W3C eist een kloppend doctype. Toch wel handig dus, zo'n doctype, en ach niet zo moeilijk toe te passen. Vandaar dat ik de HTML doctypes hieronder noem en uitleg.

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

Dit strikte (strict) doctype is er voor de mensen die HTML 4.01 precies kloppend gebruiken. Dit betekent vooral dat ze geen oudere tags gebruiken die in HTML 4.01 niet meer zijn toegestaan (de font -tag bijvoorbeeld). De EN staat voor Engels, maar heeft niets met de inhoud van de pagina te maken, maar met de taal van de codering (1). Vervolgens komt een URL (internetadres). Dit is het adres van de W3C-organisatie waar ik het eerder al over had. Op dit URL wordt precies uitgelegd (in codeer-taal tenminste) welke tags gebruikt kunnen worden in een HTML 4.01 document. Pagina's met dit doctype zullen CSS-stylesheets moeten gebruiken (intern of extern) voor de opmaak. Dit is de doctype die ik op dit onderdeel van deze website gebruik. Het valideert niet, omdat yahoo-geocities code aan de pagina toe voegt die niet valideert.

Een ander mogelijk doctype:

<!DOCTYPE HTML PUBLIC 
"-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

Dit doctype gebruik ik zelf doorgaans. Althans, zonder het internetadres, want ik heb nog geen HTML-editor gevonden die het er niet af haalt (nee, daar ben ik niet blij mee). HTML 4.01 transitional is het zelfde als de hiervoor genoemde, maar er kunnen in de de code zogenaamde 'depreciated elements' voorkomen. De hiervoor genoemde font -tag bijvoorbeeld wordt afgeraden. Met deze codering geef je als webmaster aan dat je je bewust bent van webstandaarden, maar dat het je nog niet helemaal lukt ernaar te programmeren. Veel browsers behandelen pagina's die zo'n doctype hebben in 'quirks-mode'. Pagina's met een transitional doctype kunnen CSS gebruiken voor de opmaak, zoals op mijn website gebeurt, maar kunnen ook kiezen voor 'presentational tags' die per pagina de opmaak regelen. 

<!DOCTYPE HTML PUBLIC 
"-//W3C//DTD HTML 4.01 Transitional//EN">

Dit is het doctype dat je op mijn website doorgaans zult vinden: het URL (of URI) is weg gelaten, maar verder het zelfde als de voorgaande. De meeste browsers gaan in quirks-mode bij dit document-type. Voordeel hiervan: IE6 gedraagt zich als IE5, zodat je zeker weet dat ook IE5 je pagina goed weer geeft. ( Maar zie: browserstatistieken )

<!DOCTYPE HTML PUBLIC 
"-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">

Deze document-soort is bedoeld voor pagina's met frames. 

Hierna volgen de doctypes voor XHTML:

<!DOCTYPE html PUBLIC 
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

Zoals je kunt zien zijn deze heel erg vergelijkbaar met de HTML doctypes. Ook hier heb je strict , transitional en frameset .

Conclusie

Online zul je mensen vinden die er vanuit gaan dat een nieuwe pagina altijd met een strict doctype gemaakt moet worden. Dit vind ik grote onzin. Als je HTML of XHTML gebruikt die voldoet aan de eisen van een strikte document-soort - dan moet je zeker een strict doctype gebruiken. Als je echter in de overgang zit van oud HTML naar nieuw HTML, gebruik dan Transitional.

Gebruik kortom dat doctype dat past bij jou pagina's en laat je niet opjutten. Het is fijn als je pagina gevalideerd wordt, maar het is niet het eind van de wereld als dat niet lukt. Zorg er wel voor dat je netjes codeert, zodat je in de buurt van validatie komt. Idealen zijn er om na te streven, niet om een dwangbuis te worden. Het echte leven vraagt soms om echte fouten. Kom je in de problemen met je code: plak een juist doctype op je document en laat het door W3C valideren (zie onderaan links-pagina onder Engelstalig). Valideren zal helpen met het oplossen van raadsels rond je opmaak.