Avatar billede nemlig Professor
02. januar 2009 - 18:11 Der er 12 kommentarer og
2 løsninger

2 fejl ved W3C-validering

Hej.
Mon der er en venlig sjæl, som vil hjælpe mig med 2 valideringsfejl, som jeg får på denne nedenstående kode:
Koden klipper jeg ind her:
http://validator.w3.org/check


<!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="da" lang="da">
<head><title>Kalender</title>
<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="css/style.php" type="text/css" />
<script type="text/javascript" src="menu/jquery-1.2.6.pack.js"></script>
<script type="text/javascript" src="menu/ddaccordion.js"></script>

<script type="text/javascript">
ddaccordion.init({
    headerclass: "submenuheader", //Shared CSS class name of headers group
    contentclass: "submenu", //Shared CSS class name of contents group
    revealtype: "click", //Reveal content when user clicks or onmouseover the header? Valid value: "click" or "mouseover
    mouseoverdelay: 200, //if revealtype="mouseover", set delay in milliseconds before header expands onMouseover
    collapseprev: true, //Collapse previous content (so only one open at any time)? true/false
    defaultexpanded: [], //index of content(s) open by default [index1, index2, etc] [] denotes no content
    onemustopen: false, //Specify whether at least one header should be open always (so never all headers closed)
    animatedefault: false, //Should contents open by default be animated into view?
    persiststate: true, //persist state of opened contents within browser session?
    toggleclass: ["", ""], //Two CSS classes to be applied to the header when its collapsed and expanded, respectively ["class1", "class2"]
    togglehtml: ["suffix", "<img src='plus.gif' alt='' class='statusicon' />", "<img src='minus.gif' alt='' class='statusicon' />"], //Additional HTML added to the header when its collapsed and expanded, respectively  ["position", "html1", "html2"] (see docs)
    animatespeed: "fast", //speed of animation: integer in milliseconds (ie: 200), or keywords "fast", "normal", or "slow"
    oninit:function(headers, expandedindices){ //custom code to run when headers have initalized
        //do nothing
    },
    onopenclose:function(header, index, state, isuseractivated){ //custom code to run whenever a header is opened or closed
        //do nothing
    }
})
</script>
</head>
<body>
<div id="container">
<div id="topDiv"><h1>Kalendersystem</h1></div>
<div id="leftDiv">

<div class="glossymenu">
<a class="menuitem" href="index.php">Forside</a>
<a class="menuitem submenuheader" href="http://www.kalendersystem.dk" >Ret tekster</a>
<div class="submenu">
    <ul>
    <li><a href="side1.php">Forside</a></li>
    <li><a href="side2.php">Side 2</a></li>
    <li><a href="side3.php">Side 3</a></li>
    </ul>
</div>
<a class="menuitem submenuheader" href="http://www.kalendersystem.dk" >Vedligehold</a>
<div class="submenu">
    <ul>
    <li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C1/">Backup databaser</a></li>
    <li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C2/">Restore databaser</a></li>
    </ul>
</div>

<a class="menuitem submenuheader" href="http://www.kalendersystem.dk" >Brugeradm.</a>
<div class="submenu">
    <ul>
    <li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C1/">Opret bruger</a></li>
    <li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C2/">Ret/slet bruger</a></li>
    <li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C2/">&aelig;ndre password</a></li>
    </ul>
</div>
</div>
</div>
</div>
</body>
</html>
Avatar billede ssv Nybegynder
02. januar 2009 - 18:31 #1
Nu vil de gæve eksperter herinde nok komme med en længere opsang til hvorfor du ikke bruger en HTML 4.01 strict doc-type i stedet for en XHTML doc-type. Jeg skal ærligt sige at jeg kan komme en længere professorisk forklaring på forskellen - men jeg ved at HTML 4.01 er det der understøttes bedst i dagens web.

Smider du en HTML 4.01 strict doc-type på og ændrer dit close-tag på din CSS-fil, dur det:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Kalender</title>
<link rel="stylesheet" href="css/style.php" type="text/css">
<script type="text/javascript" src="menu/jquery-1.2.6.pack.js"></script>
<script type="text/javascript" src="menu/ddaccordion.js"></script>

<script type="text/javascript">
ddaccordion.init({
    headerclass: "submenuheader", //Shared CSS class name of headers group
    contentclass: "submenu", //Shared CSS class name of contents group
    revealtype: "click", //Reveal content when user clicks or onmouseover the header? Valid value: "click" or "mouseover
    mouseoverdelay: 200, //if revealtype="mouseover", set delay in milliseconds before header expands onMouseover
    collapseprev: true, //Collapse previous content (so only one open at any time)? true/false
    defaultexpanded: [], //index of content(s) open by default [index1, index2, etc] [] denotes no content
    onemustopen: false, //Specify whether at least one header should be open always (so never all headers closed)
    animatedefault: false, //Should contents open by default be animated into view?
    persiststate: true, //persist state of opened contents within browser session?
    toggleclass: ["", ""], //Two CSS classes to be applied to the header when its collapsed and expanded, respectively ["class1", "class2"]
    togglehtml: ["suffix", "<img src='plus.gif' alt='' class='statusicon' />", "<img src='minus.gif' alt='' class='statusicon' />"], //Additional HTML added to the header when its collapsed and expanded, respectively  ["position", "html1", "html2"] (see docs)
    animatespeed: "fast", //speed of animation: integer in milliseconds (ie: 200), or keywords "fast", "normal", or "slow"
    oninit:function(headers, expandedindices){ //custom code to run when headers have initalized
        //do nothing
    },
    onopenclose:function(header, index, state, isuseractivated){ //custom code to run whenever a header is opened or closed
        //do nothing
    }
})
</script>
</head>
<body>
<div id="container">
<div id="topDiv"><h1>Kalendersystem</h1></div>
<div id="leftDiv">

<div class="glossymenu">
<a class="menuitem" href="index.php">Forside</a>
<a class="menuitem submenuheader" href="http://www.kalendersystem.dk" >Ret tekster</a>
<div class="submenu">
    <ul>
    <li><a href="side1.php">Forside</a></li>
    <li><a href="side2.php">Side 2</a></li>
    <li><a href="side3.php">Side 3</a></li>
    </ul>
</div>
<a class="menuitem submenuheader" href="http://www.kalendersystem.dk" >Vedligehold</a>
<div class="submenu">
    <ul>
    <li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C1/">Backup databaser</a></li>
    <li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C2/">Restore databaser</a></li>
    </ul>
</div>

<a class="menuitem submenuheader" href="http://www.kalendersystem.dk" >Brugeradm.</a>
<div class="submenu">
    <ul>
    <li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C1/">Opret bruger</a></li>
    <li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C2/">Ret/slet bruger</a></li>
    <li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C2/">&aelig;ndre password</a></li>
    </ul>
</div>
</div>
</div>
</div>
</body>
</html>
Avatar billede micc Nybegynder
02. januar 2009 - 18:52 #2
Hvis du ikke har nogen særlig grund til at bruge xhtml, så er det ssv's løsning du bør bruge. Hvis du derimod rent faktisk står i den sjældne situation at xhtml er det mest hensigtsmæssige at bruge (i hvilket fald du bør være opmærksom på at en text/html content-type er uhensigtsmæssig), så kan de to valideringsfejl undgås ved at lægge scriptet i en ekstern fil og linke til det eller ved at markere det som CDATA, fx:

<script type="text/javascript">
<![CDATA[
//scriptkode der gerne må indeholde &, < og > ...
]]>
</script>
Avatar billede nemlig Professor
02. januar 2009 - 19:07 #3
hmmm - jeg er meget i tvivl om jeg skal gøre brug af xhtml. Jeg er blevet anbefalet xhtml af en af "guruerne" her på Eksperten, og umiddelbart fortsætter jeg nok med det. Mener at jeg fik oplyst, at det er den vej udviklingen går.
Jeg løste de 2 fejl ved micc's forslag.
Tak til jer begge 2 - send venligst et svar og jeg fordeler pointene mellem jer.
Avatar billede micc Nybegynder
02. januar 2009 - 20:02 #4
Hvis du har en xhtml doctype og overholder xhtml-standarden, men har content-type=text/html, så vil dokumentet blive fortolket ligesom hvis det havde været almindelig html.
Hvis du derimod har det føromtalte xhtml dokument med content-type=application/xhtml+xml så vil de moderne browsere (FF, Opera, Safari etc.) fortolke det som xml (hvilket går hurtigere), mens IE vil tilbyde brugeren at downloade det som en fil - en uhensigtsmæssig adfærd der desværre nok tidligst bliver ændret i IE9. :(

Så det varer nok et godt stykke tid for xhtml er bredt anvendeligt.
Avatar billede olebole Juniormester
03. januar 2009 - 19:36 #5
<ole>

Jeg tror ikke, du løber ind i kompetente kodere på Eksperten (eller andre steder), der går ind for alm. brug af XHTML, som WWW ser ud idag - med mindre du har helt specieller årsager og sitet ikke skal virke i IE. IE7 understøtter som bekendt slet ikke stringent XHTML - og de fleste andre browsere 'lader blot somom' de understøtter XHTML  =)

"Den vej udviklingen går" ... nuvel, det er det da - men det varer adskillige år, før det kan bruges til noget.
Det svarer lidt til at sige: "Bare ryg cigaretter, så du bliver blå i hovedet. Om 20 år kan lægerne uden tvivl kurere lungekræft". Det er sikkert ganske korrekt, men det er altså om 20 år - og derfor helt uden interesse eller aktualitet idag  ;o)

Prøv at læse disse to. De er godt nok ikke helt nye, men der er ikke sket stort på området, siden de blev skrevet:
    http://www.eksperten.dk/artikler/537
    http://www.eksperten.dk/artikler/538

/mvh
</bole>
Avatar billede olebole Juniormester
03. januar 2009 - 19:48 #6
- og der er ingen fremtidssikring i at bruge dagens XHTML-versioner. Dine sider skal alligevel skrives om, når XHTML 2.0 udkommer og bliver understøttet.

Derudover er dine scripts komplet inkompatible med XHTML - og når du scripter mod HTML (og ikke engang under HTML4 er jQuery validt!), skriver du jo alligevel ikke XHTML, selvom din markupkode vaiderer som sådan.

Når du bruger 'text/html', er der heller ikke tale om XHTML.

Med andre ord er markup'en det eneste ved din kode, der kan minde lidt om XHTML. Resten har ikke - og resultatet er derfor HTML-sovs ... ikke XHTML.

Der er kun ganske få og helt små forskelle på markup under XHTML og HTML 4.01. De virkelig store forskelle ligger helt andre steder. Derfor kan du ligeså godt skrive HTML 4.01 og i stedet øve dig i at skrive ordentlig DOM- og scriptkode.

Når den tid kommer, lærer du alligevel at skrive XHTML-markup på et kvarter, hvis du i forvejen kan skrive valid HTML 4.01  ;o)
Avatar billede nemlig Professor
03. januar 2009 - 21:02 #7
olebole: Så har jeg læst dine artikler, som har været meget inspirerende, omend jeg ikke forstår alt.
Hermed kan vi vel konkludere, at ssv's forslag i 1. kommentar i denne tråd er et godt bud på, hvordan min <head>-sektion kan se ud??
Og det betyder vel også, at jeg fx. skal ændre mine <br /> til <br>, <img /> til <img> osv.???

Sender olebole og ssv også et svar. Så forhøjer jeg og fordeler pointene.
Avatar billede olebole Juniormester
05. januar 2009 - 09:54 #8
Ja, jeg bruger selv HTML 4.01 Strict som min foretrukne DTD - og ja, så skal du bruge alm. HTML-lukninger af 'tomme' tags (meta, link, br, hr, img, osv). Du kan evt. kikke i denne tråd, hvor vi også diskuterede emnet:
    http://www.eksperten.dk/spm/858357
Avatar billede nemlig Professor
05. januar 2009 - 16:48 #9
Tusind tak for inputtene og ikke mindst link til artikler og spørgsmål.
Jeg er blevet meget mere afklaret.
Avatar billede olebole Juniormester
05. januar 2009 - 20:30 #10
Selvtak - det glæder mig  =)
Avatar billede nemlig Professor
07. januar 2009 - 22:32 #11
Undskyld jeg lige forstyrer igen.
Jeg blive alligevel noget forvirret med jeres fraråden af xhtml og content='text/html'.

Jeg kan se at store sider som Nykredit, Danske Bank og selv Eksperten er skrevet med xhtml og content='text/html.

Jeg går da ud fra, at udviklerne har sikret, at deres hjemmesider virker i alle gængse browsere. Jeg selv anvender IE 7.0, og jeg har ikke problemer med at se disse sider.

Har jeg alligevel misforstået noget.
Avatar billede erikjacobsen Ekspert
07. januar 2009 - 22:36 #12
Nej. Det er bare dem, der har valgt XHTML, der har misforstået det. Deres sider kan måske valideres, men overholder næppe XHTML-standarden når du kigger på javascript-delen - fx. håndtering af felter i <form>.

Men du kan regne med de tester - og det virker sikkert. Og ordet XHTML sælger sikkert.
Avatar billede olebole Juniormester
08. januar 2009 - 20:02 #13
XHTML er som rynkecreme:

Alle, der bruger rynkecreme - og alle, der sælger og reklammerer for det - fortæller, det virker fantastisk, og at det er Guds overdådige gave til menneskeheden.

Alle, der ved noget om biologi - og om, hvordan hud er opbygget - ryster smilende på hovedet  =)

Men det holder gang i troen, drømmene og forretningen. Samtidig er ingen af dele praktisk at bruge på et gadehjørne - så dér hænger folk da i det mindste ikke ud, mens de bruger det. Helt skidt er det skam ikke  ;o)
Avatar billede nemlig Professor
08. januar 2009 - 20:56 #14
erikjacobsen og olebole:
Så blev den ged vist barberet.:o)
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