HTML

DTD, Document Type Definition

Som du kanske har sett är det första man ser i koden till en vanlig webbsida inte <html>-taggen, som man skulle kunna förvänta sig, utan något som som heter <!DOCTYPE>. Detta är egentligen inte en HTML-tagg i vanlig mening, utan något som är gemensamt för många typer av märkspråk (Markup), nämligen en Document Type Definition (dokumenttypsdefinition). DTD-”taggen” talar om för en programvara, oftast en webbläsare, vad det är för sorts dokument, mer detaljerat än en <html>-tagg kan göra.

Titta på det här exemplet på en DTD:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Först av allt ser vi ett utropstecken, liksom när vi skriver en kodkommentar. Direkt efter detta kommer ordet DOCTYPE, alltid skrivet med versaler, följt av "html", eftersom det är en typ av HTML-dokument. Sedan följer två olika sätt att tala om var resten av DTD:n finns, som du kan se är det sista en vanlig HTTP-URL där webbläsaren kan hitta all information om hur dokumentet ska tolkas. Denna är dessutom fullt läsbar av människor.

Den aktuella standarden för HTML i dagsläget är HTML4.01, alternativt den XML-anpassade varianten XHTML1 (eller XHTML1.1, båda gäller). För dessa finns dessutom vardera tre olika varianter, nämligen Strict, Transitional och Frameset.

  • I Strict-varianterna är inte taggar som är under avveckling (deprecated) tillåtna, i praktiken handlar detta om taggar som bara handlar om sidans utseende.
  • Transitional-varianterna tillåter även taggar som är märkta med deprecated hos W3C.
  • Frameset-DTD tillåter utöver dessa även Frames, HTML-ramar, en teknik som var vanlig förr, men sällan används idag.

DTD:erna förändras i grunden i och med HTML 5. För ett dokument skrivet i HTML 5 är DTD:n mycket enklare än tidigare:

<!DOCTYPE HTML>

Thats it! Inget versionsnummer, inga varianter.

Tänk bara på att HTML 5 inte är fastslagen standard utan kan förändras. Det är fortfarande mycket i HTML 5 som inte stöds av webbläsarna. Vill man vara säker så är det fortfarande HTML 4.01 som är det klokaste valet.

Jag kan inte rekommendera att du skriver in sina DTD:er själv, eftersom det är noga att de skrivs på exakt rätt sätt, använd hellre klipp-och klistra. Alla korrekta DTD:er finns att klippa och klistra hos W3C, där finns också en praktisk dokumentmall att kopiera (XHTML1.0 strict).

Hur ska jag välja doctype?

Det första valet kan vara att välja om du ska ha vanlig HTML eller XHTML. XHTML är ju skrivet efter standarden XML, vilket innebär att du bara får använda gemener i dina taggar och att alla taggar utan sluttagg måste avslutas med ett snedstreck. Dessutom måste du lägga till attributet xmlns (XML namespace) till <html>-taggen. I ett XHTML-dokument skrivs alltså <html>-taggen: <html xmlns="http://www.w3.org/1999/xhtml">.

Det kan kännas enkelt att välja en transitional-DTD, eftersom man då inte behöver vara lika noggrann med vilka taggar man väljer. Det finns dock ett bra argument för att välja en strict-variant. Om du redan från början undviker taggar som är på väg att avskaffas (deprecated) har du mindre att städa bort när du ska uppgradera ditt dokument till en nyare standard i framtiden.

Frameset behöver du sannolikt inte använda, eftersom framessidor är ett ovanligt specialfall.

Länk till aktuella DTD:er.

Korrekt HTML 4.01-mall med DTD och teckenuppsättning (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=UTF-8">
   <title></title>
</head>
<body>

</body>
</html>

Korrekt HTML 5-mall med DTD och teckenuppsättning

<!DOCTYPE html>
<html>
<head>
   <title></title>
   <meta charset="UTF-8">
</head>
<body>

</body>
</html>