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

Gå till W3C:s hemsida.Gå till Architecture Domains hemsida.  Internationalization 
 

Att leverera XHTML 1.0

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.

XHTML & MIME-typer

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.

'Standards' resp. 'Quirks' modes

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.
Bild av en sida visad i quirks mode.Bild av samma sida visad i standards mode.

Bland de skillnader som syns ovan finns bl.a.:

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.

XML-deklarationen

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.)

Sammanfattning

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.

Mer information

"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

Författare: Richard Ishida. [översättare: Olle Olsson, SICS]

Giltig XHTML 1.0
Giltig CSS
Kodad i UTF-8

Innehåll skapat 18:e mars, 2004. Senaste uppdatering 2004-03-18 17:20 GMT