DOCtype MiniWiki
Hoi Marc,
Ja, dat is kort samengevat wat het betekent. Ik doe een poging er wat meer over te vertellen.
Vuistregel: elke zichzelf en de bezoekers respecterende webpagina begint met een geldig DOCtype. Want dit geeft aan hoe de browsers moeten omgaan met alle html-code die daarna komt.
- Voorafgaand aan de regel met de DOCtype-declaratie mag er helemaal niets aan code staan: geen enkel letterteken, geen spatie, geen nieuwe regel, en geen commentaar-regel. Anders werkt het niet!
- Hierbij is er voor zover ik weet één uitzondering: er mag eventueel een "php-header" geplaatst worden zonder dat er ongelukken gebeuren.
Met een DOCtype horen alle browsers een pagina op precies dezelfde manier weer te geven. De browser komt in de zogenaamde "
Standards mode", en moet werken volgens de standaard-voorschriften die in het DOCtype worden aangegeven. Deze standaarden zijn browser-onafhankelijk. Het is al lastig genoeg dat browsers niet altijd de standaarden volgen!
Een html-pagina
zonder DOCtype schiet in de zogenaamde "
Quirks mode", vrij vertaald: de "nukken en grillen-toestand", waarin browsers kunnen aanrotzooien wat ze willen. Je moet dan ook niet vreemd staan te kijken als één pagina er op 3 browsers 3 keer anders uitziet. - Dit stamt uit de tijd van de grote browseroorlog van zo'n tien jaar geleden, toen Microsoft (Internet Explorer) probeerde met eigen html-codes en eigen foefjes de andere browsers uit de markt te drukken.
In forums kwam je dan vaak het volgende tegen:
Vraag:
Mijn pagina doet het goed in Internet Explorer, maar fout in Firefox. Wat moet ik doen om Firefox het ook goed te laten doen?
Antwoord:
Het is eigenlijk precies andersom. Firefox volgt de standaarden en doet het goed: je code is verkeerd. Dit wordt in Internet Explorer gemaskeerd, omdat Internet Explorer het gebruik van een aantal ongeldige ("IE only") eigenschappen toejuicht/toestaat. Dit geldt vooral als de pagina met FrontPage (ook van Microsoft) is gemaakt, of als je per ongeluk verkeerde handleidingen hebt gebruikt (die zijn er helaas!). De oplossing is: alle oneigenlijke codes er uit gooien (de html-validator biedt hulp), en dan de pagina werkend maken voor Firefox.
Waarschijnlijk blijven er dan een aantal punten over waarop Internet Explorer (of één of meer van de IE-versies) het niet goed doet, maar dat zijn IE-bugs (daar zijn er helaas veel van!). Er bestaan hacks en omwegen om IE tot de orde te roepen. - Maar kom gerust terug op het forum als je een IE-fout tegenkomt!
Langzamerhand gaat ook IE het steeds beter doen, maar het is nog steeds aan te bevelen: ontwerp een pagina voor Firefox/Opera/Safari/Chrome, en maak daarna noodzakelijke aanpassingen voor Internet Explorer. En: altijd live testen in verschillende browsers!
Maar terug naar het DOCtype.
Je kunt als basistaal
html of
xhtml gebruiken.
Een aantal jaar geleden kwam xhtml in opkomst, als je het mij vraagt vooral omdat het "in" was en erg "web 2.0": xhtml zou de toekomst worden voor internet. - Wat de meeste o zo moderne xhtml-aanhangers niet wisten, is dat ze geen zuivere xhtml gebruikten.
Kort gezegd: eigenlijk is xhtml een sub-vorm van xml, dat aan een aantal strenge regels kent. Met het achtervoegsel .xhtml geef je de browser de opdracht om html na te doen, en dan hoeven die strenge regels gedeeltelijk niet. In onderstaande link wordt precies uitgelegd wat er aan de hand is, met als waarschuwing vooraf:
Beginners should acquire in-depth knowledge about both HTML standard and XHTML standards before releasing anything with a doctype-declaration that spells XHTML. HTML and XHTML are two completely different “animals”, but that doesn't show when we use XHTML to mimic HTML in a HTML environment.
Georg Sortun: www.gunlaug.no/contents/wd_1_06_03.html.
In de praktijk komt het er op neer dat de meeste "xhtml"-pagina's gewone html-pagina's zijn, met als grootste verschil een serie extra slashes /> op het eind van een aantal tags, en alle tags en eigenschappen in kleine letters (dat laatste deed ik toch al).
[Edit]Ook een verschil: in xhtml moeten alle andere tags die geopend worden, afgesloten worden met hun eigen eind-tag (en dat doe ik bij html ook al: het hoeft niet in html, maar het kan wel, en is een goede gewoonte; zie toelichting in de reacties hieronder).[/edit]
Verder volgt xhtml voor 99% de richtlijnen van de html4.01-standaard. Dan kan je net zo goed die gewone html gebruiken!
Daarbij komt, dat de huidige versie van de gewone html,
html4.01, in de lift zit en
html5 er aan zit te komen. Het idee dat xhtml de (enige) opvolger van html zou worden, is daarmee zo ongeveer van de baan.
Mijn conclusie: ik gebruik gewoon het
html4.01 DOCtype, om later makkelijk naar html5 over te kunnen stappen.
[Edit]Hiervoor is de variant
html4.01 Strict DOCtype het meest geschikt, want daar sluit html5 op aan.[/edit]
De drie varianten.
Voor zowel html als voor xhtml kan je kiezen uit 3 varianten DOCtype.
De
Frameset variant, voor als je een framewset wilt definieren voor een uit frames op gebouwde site.
De
Strict variant, streng maar rechtvaardig, en de beste garantie voor dezelfde pagina in verschillende browsers.
De
Transitional variant ("Overgangsvariant"), die vergeeflijker is en een aantal onregelmatigheden slikt. Deze was bedoeld als tussenfase zolang browsers nog niet goed overweg konden met de Strict variant, en voor websites die nog vol zaten met "oude codes" die intussen afgekeurd waren. Voor een nieuw te bouwen website is deze variant dus ernstig af te raden.
- In de praktijk kan het een enkel keertje nodig zijn om een beroep te doen op deze Transitional variant (als er bv. persé een nieuwe pagina in een nieuw venster moet openen; wat in het algemeen af te raden is), maar dan nog kan de pagina het best ontworpen en getoetst worden met de Strict variant, om het DOCtype op het laatst om te zetten naar Transitional.
Mijn conclusie is dat ik deze gebruik:
Code:
[FONT="Courier New"][SIZE="2"][COLOR="DarkGreen"]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">[/COLOR][/SIZE][/FONT]
Het volgende verplichte nummer is een goede omschrijving van de (letter)tekens die in het document gebruikt gaan worden. Anders weet een browser óók niet waar hij/zij aan toe is. Dit wordt opgegeven met de "
charset", en ook dat hoort zo hoog mogelijk in de html-code te staan. Als meest universele charset wordt met klem
utf-8 aanbevolen, dus dat doe ik.
Daarmee wordt het standaard begin van mijn code:
Code:
[FONT="Courier New"][SIZE="2"][COLOR="DarkGreen"]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="nl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Mijn succescode</title>
enz.[/COLOR][/SIZE][/FONT]
Tot zover: nu jouw pagina nog!
Maar eerst even pauze om op adem te komen: wordt vervolgd.
Met vriendelijke groet,
CSShunter