Till startsidan för Jonas Webresurs

Vad är en DTD?

1. Inledning

På mina sidor om Html och Xml pratar jag ibland om "en DTD". Här tänker jag fördjupa mig lite i vad en sådan är och hur den används.

När man skapar hemsidor så kan man ju göra det på många olika sätt, t.ex med Html eller Xhtml. För att webbläsaren skall veta vilken kodstandard man använt måste man ange dess DTD. På det viset försäkrar man sig om att webbläsaren tolkar koden så som man tänkt.

2. Deklaration eller definition?

Termen "DTD" är en förkortning av det engelska uttrycket "Document Type Declaration". På svenska blir det "dokumenttypsdeklaration". En DTD ligger alltid överst på en webbsida och ser ut så här:

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

Varje deklaration innehåller också en dokumenttypsdefinition. Man kan säga att hela uttrycket är en "deklaration", som talar om dels att det är dokumenttypen som används (=DOCTYPE) och dels vilken definition som reglerar denna (=resten av uttrycket). Definitionen utgörs av filen "strict.dtd".

Eftersom man med DTD ibland menar deklarationen och ibland definitionen och skillnaden mest är teknisk och inte har särskilt stor betydelse i det praktiska arbetet, behöver man inte komma ihåg vilken som är vilken.

3. Vilken deklaration skall användas?

Den deklaration som finns i förra kapitlet är bara en av många. För Html och Xhtml finns dock i praktiken tre:

  • strict
  • transitional
  • frameset

strict
Innehåller alla element och attribut som är godkända eller "not deprecated" som det heter på engelska. Denna DTD är minst till omfånget och stödjer inte frames.

transitional
Innehåller allt i "strict" och dessutom alla element och attribut som inte är godkända. Innehåller dock normalt inte browserspecifika element och attribut.

frameset
Denna DTD innehåller allt som finns i transitional och dessutom element och attribut för frames.

Ett fullständigt Html-dokument kan se ut så här:

<!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=utf-8">
<title></title>
</head>

<body>
</body>
</html>

I ett Xhtml-dokument skriver man i stället:

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>

<body>
</body>
</html>

Jag har använt Transitional här, eftersom den är mer tillåtande. Information om relevanta länkar finns i Html- eller Xhtml-standarden, som finns att ladda hem från W3Cs webbsida. Eftersom definitionerna med jämna mellanrum flyttar eller uppgraderas kan det finnas anledning att någon gång per år kontrollera att den deklaration man angett fortfarande är aktuell.

Dessa tre är alltså de vanligaste, men det finns också andra DTD:er. Sådana kan utnyttjas för den som vill använda speciella teckenuppsättningar, browserspecifika element, osv. Varje sådan avvikande DTD måste då presentera en plats på nätet där definitionen för DTD:n går att ladda ner. Nerladdningen sköts då om av det program som skall tolka sidan, t.ex. webbläsaren.

I dokumentationen till Html och Xhtml finns ännu fler DTD:er. Man hittar t.ex en Sgml-DTD för Html som ser ut så här:

<!SGML "ISO 8879:1986 (WWW)"

Att läsa specifikationerna för Html, Xhtml, Css och andra webbspråk kan dock vara svårt för den som inte är van. Dokumentationen är ofta uttryckt i Sgml-kod och det kräver en del tålamod att försöka förstå vad som står. Men för den som verkligen vill veta hur ett element, attribut eller värde skall skrivas är detta arbete nödvändigt.

Den som vill veta mer om DTD kan läsa den information som finns på W3 Schools hemsida: www.w3schools.com/dtd


Den här sidan är en del av Jonas Webresurs - www.jonasweb.nu - copyright © 1998-2011