Avatar billede akyhne Nybegynder
18. februar 2008 - 19:31 Der er 56 kommentarer og
1 løsning

Problem med validering

Hvorfor validerer denne ikke?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>e-debatten.dk</title>
</head>

<frameset rows="96,*" cols="*" frameborder="no" border="0" framespacing="0">
  <frame src="top.html" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" />
  <frameset cols="160,*" frameborder="no" border="0" framespacing="0">
    <frame src="left.html" name="leftFrame" scrolling="No" noresize="noresize" id="leftFrame" title="leftFrame" />
    <frame src="http://forum.e-debatten.dk/index.php" name="mainFrame" id="mainFrame" title="mainFrame" />
  </frameset>
</frameset>
<noframes><body>
</body>
</noframes></html>
Avatar billede w13 Novice
18. februar 2008 - 19:37 #1
Hvad siger validatoren? :) Evt. link?
Avatar billede akyhne Nybegynder
18. februar 2008 - 20:29 #2
The character encoding specified in the HTTP header (iso-8859-1) is different from the value in the <meta> element (utf-8). I will use the value from the HTTP header (iso-8859-1) for this validation.

Line 8, Column 43: there is no attribute "frameborder".
<frameset rows="96,*" cols="*" frameborder="no" border="0" framespacing="0">

Line 8, Column 55: there is no attribute "border".
<frameset rows="96,*" cols="*" frameborder="no" border="0" framespacing="0">


...og lignende fejl.
Avatar billede w13 Novice
18. februar 2008 - 21:01 #3
"The character encoding specified in the HTTP header (iso-8859-1) is different from the value in the <meta> element (utf-8). I will use the value from the HTTP header (iso-8859-1) for this validation."
- Dette betyder, at du ikke kan bruge tegnsættet utf-8, som du angiver i linjen:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
fordi sidens tegnsæt er iso-8859-1.

Og det med frameborder betyder jo bare, at du må slette frameborder="no". style="border:0" skulle kunne gøre det samme.

Og resten af fejlene afhænger af, hvad validatoren ellers siger. Derfor ville det være lettest med et link. =)
Avatar billede akyhne Nybegynder
18. februar 2008 - 21:10 #4
Jamen sidens tegnsæt er da sat til utf-8..

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Avatar billede akyhne Nybegynder
18. februar 2008 - 21:13 #5
left.html ser således ud:
<!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" />

Top.html:
<!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">
Avatar billede akyhne Nybegynder
18. februar 2008 - 21:14 #6
Om igen.. top.html:
<!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" />
Avatar billede w13 Novice
18. februar 2008 - 21:14 #7
Ja. Problemet opstår, da siden - udover dér - er gemt i iso-8859-1.
Jeg er ikke helt sikker på, hvordan dette er sket. Mit bedste bud er, f.eks. hvis du redigerer dine sider i notesblok, at du har gemt som ANSI-tegnsætning og ikke som UTF-8. Det er nemlig ikke nok at sætte charset=utf-8, det skal også gemmes som et utf-8-dokument.
Avatar billede akyhne Nybegynder
18. februar 2008 - 21:17 #8
Jeg bruger Dreamweaver.
Avatar billede w13 Novice
18. februar 2008 - 21:24 #9
Jeg har ikke selv dreamweaver, men et eller andet sted, kan det sættes.
Hvis du nu prøver, for sjov, at ændre utf-8 til iso-8859-1 og validerer igen, forsvinder den fejl så ikke?
Avatar billede akyhne Nybegynder
18. februar 2008 - 21:24 #10
..og har forresten redigeret i den i Notepad. Nu har jeg gemt den som utf-8. Det giver dog samme fejl..
Avatar billede akyhne Nybegynder
18. februar 2008 - 21:50 #11
Nu fik jeg fjernet border problemet med css.

Så har jeg kun denne fejl tilbage:

Line 15, Column 9: document type does not allow element "noframes" here.
<noframes">"<body>

hvor > i <noframes> er sat i gåseøjne af W3.

Jeg kan selvfølgelig bare slette den, da der nok ikke er nogen i dag der bruger en browser der ikke understøtter frames.
Avatar billede w13 Novice
18. februar 2008 - 21:52 #12
Det synes jeg, du skal. =)
Avatar billede akyhne Nybegynder
18. februar 2008 - 21:53 #13
Jeg får dog stadig denne som Warning:

Character Encoding mismatch!

The character encoding specified in the HTTP header (iso-8859-1) is different from the value in the <meta> element (utf-8). I will use the value from the HTTP header (iso-8859-1) for this validation.
Avatar billede akyhne Nybegynder
18. februar 2008 - 21:55 #14
Gemmer jeg som utf-8 er der kun en fejl:

Line 1, Column 0: character "ï" not allowed in prolog.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org

 kan jeg dog ikke se nogen steder.
Avatar billede pidgeot Nybegynder
18. februar 2008 - 21:57 #15
Din webserver fortæller at dokumentet er iso-8859-1, fordi den er sat op til at bruge det som standardtegnsæt, og du intet gør for at override headeren server-side. HTTP headeren har altid prioritet over et <meta>-element, så du skal have fat i konfigurationen på din webserver, eller smide noget PHP/ASP/whatever ind for at ændre headeren.
Avatar billede pidgeot Nybegynder
18. februar 2008 - 21:59 #16
 er netop grunden til at Notepad ikke bør bruges til UTF-8 - det er et Unicode BOM omdannet til UTF-8, men det gavner udelukkende til identifikation når det er UTF-8 (eftersom byte ordering ikke er et problem).

Stort set alle andre Unicode-kompatible editorer benytter ikke et BOM ved UTF-8, eller tilbyder at gemme enten med eller uden. Jeg bruger selv Vim, men Notepad++ skulle også kunne, og er nok mere brugervenlig. *-)
Avatar billede akyhne Nybegynder
18. februar 2008 - 22:02 #17
Hvis jeg validerer siderne i framesettet hver for sig, får jeg ingen fejl.
Avatar billede akyhne Nybegynder
18. februar 2008 - 22:07 #18
Jeg har mulighed for at rette visse ting i php.ini hos min host, bl.a default_charset
som nu står til iso-8859-1. Er det der jeg skal rette?
Avatar billede w13 Novice
18. februar 2008 - 22:20 #19
Jeps, det lyder helt rigtigt!
Avatar billede akyhne Nybegynder
18. februar 2008 - 22:21 #20
Det hjalp så desværre ikke. Jeg ved heller ikke om der nøjagtigt skal stå "utf-8", eller hvad.
Avatar billede w13 Novice
18. februar 2008 - 22:29 #21
Det skal der ja
Avatar billede pidgeot Nybegynder
18. februar 2008 - 22:34 #22
Hvis det er  fejlen du stadig får, så gem din fil som ANSI i Notepad igen. Netop i dette tilfælde er der ingen forskel på ISO-8859-1 og UTF-8, og på den måde kommer du nemt af med det BOM.
Avatar billede akyhne Nybegynder
18. februar 2008 - 22:37 #23
Det er denne jeg får (har gemt igen som ANSI)

Character Encoding mismatch!

The character encoding specified in the HTTP header (iso-8859-1) is different from the value in the <meta> element (utf-8). I will use the value from the HTTP header (iso-8859-1) for this validation.


w13: border:0; laver desværre alligevel border. Andre forslag?
Avatar billede pidgeot Nybegynder
18. februar 2008 - 22:40 #24
Hmm... Det er vel ikke en ren HTML-fil (altså ikke en .php-fil)? PHP kan jo ikke gøre noget ved en fil hvis den ikke sendes igennem den - der slår Apache/IIS' konfiguration i stedet igennem (og den står nok også til iso-8859-1 som standard-tegnsæt).

Alternativt kan det være at der lige går lidt tid før dine ændringer slår igennem - afhænger af din host.
Avatar billede akyhne Nybegynder
18. februar 2008 - 22:41 #25
Selv style="border-top-style: none;border-right-style: none;border-bottom-style: none;border-left-style: none;border-top-width: 0px;border-right-width: 0px;border-bottom-width: 0px;border-left-width: 0px;" giver borders.
Avatar billede akyhne Nybegynder
18. februar 2008 - 22:44 #26
Jeg har:

forum.php //framesettet
left.html
top.html
main er http://forum.e-debatten.dk/index.php

De tre nederste giver hver især ingen errors eller fejl, hvadenten det er php eller html.
forum.php er ren html.
Avatar billede akyhne Nybegynder
18. februar 2008 - 22:45 #27
Avatar billede pidgeot Nybegynder
18. februar 2008 - 23:15 #28
Jeg kan ikke komme på andet til tegnsæts-halløjet end at smide en header("Content-Type: text/html;charset=utf-8") ind i din frameset-side.
Avatar billede akyhne Nybegynder
18. februar 2008 - 23:23 #29
Før doc declaration?
Avatar billede pidgeot Nybegynder
18. februar 2008 - 23:24 #30
Yep, før alt output - <?PHP header("Content-Type: text/html;charset=utf-8"); ?>
Avatar billede akyhne Nybegynder
18. februar 2008 - 23:25 #31
Avatar billede akyhne Nybegynder
18. februar 2008 - 23:28 #32
Grunden til jeg bruger frameset er, at selve forummet ligger på et subdomæne.
Avatar billede olebole Juniormester
18. februar 2008 - 23:30 #33
<ole>

Men det giver ikke megen mening at blande en oldnordisk ting som frames med XHTML. Den eneste årsag til det overhovedet kan vises, er at koden tolkes som HTML ... og så forsvinder jo den sidste rest af grund til at reklamere med, man kan læse en manual og gøre nogenlunde, som der står (W3C-bannerne)  ;o)

/mvh
</bole>
Avatar billede akyhne Nybegynder
18. februar 2008 - 23:30 #34
Jo, men hvad skal jeg så gøre?
Avatar billede pidgeot Nybegynder
18. februar 2008 - 23:33 #35
CSS' border virker vist kun på boxes, og ikke frames. Du er vist nødt til at bruge attributter.

Jeg vil tro du bare skal have frameborder="0" på dine <frame>s (ikke dine <frameset>s, da de ikke kender den attribut), men er ikke helt sikker.
Avatar billede akyhne Nybegynder
18. februar 2008 - 23:36 #36
Det var på både frames & framesettet jeg havde fejlen.
Avatar billede pidgeot Nybegynder
18. februar 2008 - 23:43 #37
Ole, af ren nysgerrighed, hvorfor ville et (validt) dokument med den doctype fejle hvis den blev parset som XHTML? Jeg er ikke sikker på jeg kan se sammenhængen (selvom jeg nu også ville vælge HTML 4.01), når nu det er en egentlig doctype.

akyhne, når jeg kører din oprindelige kode gennem validatoren, er den eneste fejl på selve framesene at du har brugt scrolling="No" (i stedet for det rigtige scrolling="no"). frameborder findes som attribut på frame i XHTML 1.0 Frameset (derfor rykker du den derned), men border gør ikke og framespacing gør ikke.

Derudover skal <noframes> ind i dit frameset før det er gyldigt.

Hurtigt tilrettet kode der validerer:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>e-debatten.dk</title>
</head>

<frameset rows="96,*" cols="*">
  <frame src="top.html" name="topFrame" scrolling="no" noresize="noresize" id="topFrame" title="topFrame" frameborder="0" />
  <frameset cols="160,*">
    <frame src="left.html" name="leftFrame" scrolling="no" noresize="noresize" id="leftFrame" title="leftFrame" frameborder="0" />
    <frame src="http://forum.e-debatten.dk/index.php" name="mainFrame" id="mainFrame" title="mainFrame" frameborder="0" />
  </frameset>

<noframes><body>
</body>
</noframes></frameset></html>
Avatar billede akyhne Nybegynder
18. februar 2008 - 23:46 #38
Jeg fandt ud af hvordan jeg kunne bruge include til et subdomæne, så jeg går måske over til tables eller andet.

Problemet er at siderne ligger således i forhold til hinanden:
/home/www/forum.e-debatten.dk
/home/www/e-debatten.dk

Da jeg ikke kunne kalde subdomænet som hos andre hosts på denne måde, e-debatten.dk/forum/index.php, fandt jeg ud af at jeg bare kunne gøre således: <?php include('../forum.e-debatten.dk/index.php') ?>
Jeg kan altså tilsyneladende godt gå et længere skridt tilbage end selve roden!

olebole: Jeg checker lige..
Avatar billede akyhne Nybegynder
18. februar 2008 - 23:46 #39
Ommer.. pidgeot: Jeg checker lige..
Avatar billede akyhne Nybegynder
18. februar 2008 - 23:51 #40
Med <?PHP header("Content-Type: text/html;charset=utf-8"); ?> før doc declaration, validerer den fint nu :-)
Avatar billede akyhne Nybegynder
18. februar 2008 - 23:54 #41
olebole: Hvis forummet havde ligget på en hel anden server, havde jeg vel ikke haft andre muligheder.

I øvrigt skal du da være glad for at nogle af os dummies prøver at overholde w3's regler ;-)
Avatar billede olebole Juniormester
18. februar 2008 - 23:55 #42
pidgeot >> XHTML 1.0 Strict kan under stort besvær (næsten) parses som XHTML - ingen af de andre XHTML 1.0 'flavours' kan. Hvis du ydermere ser på denne validering:
    http://validator.w3.org/check?uri=http%3A%2F%2Fwww.e-debatten.dk%2Fforum.php&charset=%28detect+automatically%29&doctype=Inline&group=0&verbose=1

- vil du se, dokumentet bliver served som 'text/html'. Det skal alle XHTML 1.0 flavours (som ikke er Strict) sendes med - og de kan derfor aldrig parses som andet.

    http://www.eksperten.dk/artikler/537
    http://www.eksperten.dk/artikler/538
Avatar billede pidgeot Nybegynder
19. februar 2008 - 00:12 #43
Ah, ja, det er rigtigt - det er lige det med at huske det hele *-)
Avatar billede akyhne Nybegynder
19. februar 2008 - 00:19 #44
Må jeg have lov at spørge hvad I synes om ideen med siden?
Avatar billede akyhne Nybegynder
24. februar 2008 - 19:04 #45
<?PHP header("Content-Type: text/html;charset=utf-8"); ?>

Hvordan løser jeg lignende problem, hvis siden er en .html?
Avatar billede w13 Novice
24. februar 2008 - 19:05 #46
En .php-side må godt have content-type text/html, så længe den outputter HTML. Og det gør den vel?
Avatar billede pidgeot Nybegynder
24. februar 2008 - 19:16 #47
w13, jeg tror problemet er at det netop IKKE er en .php, men en .html :)

Så længe du ikke har et tegnsæt angivet i din HTTP header (det er så Apache's konfiguration mht. standardtegnsæt der er tale om her), kan du bruge <meta> til at angive det, og effekten skulle være den samme (bare sørg for at placere det i starten af din <head>).

Hvis Apache derimod siger det er en iso-8859-1-side, vil det have prioritet over din <meta>, og derfor vil du være nødt til enten at omdøbe til .php (og så bruge PHP-løsningen med header), eller også må du få ændret Apache's konfiguration til at bruge UTF-8 som standardtegnsæt. Jeg mener det er en af de ting der kan håndteres via en .htaccess, men jeg er ikke 100% sikker.
Avatar billede akyhne Nybegynder
24. februar 2008 - 19:56 #48
Jeg har nu heller ikke brug for det, men var bare nysgerrig.

Men kort sagt: Hvis min udbyders server som i dette tilfælde er en Debian server med Apache installeret, er det serveren der i princippet bestemmer hvilken charset jeg kan køre med, sålænge vi snakker html. For PHP siders vedkommende, kan det klares, enten ved at lave en .htaccess, eller evt. ved at rette i de muligheder jeg har i php.ini.
Avatar billede olebole Juniormester
24. februar 2008 - 21:40 #49
Du kan muligvis skrive en .htaccess med:
    AddCharset UTF-8 .html

http://httpd.apache.org/docs/1.3/mod/mod_mime.html#addcharset
Avatar billede olebole Juniormester
24. februar 2008 - 21:42 #50
- eller måske:
    AddType 'text/html; charset=UTF-8' .html
Avatar billede pidgeot Nybegynder
24. februar 2008 - 21:44 #51
.htaccess er ikke en PHP-fil, men en Apache-fil, så det fungerer lige fint uanset om det er .php eller .html - bare den er sat korrekt op :)
Avatar billede akyhne Nybegynder
24. februar 2008 - 23:11 #52
Jeg fik det til at virke med linien "AddDefaultCharset UTF-8"

Det var dog ikke uden prolemer. Tror I for pokker det er muligt i Vista at omdøbe en fil til et navn med kun extension! Næh, så let skulle det ikke gå. Jeg måtte i CMD med administratorrettigheder, og omdøbe den med Rename!

Jeg prøvede i øvrigt først med "AddCharset UTF-8", men det gav en "Internal Error 500", både via W3 og på selve siden.

Iøvrigt er jeg forlængst gået fra frameset, og har flyttet siden til http://www.e-debatten.dk. Det krævede nogle indgreb i de originale SMF filer, men det var den eneste løsning der gav det jeg ville have.

Og lad nu være med at skælde ud over at jeg bruger tables i stedet for layers. Det virker nu engang for mig :-)
Avatar billede akyhne Nybegynder
24. februar 2008 - 23:15 #53
Der var i øvrigt ikke nogen af Jer der kommenterede mit spørgsmål 19/02-2008 00:19:17
olebole er da i hvertfald ikke debatløs, så han må da synes det er en god ide ;-)
Avatar billede akyhne Nybegynder
07. marts 2008 - 07:33 #54
Lukketid?
Avatar billede akyhne Nybegynder
18. marts 2008 - 17:20 #55
Jeg lukker. Nogen der vil have point?
Avatar billede w13 Novice
18. marts 2008 - 17:53 #56
Nej tak. =)
Avatar billede pidgeot Nybegynder
18. marts 2008 - 17:55 #57
Jeg springer også over :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester