foutmeldingen met W3C validator HTML Strict

Status
Niet open voor verdere reacties.

ringo1

Gebruiker
Lid geworden
12 nov 2011
Berichten
112
beste ik heb mijn forum laten controleren door W3C validator. ik kom op 28 errors en 14 warnings

wie kan mij er wat bij helpen. hier zijn er al een paar

Line 101, Column 217: end tag for "img" omitted, but OMITTAG NO was specified
…aradijs.be/images/infobanner.gif" alt="infobanner" height="40" width="150"></a>


Line 110, Column 37: there is no attribute "bgcolor"
<table border = "3" bgcolor="darkgreen" width="75%">


Line 107, Column 7: end tag for "br" omitted, but OMITTAG NO was specified
<br>


Line 112, Column 72: element "center" undefined
…al.php"><span style="color: #FFFF00;"><center> portal </center></span></a></th>


alvast bedankt

grtz ringo
 
Heb je misschien ook een URL voor ons,
zodat we je met de code in de hand wat tips kunnen geven.

En misschien moet je je nog even wat meer verdiepen in html,
want dit zijn nu ook weer niet de meest spectaculaire meldingen.
De fouten die je hiet toont, hadden zich niet hoeven voordoen
en ze zijn bovendien vrij simpel te verhelpen.
 
Nu we de URL hebben, kunnen we zelf ook de Validator inschakelen
en nu zien we dat je niet met HTML Strict werkt,
maar met Xhtml Strict.
Da's wel effe wat anders.

Nu vermoedde ik dat al, want alleen al de foutmelding over Line 107
is iets typisch van Xhtml.

Xhtml vereist dat je een element altijd sluit.
Nu is die Xhtml regel een beetje apart,
dus daar moet je je even in verdiepen.

Zoek naar "xhtml tags sluiten"
Een van de zoekresultaten is deze
http://www.homepage-maken.nl/xhtml/les1.php
en daar wordt al wat uitgelegd aan de hand van de <img>-tag.
 
zeer wel bedankt voor de hulp, ik heb ondertussen al een paar foutje kunnen oplossen.

dit zijn er nog een paar.hoe kan ik die oplossen?

Line 116, Column 79: element "center" undefined
…x.php"><span style="color: #FFFF00;"><center> galerij </center></span></a></th>

Line 177, Column 19: required attribute "action" not specified
<form name="count">


Line 178, Column 132: document type does not allow element "input" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag
…or: #66FF00; background-color:#006600; font-weight: bold; text-align: center;">
 
Line 116, Column 79: element "center" undefined
…x.php"><span style="color: #FFFF00;"><center> galerij </center></span></a></th>
Die is makkelijk: gebruik geen <center>. Dit is verboden in Xhtml strict.
In plaats daarvan kun je beter CSS-rules gebruiken.

Line 177, Column 19: required attribute "action" not specified
<form name="count">
Als je een form gebruikt, hoort daar een aktie bij. Bijvoorbeeld het versturen van invoer-gegevens.
Om die reden moet een <form>-element verplicht voorzien zijn van een "action"-attribuut.

Line 178, Column 132: document type does not allow element "input" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag
…or: #66FF00; background-color:#006600; font-weight: bold; text-align: center;">
Formulier zit niet goed in elkaar.
Advies: leer meer over het gebruik van html-formulieren.
 
Tip: voor wat de validator-foutmeldingen precies betekenen, kan je veel hebben aan de HTML-Tidy add-on voor Firefox. Als je daarna de broncode van een pagina bekijkt, staan de foutjes netjes op een rij, met een uitleg die vaak begrijpelijker is dan die van de W3C-validator.

Met een lege action="" voor een <form> neemt dacht ik de validator ook genoegen.
 
Met een lege action="" voor een <form> neemt dacht ik de validator ook genoegen.

dat klopt. Een lege action heeft trouwens hetzelfde effect als de naam van de huidige pagina! Zie ook hier.
 
ik werk op mijn website met een lichtkrant

nu zie ik dat dit niet meet html strics is

deze code gebruik ik

Code:
<marquee width="100%" scrollamount="4"><font size="6" color="00CCFF">Welkom op de website van visclub de SNOEKVISSERS</font></marquee>

hoe kan ik dit html strict maken?

grtz ringo
 
Marquee is geen officiële html tag
dus dat kun je niet laten valideren.
 
Valideren is belangrijk, maar......

Het valideren van je site is belangrijk omdat slechte/foute html van invloed kan zijn op het functioneren van je website. Het gevolg zou kunnen zijn dat je website niet in alle browsers hetzelfde of niet foutloos wordt getoond.

Validatie kan ook zaken opsporen die slecht zijn voor de toegankelijkheid van de site ('accessability') en voor de resultaten in zoek-machines.

Maar je moet validatie niet gaan benaderen als iets dat je moet hebben "om te hebben".
Als jouw hele site valideert
en het toevoegen van een marquee is het enige puntje dat de validatie niet honderd procent maakt, dan zou je de keus kunnen maken om die marquee toch maar te laten staan.

Wat kan je gebeuren?

Of wil je die leuke buttons op je site plaatsen? Die aangeven dat je 100% voldoet aan de regels?
 
Hoi ringo,
Inderdaad is de <marquee>-tag geen valid html: niet alleen geen xhtml1.0-strict of html4.1-strict, maar ook niet de transitional-varianten van de twee. De <marquee> heeft gewoon nooit in de html-specificatie gezeten.
De <marquee> was een kunstje dat indertijd door Internet Explorer bedacht werd, en nadien door 9 van de 10 andere browsers ook (helemaal of grotendeels) ondersteund is gaan worden. Dus het werkt wel, maar het blijft invalid!
Er zijn zo ongeveer 3 alternatieven (behalve het niet valid laten blijven van de pagina):

  1. Met css3 mag het wel
    In de nieuwe css23 is de marquee-eigenschap ingevoerd, en kan zonder validatie-problemen gebruikt worden. Zie de marquee-module: www.w3.org/TR/css3-marquee.
    Maar... de huidige browsers willen dit niet erg ondersteunen: zie hier. Dit alternatief valt dus af.

  2. Nabouwen met javascript
    Je kunt met javascript een functie maken die een element op de site verplaatst: horizontaal en/of verticaal, over een bepaalde afstand, met een bepaalde snelheid, en met al/niet herhaling. Een Google op "javascript scroller horizontal" laat zien dat er bijzonder veel javascript scrollers op internet donddartelen.
    Nadeel: als javascript uit staat, werkt het niet; je moet een paar maatregelen treffen dat de tekst dan toch stilstaand leesbaar is.

  3. De validator voor de gek houden!
    Je zorgt dat de <marquee>-begintag en de </marquee>-eindtag niet in de html staan, en dat er een element met een ID is waar de marquee in moet komen. Vervolgens laat je met een paar regeltjes javascript die ID opsporen. De html-code van wat in de marquee moet komen wordt even opzij gezet, en de begin- en eind-tag van de marquee wordt eromheen gezet. Samen gaat het weer terug het omringende element in, maar dan heeft de html-validator er geen grip meer op.
    Nadeel: ook hier werkt het niet als javascript uit staat, maar zonder speciale maatregelen is de tekst hier altijd leesbaar.
HTML:
<h2 id="marq">
    Deze marquee is 100% valid xhtml1.0 strict.
</h2>

<script type="text/javascript">
// <![CDATA[
    var innerMarq = document.getElementById('marq').innerHTML;
    document.getElementById('marq').innerHTML = '<marquee behavior="slide" scrollamount="3" scrolldelay="1">'+innerMarq+'</marquee>';
// ]]>
</script>
Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
zeer wel bedankt voor de grondige uitleg:thumb:
ik zal dat eens bekijken.

nu zie ik dat ik nog een paar foutjes heb zoals

Code:
 Line 14, Column 13: start tag was here 
	 <noframes><p>pas op:uw browser ondersteund geen frames</p></noframes> 

Line 16, Column 13: end tag for element "frameset" which is not open 
	 </frameset>


 Line 14, Column 15: document type does not allow element "p" here; assuming missing "body" start-tag 
	 <noframes><p>pas op:uw browser ondersteund geen frames</p></noframes>✉ 

 Line 14, Column 71: end tag for "body" omitted, but OMITTAG NO was specified 
	 <noframes><p>pas op:uw browser ondersteund geen frames</p></noframes>

 Line 2, Column 1: Missing xmlns attribute for element html. The value should be: http://www.w3.org/1999/xhtml 
<html>

hoe kan ik die goed krijgen?

grtz ringo
 
O! :shocked:
Is het een frameset-pagina?
Dan kan ie nooit xhtml-strict worden, want bij een frameset hoort een ander Doctype! *)
Dan zou ik hiermee beginnen:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
Met vriendelijke groet,
CSShunter
_______
*) En het is me een raadsel hoe daar een marquee in kan zitten. Heb je een link naar de pagina?
 
Laatst bewerkt:
Beste ringo,

Ik zie dat je wel de juiste DOC-type gebruikt, maar deze eist ook een extra tag-property
in de html-tag.

HTML:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
Ook nog even die p-tags binnen de noframes-tags weghalen en je kunt weer verder :)
 
hey csshunter,
ik gebruikt deze Doctype! dus daar kan het niet aan liggen
Ah, dan was het dus geen xhtml strict wat je in nr. #9 vroeg ("hoe kan ik dit html strict maken?"), maar gaat het om een andere pagina. ;)

Dan zou ik dit doen:
HTML:
<!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" lang="nl" xml:lang="nl">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>snoekvissers</title>
	<meta name="description" content="personal site"/>
	<meta name="omschrijving" content="persoonlijke website"/>
	<meta name="keywords" content="snoekvissers vissen hengelen leden"/>
</head>

<frameset rows= "28%,*">
	<frame noresize="noresize" scrolling= "yes" src="http://www.vissersparadijs.be/website/frame1.htm" />
	<frameset cols= "15%,*">
		<frame noresize="noresize" scrolling= "yes" src="http://www.vissersparadijs.be/website/frame2.htm" />
		<frame scrolling="yes" src="http://www.vissersparadijs.be/website/frame3.htm" name="hoofdframe" />
	</frameset>
	
	<noframes>
		<body>
			<p>Oeps: uw browser ondersteund geen frames.</p>
		</body>
	</noframes>
</frameset>
</html>
Toelichting:
  • Het xmlns-toevoegsel in de <html>-tag moet er inderdaad bij.
  • Er hoort een <meta> in met bepaling van de "charset" (= karakterset = hoe een browser de lettertekens en andere tekens op de pagina moet interpreteren).
  • De uitroep van de html-validator dat er een </frameset>-tag in staat terwijl er geen <frameset> geopend zou zijn, komt omdat er in de tweede keer <frameset> een eind-slash / is ingeslopen die er niet in hoort:
    Code:
    <frameset cols= "15%,*"[COLOR="red"]/[/COLOR]>
    Door die slash wordt de tag meteen weer afgesloten, terwijl de inhoud en de eindtag nog moeten komen.

  • De <p> moet er niet uit, maar er moet een <body> in. Browsers die geen frames ondersteunen, slaan de <frameset>-, de <frame>- en de <noframes>-tag over (en ook hun eindtaga), omdat ze die niet begrijpen. Die lezen dus:
    HTML:
    <!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" lang="nl" xml:lang="nl">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<title>snoekvissers</title>
    	<meta name="description" content="personal site"/>
    	<meta name="omschrijving" content="persoonlijke website"/>
    	<meta name="keywords" content="snoekvissers vissen hengelen leden"/>
    </head>
    
    <body>
    	<p>Oeps: uw browser ondersteund geen frames.</p>
    </body>
    
    </html>
Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
Zeer wel bedankt voor jullie duidelijk antwoord :thumb:

nog een vraagje, moet ik nu in al de pagina's die geopend worden in de frames ook deze
Code:
html xmlns="http://www.w3.org/1999/xhtml" lang="nl" xml:lang="nl">
toevoegen? of is dit enkel voor de 3 frame bestanden?

grtz ringo
 
Hoi Ringo,
Ja, dat regeltje is voor alle pagina's waarin een xhtml-Doctype gebruikt wordt.
Het is verplichte kost (zegt w3c hier), en anders gaat ook de html-validator protesteren.

Toelichting:
Een xhtml-document is een speciale vorm van een XML-document.
De "xmlns" betekent "XML NameSpace", en het regeltje zegt dat het gewone xhtml is wat er volgt.
Er zijn ook andere NameSpaces, bijvoorbeeld "MathML" (mathematic markup language) voor codes die in wiskundige formules moeten komen, en die een andere structuur hebben dan normale html-code.

Met vriendelijke groet,
CSShunter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan