RichardPMedlem sedan apr. 200546 inlägg
Om jag anger encoding i xml-deklarationen på översta raden, måste jag då ta med charset i meta-taggen längre ner eller är det helt onödigt?
Ser toppen på sidan ut som den ska göra?
<?xml version="1.0" encoding="iso-8859-1"?>
<!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="sv" lang="sv">
<head>
<title>Sidans titel</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
zcorpanMedlem sedan dec. 20042 269 inlägg
XML-deklarationen funkar endast när du serverar innehållet som XML, tex använder medietypen application/xml eller application/xhtml+xml. META-elementet fungerar endast i HTML, alltså med medietypen text/html.
Du kan ange charset med HTTP också, det funkar både för XML och HTML. :)
[edit]
Du bör också lägga META-elementet först i HEAD. :)
[/edit]
RichardPMedlem sedan apr. 200546 inlägg
Okej, tack.
Så för en vanlig XHTML-webbsida tar jag bort den första raden men sparar meta-taggen?
Så här...?
<!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="sv" lang="sv">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Sidans titel</title>
</head>
zcorpanMedlem sedan dec. 20042 269 inlägg
Remember, however, that when the XML declaration is not included in a document, the document can only use the default character encodings UTF-8 or UTF-16.
http://www.w3.org/TR/xhtml1/#C_1
In order to portably present documents with specific character encodings, the best approach is to ensure that the web server provides the correct headers. If this is not possible, a document that wants to set its character encoding explicitly must include both the XML declaration an encoding declaration and a meta http-equiv statement
http://www.w3.org/TR/xhtml1/#C_9
Kom ihåg att XML-deklarationen gör att IE använder quirks mode, så om du vill att IE ska använda Standards mode rekommenderar jag att du anger charset med HTTP. Eller det rekommenderar jag oavsett. :)
aronMedlem sedan mars 2004487 inlägg
Du bör också lägga META-elementet först i HEAD.
Är det så?, har för mig at det är <title> som ska vara först.. jo så är det.
jarvkloMedlem sedan juli 20013 295 inlägg
aron skrev:
Är det så?, har för mig at det är <title> som ska vara först.. jo så är det.
Hmm...
Enligt språkdefinitionen för XHTML 1.0, kan title ligga varsomhelst i head men bara förekomma en gång.
Regeln lyder:
<!ELEMENT head (%head.misc;,
((title, %head.misc;, (base, %head.misc;)?) |
(base, %head.misc;, (title, %head.misc;))))>
dvs antingen kommer title före base eller base före title - och före, mellan respektive efter dessa (base är f.ö. valfri, men title obligatorisk enligt regeln) kan det förekomma hur många (eller få) script, style, meta, link eller object som helst:
<!ENTITY % head.misc "(script|style|meta|link|object)*">
Detta gäller Strict - och i Transitional och frameset ser det i princip likadant ut:
<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
i XHTML 1.1 gäller regler med samma innebörd som i 1.0 Strict... dvs att title får ligga varsomhelst i head (och inte nödvändigtvis först).
DTD-läsning kan vara knepigt - och just regeln för head är bland de grötigaste IMHO ;)
Sedan tror jag att zcorpan menar att det är en bra vana att slänga in metataggen först i head - men orsaken är jag inte helt på det klara med, även om jag också hört den rekommendationen tidigare ;)
aronMedlem sedan mars 2004487 inlägg
DTD-läsning kan vara knepigt
Jo det är sant, finns det nån bra sida där man kan läsa om hur man läser DTD:er. Har för mig att jag hittde någon förut som jag läste igenom lite halft.
jarvkloMedlem sedan juli 20013 295 inlägg
zcorpanMedlem sedan dec. 20042 269 inlägg
Anledningen är att webbläsaren så tidigt som möjligt ska veta vilken charset som används... helst ska den ju veta det redan innan den börjar tolka dokumentet, vilket den gör om man sätter en riktig HTTP Content-Type header. :)
jarvkloMedlem sedan juli 20013 295 inlägg
Ajo visst är det så att det kan vara skillnad mellan att ha informationen i HTTP-headern och att ha den i en metatagg - och jag argumenterar inte mot rådet att "lägga den överst" som så - men jag är nyfiken på om du har några konkreta exempel eller källor som styrker att det verkligen innebär någon praktisk skillnad (t.ex. i prestanda eller pålitlighet) om man lägger en viss metatagg överst eller nederst i head ? :)
zcorpanMedlem sedan dec. 20042 269 inlägg
http://intertwingly.net/slides/2004/devcon/76.html :)
[edit]
Samt:
The META declaration must only be used when the character encoding is organized such that ASCII-valued bytes stand for ASCII characters (at least until the META element is parsed). META declarations should appear as early as possible in the HEAD element.
http://www.w3.org/TR/REC-html40/charset.html#h-5.2.2
[/edit]
jarvkloMedlem sedan juli 20013 295 inlägg