webForumDet fria alternativet

Fel vid validering av min xhtml-kod när <?xml?> infogas!?

HTML & CSSur HTML, XHTML & CSS

19 svar · 572 visningar · startad av Dr Gregory

Medlem sedan feb. 20058 inlägg
Frågan#1

Beskåda detta vackra xhtml-dokument. Får godkänt vid validering med de lysande orden, "This Page Is Valid XHTML 1.0 Strict!".

<!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></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>Detta är ett XHTML Dokument</h1>
</body>
</html>

Men när jag stoppar in <?xml version="1.0" encoding="ISO-8859-1"?> överst i koden så får jag felmedelande vid valideringen hos W3C!?

*"The HTTP Content-Type header sent by your web browser (unknown) did not contain a "charset" parameter, but the Content-Type was one of the XML text/* sub-types (text/xml). The relevant specification (RFC 3023) specifies a strong default of "us-ascii" for such documents so we will use this value regardless of any encoding you may have indicated elsewhere. If you would like to use a different encoding, you should arrange to have your browser send this new encoding information.

Sorry, I am unable to validate this document because on line 11 it contained one or more bytes that I cannot interpret as us-ascii (in other words, the bytes found are not valid values in the specified Character Encoding). Please check both the content of the file and the character encoding indication"*

Jag är nybörjare på XHTML, kan någon förklara vad detta betyder, vad ska jag ändra i min kod så att det blir rätt?

MVH

Medlem sedan feb. 20001 861 inlägg
#2

Det ska inte spela någon roll.
Har du samma filändelse i båda fallen?
Vilken filändelse?
Har du xmlprologen allra först, ingen tom rad ovanför?

Medlem sedan okt. 2004636 inlägg
#3

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Du har ju redan koden ju...

/red: ISO-8859-1 är koden som fungerar bäst för oss här i Västeuropa. Detta gör vi för att vi vill berätta för webbläsarna att vi använder ett språk som innehåller å - ä och ö.

Medlem sedan feb. 20001 861 inlägg
#4

Om han ändrat filändelse från ex html -> xhtml så kan det hända att webbservern skickar sidan som application/xml, text/xml eller liknande istf text/html. Och då ignorerar förmodligen validatorn den raden.

Om jag ger uttrycket av att vara ute på djupt vatten vill jag korrigera då vi nu har vinter och det alltså är halt vatten...

Medlem sedan okt. 2004636 inlägg
#5

Om han inte har ändrat filändelse men lägger in dubbla attribut - i detta fall i head ( vilket validerinsgfelet också låg) så blir det ju naturligtvis ett valideringsfel.

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

finns ju redan - lägger han till xml med samma kod så blir det ju dubbelt. Han kan ju ta bort meta taggaen och enbart använda sig av xml så kanske det går bättre.

Tja - inte fasen vet jag men jag använder broddar i halkan ;)

Medlem sedan feb. 20058 inlägg
#6

Jag har filändelsen htm i både fallen, och nej jag har ingen tom rad ovanför...

Medlem sedan okt. 2004636 inlägg
#7

*läs om vad jag skrev!*

Medlem sedan feb. 20058 inlägg
#8

Om jag byter ut bokstaven "ä" mot "a", så får koden godkänt.
Men med noteringen:

"The HTTP Content-Type header sent by your web browser (unknown) did not contain a "charset" parameter, but the Content-Type was one of the XML text/* sub-types (text/xml). The relevant specification (RFC 3023) specifies a strong default of "us-ascii" for such documents so we will use this value regardless of any encoding you may have indicated elsewhere. If you would like to use a different encoding, you should arrange to have your browser send this new encoding information."

Varför blir det så?

Medlem sedan feb. 20058 inlägg
#9

Jag tog bort metataggen, men behöll <?xml version="1.0" encoding="ISO-8859-1"?> och koden blev godkänd, Men noteringen kvarstod hos W3C

Medlem sedan okt. 2004636 inlägg
#10

därför att å ä ö inte ingår i "dataspråket" för det är engelska

Om du kikar in på min sida så finns det information om xhtml och bra länkar du sedan kan vandra vidare på. *tips* Ladda ned html-kit med tidy där ingår en xhtml-konverterare.

/red: ja jag ser att du har angett sv som språk - men tyvärr du använder strict och då är det genast mycket mer kymigt :h

Medlem sedan juli 20013 378 inlägg
#11

Hmm..

Dr Gregory:

  1. Du gör inget fel överhuvudtaget.
  2. Om man tolkar filen som en XML-fil har <meta>-taggen ingen som helst betydelse
  3. Om man tolkar filen som en XML-fil skall man ange encoding i <?xml?> på det sätt du gjort om man inte kör med UTF-8 eller UTF-16
  4. Däremot kan man inte räkna med att filen tolkas som en XML-fil om man inte skickar den med MIME-typen "text/xml" eller "application/xml" (och i vilket fall som helst skall man aldrig skicka över en XML-fil som "text/plain" - vilket iofs inte verkar vara problemet i det här fallet.)

MEN...

  1. Du kör MSIE
  2. Du validerar genom att ladda upp en fil från din hårddisk och inte via URL
  3. Om man läser informationen som står på validatorns förstasida - ser man att detta för närvarande är en problematisk kombination...

validatorns förstasida skrev:

Note: file upload may not work with Internet Explorer on some versions of Windows XP Service Pack 2, see our information page on the W3C QA Website

  1. Nu kör ju du iofs Win98, men när jag testar att validera en uppladdad fil från MSIE6/Win2K får jag exakt samma problem (trots att filen alltså är 100% korrekt)

  2. Lösningen ligger alltså inte i din kod, utan enligt http://www.w3.org/QA/2005/01/Validator-IE_WinXP_SP2 i att lägga på rätt "security updates" på MSIE

Lösningen är daterad den 9:e februari 2005 för övrigt, men eftersom jag kör W2K har jag ingen aning om den lösningen de länkar till är 100%-ig...

Så ta't lugnt och lägg ut filen på nätet istället och validera den via URL istället - du har inte gjort något fel ;)

Jo förresten:

Om jag byter ut bokstaven "ä" mot "a", så får koden godkänt.

Det beror på att validatorn (felaktigt) ställer in sig på att tolka us-ascii som enda godkända teckenuppsättning pga felet, och teckenkoden du använder för "ä" ingår inte i us-ascii ;)

Medlem sedan feb. 20058 inlägg
#12

Om jag tar bort <?xml version="1.0" encoding="ISO-8859-1"?> och sätter in metataggen igen, så går det utmärkt att använda åäö.

Medlem sedan feb. 20058 inlägg
#13

tack jarvklo!
(vilken bra sida du har föresten)

Medlem sedan juli 20013 378 inlägg
#14

NP - Välkommen till wF :birp

Medlem sedan dec. 20042 245 inlägg
#15

Det står ju klart och tydligt.

the Content-Type was one of the XML text/* sub-types (text/xml). The relevant specification (RFC 3023) specifies a strong default of "us-ascii"

Validatorn gör rätt i att använda US-ASCII när man inte angett teckenuppsättning för text/* för XML-filer.

XML med medietypen application/* har per default UTF-8, så man borde använda det istället...

UTF-8 tar å, ä, och ö, och alla andra standardiserade tecken, så Latin-1 fungerar inte "bättre" än UTF-8 på något sätt. Snarare tvärt om.

Medlem sedan feb. 20058 inlägg
#16

Så du menar att jag bör byta ut alla "ISO-8859-1" till "UTF-8"?

Medlem sedan dec. 20042 245 inlägg
#17

Ja. Fast att bara ändra texten "ISO-8859-1" till "UTF-8" löser inga problem, utan du måste konvertera alla specialtecken till UTF-8 också. :) http://annevankesteren.nl/archives/2004/06/utf-8

Och använd hellre application/xml än text/xml.

Medlem sedan juli 20013 378 inlägg
#18

Hmm...

Nu är vi visst ute och cyklar lite vid sidan av ämnet tror jag...

Att byta teckenkodning och koda om ett "ä" till UTF-8 löser helt enkelt inte detta problem - för teckenkodningen har egentligen inte med det här specifika fenomenet att göra!

  1. Den kod som tråden handlar om är oavsett hur man vänder och vrider på det 100% korrekt när man lägger till <?xml?>-deklarationen (inclusive encodingattributet)

  2. Problemet som det beskrivs uppkommer enbart när man validerar en lokal fil genom att ladda upp den via MSIE.

  3. Samma fil som utlöser felmeddelandet validerar 100% OK om man istället använder lokal uppladning via FireFox...

  4. I det här specifika läget (Validering av uppladdad lokal fil) har man inte kontroll över MIME-typen... Man är helt utlämnad till vad webbläsaren hittar på !

  5. I just detta specifika fallet utlöser MSIE exakt samma fel även om man använder UTF-8 som teckenkodning

... och det är f.ö. precis lika "tillåtet" elle "bra" att välja ISO-8859-1 som teckenkodning som UTF-8 när man vet att XML-parsern som skall ta emot den stödjer det - så man behöver inte byta om man inte har problem med att producera text med teckenkodningen ISO-8859-1 när man skapar sidor avsedda för webben (eftersom man *vet* att de XML-parsers som används i dagens webbläsare hanterar ISO-8859-1) :P

Medlem sedan feb. 20058 inlägg
#19

Ännu ett logiskt konstruerat strukturerat koncist klargörande upplysande inlägg av xhtml-Guden Jarvklo. Jag tackar och bugar ödmjukt. :stud

Medlem sedan dec. 20042 245 inlägg
#20

Jaha. Jag kanske inte läste ordentligt... :r Jag trodde han validerade utan XML-deklarationen.

Fast jag tycker man kan byta till UTF-8 ändå :P

145 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)