DTD - Document Type Declaration i (x)html

Hop længere ned på siden, til:

Siden er opdateret 20. 3. 2009

De fleste nyere browsere har to måder at vise en hjemmeside på:

  1. Quirks-mode, hvor browseren forsøger at efterligne tidligere versioner af samme browers ofte fejlagtige måde at vise en hjemmeside.
  2. Standard-mode, hvor browseren holder sig til den af W3C anbefalede standard for, hvordan en hjemmeside skal vises.

Dertil skal så siges, at selv om f.eks. css2-standarden er flere år gammel, er det endnu ikke alle elementer i css1-standarden, der er blevet implementeret i IE 6 - i IE 7 er så vidt vides alle elementer fra css1 blevet implementeret og også de fleste fra css2-standarden. Man kan således sige, at IE 7 er en væsentlig og tiltrængt forbedring i forhold til IE 6. Bare synd, at IE 7 ikke bliver tilgængelig for brugere med Windows 2000 som styresystem.

Men for at du kan være bare nogenlunde sikker på, at de nyere browsere viser din hjemmeside rimeligt ens, er du selv i dit udviklingsarbejde nødt til at overholde de standarder, der er anbefalet af W3C.

Dette indebære, at du skal have din side valideret. Men for at validatoren (hvad enten du bruger W3C eller WDG) kan validere din side, er det nødvendigt at fortælle validatoren hvilken standard du tilstræber.

Til det formål indsætter man øverst i kildekoden en dokumenttypedeklaration (DTD - Document Type Declaration). Der er flere forskellige muligheder, jeg vil her nævne de 4 vigtigste:

  1. html 4.01 transitional
  2. html 4.01 strict
  3. xhtml 1.0 transitional
  4. xhtml 1.0 strict
  5. xhtml 1.1 - brug af denne DTD vil jeg fraråde, hvis du ikke er tvunget til det.
  6. html5

Ud over disse seks var der tidligere versioner af html, den seneste hed 3.2. Der var (er) også html 4.01 frameset, se herunder.

DTD til html 3.2 er det helt irrelevant at beskæftige sig med, der er næppe browsere på markedet, der ikke forstår version 4.01.

DTD til html 4.01 frameset er kun brugbar til indsættelse på framesets. Men da der er mange grunde til at fraråde brug af denne forældede teknik, vil jeg ikke komme nærmere ind på den DTD her.

DTD til xhtml 1.1 er det heller ikke relevant at beskæftige sig med, med mindre man vil lave hjemmesider på østasiatiske sprog - ja, det er helt alvorligt ment: Eneste forskel på 1.0 og 1.1 er en understøttelse i xhtml 1.1 netop for østasiatiske tegnsæt med dertil hørende typografiske standarder.

Desuden bør xhtml 1.1 fra serveren ikke sendes som "text/html", men derimod som "application/xhtml+xml", hvilket IE ikke fatter en lyd af. Og da IE stadig sidder på omkring ¾ af markedet, vil det være galimatias ikke at tage hensyn til det.

^ Tilbage til sidens top


Hvilken DTD skal du bruge?

Som grundregel vil jeg her sige, at man bør vælge den seneste version DTD: Strict frem for transitional, hvis det er muligt og xhtml 1.0 frem for html 4.01, hvis det er muligt. Men hvordan skal det forstås og hvordan gøres det i praksis?

Det skal forstås sådan, at fremtidens browsere ikke kan påregnes at understøtte forældede standarder. Derfor kan man - især, når man starter på en ny side, men også når en ældre side skal opdateres - lige så godt gå efter xhtml 1.0 strict.

Du bør derfor så tidlige som muligt i udviklingsfasen sætte dig ind i, hvordan der skal kodes korrekt i xhtml: Alle tags skal afsluttes og ingen tags må skrives med store bogstaver. Der er flere ting, men det kan du læse om på den side, jeg henviste til.

Undervejs mens du skriver - og løbende validerer det foreløbige resultat - kan du komme i den situation, at du er nødt til at bruge et element, der ikke er valid kode i xhtml 1.0 strict. Det skal du nu ikke lade slå dig ud af kurs. Fortsæt med at lave siden færdig, og hold ved de løbende valideringer øje med, at kun dette ene nødvendige element giver valideringsfejl.

Når siden så er helt færdig og valideringen stadig kun brokker sig over det ene ulovlige element, ændrer du DTD'en til xhtml 1.0 transitional og validerer siden igen. Nu skulle du gerne stå i den situation, at sidens kildekode erklæres valid.

Hvis du undervejs i udviklingen af din hjemmeside lader dig friste til at ændre DTD til transitional, bare for at undgå den ene fejlmelding, løber du en risiko for at få indført en masse forældet kode, som du ikke behøver at bruge. Derfor bør du vente med ændringen af DTD, indtil du er helt færdig med siden.

^ Tilbage til sidens top


De forskellige DTD-versioner

I kodeboksene herunder er det kun linjen, der begynder med <!DOCTYPE html, der er DTD. Resten af kodeboksens indhold er kun medtaget for at vise den korrekte placering af tegnsætdefinitionen i de enkelte (x)html-versioner

DTD til html 4.01 transitional:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

Første kodelinje er DTD'en. Læg mærke til, at den afsluttes med en url til det dokument, der definerer de lovlige html-elementer. Uden denne url vil browserne gå i quirks-mode.
Anden linje er html-dokumentets starttag. Tredje linje er starttag for html-dokumentets head. Fjerde linje er content-type-deklarationen, der oplyser browseren om det anvendte alfabet.


DTD til html 4.01 strict:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

Læg her mærke til, at der - ud over den anderledes DTD-erklæring - også kaldes et andet dokument i url. Dette fordi der i strict html ikke indgår helt så mange elementer som i transitional (transitional html indebærer, at en masse forældede elementer stadig anerkendes som valide.


DTD til xhtml 1.0 transitional:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

Her skal du især lægge mærke til html-tagget, der er blevet udvidet. Du kan ikke længere nøjes med den korte form, der er den eneste rigtige i html 4.01 og tidligere versioner.

Læg også mærke til, at DTD - som det eneste tag i xhtml - ikke skal lukkes. Det skal altså ikke have tilføjet " /", som ellers i xhtml bruges til at lukke de elementer, der i html ikke har et sluttag.


DTD til xhtml 1.0 strict:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

Som ved html 4.01 er der her ved xhtml 1.0 forskel på både Dokument Type Deklarationen og på det dokument, der definerer de lovlige elementer alt efter om man vælger transitional eller strict.


DTD til xhtml 1.1:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">
<head>

Læg mærke til, at her er tegnsætdefinitionen flyttet op før DTD. Sådan skal det efter W3C's anvisninger være i xhtml 1.1. Men det får under alle omstændigheder IE til at gå i quirks-mode, så alene af den grund vil jeg fraråde at bruge denne DTD.

Når dertil lægges, at korrekt dokumentparsing på serveren (sendes som "application/xhtml+xml"), som IE slet ikke kan vise og at den eneste reelle forskel på xhtml 1.0 strict og xhtml 1.1 er en tilføjet understøttelse for brug af diverse østasiatiske alfabeter, skal der en rigtig god undskyldning til, for at anvende xhtml 1.1

Læg i øvrigt mærke til, at i xhtml 1.1 eksisterer der ikke en transitional version - der skal således ikke defineres strict, det er nemlig den eneste mulighed.


DTD til html 5:

<!DOCTYPE html>

Så enkelt gøres det i html5. Ikke noget med at angive url til Doctype Definition.

Læg i øvrigt mærke til, at i html 5 eksisterer der ikke en transitional version - der skal således ikke defineres strict, det er nemlig den eneste mulighed.

^ Tilbage til sidens top


Quirks- eller standards-mode?

De fleste nye browsere har to forskellige måder at vise en webside på:

quirks-mode
Her forsøger browseren at vise siden sådan, som tidligere versioner af browseren gjorde (med fejl i forhold til standarden) - fordi der dengang ikke var defineret en fælles standard.
standards-mode
Her viser browseren siden i henhold til den standard, som W3C har defineret.

Da de forskellige fabrikater browsere førhen havde meget forskellige måder at tolke html-koderne på - her især meget forskellige måder at vise margin og padding - kan du se en fordel i at tilstræbe standards-mode på dine websider.

Sætter du standards-mode, betyder det groft sagt, at alle nyere browsere viser din webside nogenlunde ens.

Når vi nu ved det, er det også en god ide at være klar over, hvordan man med websidens koder styrer browsernes måde at vise siden. Til det formål kan opstilles en enkel regel:

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

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

Disse to DTD'er sætter alle browsere i quirks-mode.


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

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

Disse to DTD'er sætter alle browsere i standards-mode.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">

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

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

Disse fire DTD'er sætter alle browsere i standards-mode.


Endelig skal du vide, at IE går i quirks-mode, hvis der før DTD står noget som helst eller hvis der bare er indtastet et mellemrum eller et linjeskift før DTD.

Undtaget fra denne sidste regel er selvfølgelig eventuelle serverside-koder - asp eller php - som ikke skriver nogen html-koder til siden før DTD. At disse koder ikke har indvirkning på visningsmåden skyldes, at koderne afvikles på serveren. Browseren ser dem slet ikke.

^ Tilbage til sidens top

Valid XHTML og CSS / Copyright © Hjemmesideskolen september 2004
Hjemmesideskolen
Du er her: Forsiden - html - elementer - DTD - Document Type Declaration i (x)html
sidens top
Brugere lige nu: 1
Home Mail