Denna sida kan innehålla tecken som inte är av typen Latin. Använd snabbval "n" för att hoppa till interna navigeringslänkar i dokumentet. För närvarande kan du
Denna artikel beskriver kortfattat några, ofta överraskande, effekter som uppstår då servrar sänder XHTML till användarprogram (t.ex. webbläsare), och hur vanligt förekommande användarprogram använder den uppmärkta text de mottar. Den beskriver implementationsspecifika frågor snarare än W3C-standarder.
Innehållet är taget ur ett informationsmaterial om hur man skall deklarera teckenkodning i HTML- och XHTML-dokument. Sådana områden har en direkt bäring på hur man levererar innehåll. Denna information är också användbar för att förklara varför formattering med CSS inte alltid ger det som man förväntade sig, eller varför de ser olika ut i olika användarprogram.
När en server sänder ett dokument till ett användarprogram (t.ex. en webbläsare) så sänds också information, i Content-Type-fältet i HTTP-huvudet, som talar om vilket dataformat som används. Denna information uttrycks med hjälp av en fördefinierad MIME-typ. Nedan följer ett exempel på en HTTP-header för en HTML-fil som använder MIME-typen 'text/html'. Lägg märke till att Content-Type-fältet också kan tala om vilken teckenkodning dokumentet är uttryckt i.
HTTP/1.1 200 OK
Date: Wed, 05 Nov 2003 10:46:04 GMT
Server: Apache/1.3.28 (Unix) PHP/4.2.3
Content-Location: CSS2-REC.en.html
Vary: negotiate,accept-language,accept-charset
TCN: choice
P3P: policyref=http://www.w3.org/2001/05/P3P/p3p.xml
Cache-Control: max-age=21600
Expires: Wed, 05 Nov 2003 16:46:04 GMT
Last-Modified: Tue, 12 May 1998 22:18:49 GMT
ETag: "3558cac9;36f99e2b"
Accept-Ranges: bytes
Content-Length: 10734
Connection: close
Content-Type: text/html; charset=utf-8
Content-Language: en
En server sänder vanligtvis HTML 4.01-filer med MIME-typ 'text/html'. HTML är en SGML-tillämpning.
När man hanterar XHTML 1.0, som är en XML-tillämpning, så är läget inte lika enkelt.
I många fall föredrar man att använda XHTML, på grund av de fördelar som XML ger vid redigering eller behandling av dokument. Men fortfarande brister det i XML-stödet i populära webbläsare, så många XHTML 1.0-dokument levereras i praktiken med MIME-typ 'text/html'. I så fall kommer användarprogrammet att hantera dokumentet som om det vore HTML.
För att undvika att de subtila skillnaderna mellan XML och HTML ställer till problem för äldre användarprogram, så bör man, då man levererar XHTML som HTML, alltid följa de kompatibilitetsråd som anges i Appendix C av XHTML-specifikationen. Dessa kompatibilitetsråd rekommenderar bl.a. att man bör ha ett blanktecken före det avslutande '/>' i ett tomt element (såsom img, hr eller br), att man alltid använder både attributet id och attributet name vid identifierare för fragment, etc.
XHTML 1.0 kan också levereras som XML, och XHTML 1.1 levereras alltid som XML. För att leverera XHTML som XML så skall du använda endera av MIME-typerna 'application/xhtml+xml', 'application/xml' eller 'text/xml'. W3C rekommenderar att du använder det första alternativet då du levererar XHTML som XML - dvs 'application/xhtml+xml'.
Att XHTML kan levereras antingen som HTML eller som XML har betydelse för hur man deklarerar teckenkodningen.
Dagens populära webbläsare kan visa ett HTML-dokument antingen i standards mode eller i quirks mode. Detta betyder att olika regler används vid presentation av dokumentet: den ena som följer W3C:s standardiserade tolkning av förväntat beteende, och den andra som återskapar det beteende hos äldre webbläsare som avviker från standarder.
Skärmdumpen nedan illustrerar några av dessa skillnader.
Ett dokument presenterat i standards mode. | Samma dokument presenterat i quirks mode. |
![]() | ![]() |
Bland de skillnader som syns ovan finns bl.a.:
I "standards mode" inkluderas inte utfyllnad och kanten i breddangivelsen, medan så görs i "quirks mode" - vilket är orsaken till att den större REKTANGELN är tunnare i den andra bilden.
I CSS sätts typsnittets storlek till ett ganska stort värde i "body"-taggen (och alla andra element ärver detta), och sedan reduceras storleken med 50% för alla "p"-element. I "quirks mode" ärver inte tabellen typsnitts storlek från "body"-taggen, så typsnittet ser mindre ut. (Lägg märke till att texten i den större rektangeln har liten storlek, eftersom den inte ligger i tabellen utan i ett "p"-element.)
De två bilderna visar sidor med exakt samma uppmärkning och CSS-formattering. Den enda skillnaden mellan dem är är att den vänstra börjar med DOCTYPE-deklaration och den andra saknar en sådan deklaration. Ett dokument med en lämplig DOCTYPE-deklaration skall normalt visas i "standards mode" i nyare versioner av de flesta webbläsare. Om ingen DOCTYPE anges, så används "quirks mode".
Webbläsare som kan växla mellan "standards mode" och "quirks mode" beskrivs ofta som 'doctype-växlande'.
Nedan visas källformatet med DOCTYPE-deklarationen överst (markerat med röd kursiv skrift).
<!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="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>xhtml document</title>
<style type="text/css">
body { background: white; color: black; font-family: arial, sans-serif; font-size: 30px; }
p { font-size: 50%; }
h1 { font-size: 16px; }
</style>
</head>
<body>
<h1>Test file for Standards Mode</h1>
<div style="margin: 34px; width: 200px; padding: 66px; border: 6px solid teal;">
<p> Here is some text in a p in a div. </p>
</div>
<table border="1">
<tr><td><p>Here is some text...</p></td>
<td><p>...in a p tag</p></td>
</tr>
<tr><td>Here is some ...</td>
<td>... that's not.</td>
</tr>
</table>
</body>
</html>
En bra regel är att alltid leverera dina sidor i "standards mode" - dvs ange alltid en DOCTYPE-deklaration.
Eftersom XHTML 1.0 baseras på XML, så är det vanligt att man lägger till en XML-deklaration alldeles innan uppmärkningen, även om det skall levereras som HTML. I så fall skulle dokumentet ovan se ut som följer (XML-deklarationen är markeras med röd kursiv text):
<?xml version="1.0" encoding="utf-8"?>
<!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="en" lang="en">
<head>
...
I webbläsare som Mozilla, Netscape, Opera och liknande, så kommer ett dokument levererat med DOCTYPE-deklaration att presenteras i "standards mode", oavsett om dokumentet har en XML-deklaration eller ej.
Men för Internet Explorer gäller att om det finns någonting ovanför DOCTYPE-deklarationen så kommer dokumentet att presenteras i "quirks mode". Eftersom Internet Explorer har en stor användargrupp så är detta webbläsarbeteende ett problem. Om du vill försäkra dig om att dina sidor presenteras på samma sätt i alla webbläsare som följer standarden, så måste du välja strategi för hur problemet skall hanteras.
Ett par möjligheter står till buds. å ena sidan, om dina dokument inte innehåller några uttryck som påverkas av skillnaden mellan "standards mode" respektive "quirks mode", så kan det ses som ett problem man kan leva med. å andra sidan, om dina dokument märkbart påverkas av skillnaden mellan dessa "modes", så måste du hitta ett sätt att, i CSS, kompensera för denna skillnad, eller också utesluta XML-deklarationen.
XHTML-specifikationen
varnar
för att i vissa användarprogram visas även "processing
instructions". Dessutom tolkar vissa användarprogram XML-deklarationen så att
hela XML-dokumentet betraktas som icke-igenkänd XML snarare än som HTML, och
därför presenteras inte dokumentet så som man väntat sig.
Du bör
undersöka hur dina dokument presenteras av olika användarprogram innan du
beslutar dig om
detta kan innebära problem för dig.
Lägg märke till att om du inte anger XML-deklarationen så bör dokumentet representeras i UTF-8 eller UTF-16. (På sidan Teckenuppsättningar och teckenkodningar i XHTML, HTML och CSS får du mer information om effekterna av olika kodningsdeklarationer.)
XHTML 1.0 kan levereras som HTML eller XML. Om du levererar det som XML bör du ange 'application/xhtml+xml' som MIME-typ.
Ett gott råd är att ange en DOCTYPE-deklaration högst upp i ditt HTML- eller XHTML-dokument, så att dokumentet presenteras i "standards mode" i mer moderna webbläsare.
Om det finns en XML-deklaration i ett XHTML 1.0-dokument som levereras som HTML, så kommer ditt dokument att presenteras i "quirks mode" i Internet Explorer (dvs för en potentiellt stor grupp användare).
Vill du veta mer om dessa frågor så kan du följa länkarna angivna i Mer information, och ta del av innehållet i motsvarande sidor.
"XHTML Media Types" http://www.w3.org/TR/2002/NOTE-xhtml-media-types-20020801/
"XHTMLTM 1.0 The Extensible HyperText Markup Language (Second Edition)" http://www.w3.org/TR/2002/REC-xhtml1-20020801/
Teckenuppsättningar och teckenkodningar i XHTML, HTML och CSS http://www.w3.org/International/tutorials/tutorial-char-enc.html
Förteckning över giltiga DTD:er som du kan använda i dina dokument http://www.w3.org/QA/2002/04/valid-dtd-list.html
Doctype-växling i Internet Explorer http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnie60/html/cssenhancements.asp
Doctype-växling i Mozilla http://www.mozilla.org/docs/web-developer/quirks/
Doctype-växling i Opera http://www.opera.com/docs/specs/doctype/index.dml
Innehåll skapat 18:e mars, 2004. Senaste uppdatering 2004-03-18 17:20 GMT
Copyright© 2004 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply. Your interactions with this site are in accordance with our public and Member privacy statements.