Hoe valideer je semantische HTML?

In zijn artikel The Meaning of Web Standards geeft Derek Featherstone aan dat sommige mensen een verkeerd beeld hebben van het begrip “webstandaarden”. Veel mensen, zowel projectleiders als ontwikkelaars, verwachten bij de term web standaarden meetbare regels (measurable rules or qualities that can be held up as a comparison). Derek definieert webstandaarden daarentegen als een strategie (een overall strategy for development).

Het is dus lastig te bepalen wanneer een website werkelijk aan webstandaarden voldoet. Natuurlijk kun je de HTML van een pagina valideren. Maar helaas kun je heel goed een validerende pagina bouwen die niet toegankelijk of semantisch is. Nog regelmatig kom ik HTML tegen die heel stoer “XHTML” of “tableless” genoemd wordt, maar bij nadere inspectie uit louter DIV’s en SPAN’s bestaat. Valideert de pagina? Ja, hij valideert. Voldoet hij aan webstandaarden? Nee, absoluut niet.

Maar kun je HTML dan valideren op semantiek? Hoe kun je bepalen of iets betekenis heeft of niet? Waarom zou een bepaalde regel tekst niet in een SPAN, maar in een H2-element geplaatst moeten worden? En waarom in een H2 en niet in een H3?

Op dit soort vragen is natuurlijk geen eenduidig antwoord te geven. Veel hangt of van de context van de HTML en van het grafisch ontwerp dat je moet implementeren. Toch denk ik dat het mogelijk is om een aantal richtlijnen op te stellen aan de hand waarvan je kunt bepalen of jouw HTML semantisch is of niet.

Richtlijnen voor validatie van semantische HTML

  1. Gebruik tabellen alleen voor data en niet voor opmaak.
  2. Gebruik voor een titel een header-element (H1 tot en met H6).
  3. Een zin op één regel is vaak een (verkapte) titel. Gebruik hiervoor geen STRONG of SPAN gevolgd door een BR, maar een header-element.
  4. Gebruik het H1-element maar één keer.
  5. Gebruik altijd eerst een lager header-element (bijvoorbeeld H3), voordat je een hoger header-element (bijvoorbeeld H4) inzet.
  6. Denk na voordat je een BR gebruikt. Wanneer je een aantal keer achter elkaar een tekstje hebt, gevolgd door een BR, praat je waarschijnlijk over een list en kun je beter een UL gebruiken. Dit geldt ook voor linklijsten.
  7. Denk na voordat je een DIV inzet. Bij geneste DIV’s moeten alarmbellen gaan rinkelen. Het riekt naar div-itis.
  8. Images die niets toevoegen aan de inhoud, maar gebruikt worden voor de opmaak, kunnen beter in een CSS-file geplaatst worden.
  9. Plaats een citaat in een Q, CITE of een BLOCKQUOTE.
  10. Gebruik in een FORM-element geen P of DIV om de pagina te laten valideren, maar FIELDSET om samenhangende onderdelen van een formulier te groeperen.
  11. Voor adressen, handtekeningen en dergelijke bestaat het ADDRESS-element.

Opmerkingen:

  • Voor de hand liggende regels als “Plaats een paragraaf in een P” heb ik buiten beschouwing gelaten. Shirley Kaiser somt ze op in haar verhelderende artikel Semantics, HTML, XHTML, and Structure.
  • In de bovenstaande richtlijnen heb ik de HTML-elementen voor de duidelijkheid in hoofdletters opgenomen. XHTML vereist echter dat de HTML-elementen lowercase zijn.
  • Het is lang niet altijd mogelijk om DIV’s niet te nesten (punt 7.). In een ontwerp als het volgende ontkom je er waarschijnlijk niet aan:
    Een lastig, geblokt ontwerp

Enkele interessante links:

Ik benieuwd naar andere tips en ervaringen!

Tags: , , , , , ,

7 Reacties op “Hoe valideer je semantische HTML?”

  1. dlask zegt:

    Antwoord op de titelvraag: NIET, als er iets *niet* semantisch is dan is het HTML. De regels die je geeft zijn niets meer dan wat handige afspraken om html nog een beetje leesbaar voor de goegemeente te houden.
    Wel interessant in dit kader is mijn favoriete W(3)C lectuur over ‘Semantic Web’ (http://www.w3.org/2001/sw/), maar dan gaat het over andere technieken als RDF.

  2. Krijn Hoetmer zegt:

    Voor ‘leken’ gebruik ik meestal de vergelijking tussen Excel en Word (hoewel die soms wel scheef is). Een opstel schrijf je bijvoorbeeld ook niet in Excel.

    Ik heb ooit eens een simpele case (beetje verouderd ondertussen) geschreven die meteen werd begrepen door de lezer(e)s.

    Om semantische HTML te ‘valideren’ zet ik meestal alle stylesheets uit (behalve browser defaults) en kijk ik of er nog enige logica uit te halen is.

    Ow, en dlask; die handige afspraken voor leesbaarheid zijn juist wat iets semantisch maakt ;)

  3. Kars zegt:

    Het is voornamelijk een discussie over wat je bedoelt met de term ’semantisch’. Daarom hebben ze het bij Microformats bijvoorbeeld over “the lower case semantic web”. Want de gene die jij noemde, Dlask, de upper case variant, die van Berners-Lee, is er één die nog ver weg is en een forse aanpassing in de gebruikte technologieen vereist. Tom verkiest blijkbaar de pragmatische aanpak, die gedeeld wordt door bijvoorbeeld de mensen achter Technorati. Niet zonder succes, overigens.

  4. Edgar zegt:

    Ik sluit me aan bij Kars. Semantiek gaat over het interpreteren van tekens. Als je een FORM element ziet in een web pagina (document) dan weet je dat het over een web formulier gaat. Dit zou je een eenvoudige (”lower case”) vorm van semantiek kunnen noemen. Dit zegt inderdaad niets over de interpretatie van de pagina zelf. Daar gaat een techniek als RDF over.

    Een probleem met XHTML is natuurlijk dat het een relatief simplistisch en generiek formaat is. Veelal good enough voor het maken van een web pagina maar niet als je er meer semantiek aan wilt toekennen. Er is nu eenmaal heel wat verschil tussen web pagina’s.

    Nog wel aardig om te vernoemen is dat XHTML Modularization bedoelt is om de taal XHTML uit te breiden voor meer specifieke toepassingen. Daarmee kan (de semantiek van) de taal worden uitgebreid. Dit wordt bijvoorbeeld beschreven in het artikel “Extending the Web: XHTML Modularization“. Een mooi voorbeeld is MathML. Uiteraard zal de client (user agent in W3C speak; meestal een browser) deze uitbreiding ook moeten begrijpen. Dit kan door browser plugins, custom client devices of als de uitbreiding echt populair is native support in browsers.

  5. Kars zegt:

    Wat niet wil zeggen dat de visie van Tim Berners-Lee geen interessante is, en dat je punt wel degelijk relevant is, Dlask! Ik denk dat zowel de uper- upper- als de lower-case van het semantische web een interessante is en het nastreven waard.

  6. dlask zegt:

    pff gelukkig :-)

  7. Tom zegt:

    @Krijn: Alle stylesheets uitzetten is inderdaad ook een goeie! Dan Cederholm noemt het je pagina bekijken als op een rontgenfoto (in Digital Web Magazine).

Laat een reactie achter