The Law
The law on throwing items through windows is very clear...
Iedereen die betrokken is bij webdesign of -ontwikkeling zal de term 'semantisch' tegenkomen met verwijzing naar HTML5 en het web in het algemeen. Deze vaak problematische term is begrijpelijkerwijs verwarrend voor velen van ons, vooral omdat er een duidelijk gebrek aan consensus is over de definitie ervan in bepaalde contexten.
In dit artikel zullen we onderzoeken wat HTML5 semantischer maakt dan zijn voorgangers, en schetst wat dit betekent voor webontwikkeling nu en in de toekomst.
Het concept van de semantiek komt van het gebied van de taalkunde gewijd aan de studie van de betekenis. Met natuurlijke talen zoals het Engels, maken we onderscheid tussen syntaxis (of grammatica) en betekenis. Als je aan een zin denkt, heeft betekenis te maken met hoe mensen het interpreteren:
"De man gooide de computer door het raam."
Semantiek heeft betrekking op het aspect van de zin dat mensen die het lezen de boodschap laat begrijpen die erin is vervat. Samen met syntaxis is semantiek een belangrijk onderdeel van wat communicatie via taal mogelijk maakt. Wanneer we het hebben over semantiek in relatie tot HTML, hebben we het over communicatie tussen computerprogramma's, niet over mensen. Semantische HTML is voornamelijk gericht op het verbeteren van de mate waarin toepassingen webcontent kunnen verwerken of interpreteren. Bekijk bijvoorbeeld het volgende uittreksel van de webpagina met enkele van de langer bestaande HTML-structuren:
The man threw the computer through the window.
De elementen (en attributen) geven de browser informatie over hoe de inhoud aan de gebruiker moet worden gepresenteerd. Alinea-elementen worden standaard weergegeven met witruimten erboven en eronder, afbeeldingselementen worden weergegeven met behulp van het afbeeldingsbestand in het src-attribuut, enzovoort. Wanneer de browser elk van deze elementen tegenkomt, wordt de inhoud op een bepaalde manier weergegeven die uiteindelijk wordt bepaald door de gebruikte tags.
Het is belangrijk om te begrijpen dat HTML5 voor de eerste keer geen semantiek introduceert in HTML. HTML had al een ingebouwd niveau van semantiek. De bestaande HTML-structuren zijn in verschillende mate zinvol. Als je kijkt naar dit bekende HTML-element zoals opgenomen in het bovenstaande fragment, zie je wat ik bedoel:
Hoewel het afgekort is, geeft de naam van het element img iets betekenisvols aan over de inhoud van de tag, dat wil zeggen dat het een afbeelding is. Op deze manier kunt u het semantische aspect van HTML beschouwen als vergelijkbaar met metagegevens, in die zin dat de elementtag en attribuutnamen de gegevens beschrijven (de gegevens in een webpagina zijn het element en de attribuutinhoud).
Sommige structuren die we in HTML hebben gebruikt, vertellen de browser hoe de inhoud van een pagina moet worden opgemaakt. Naarmate de tijd verstreek, zijn we aangemoedigd om de opmaak van een pagina te scheiden van de inhoud.
We hebben bijvoorbeeld de i-tag vervangen door em, wat zinvoller is en de browser niet precies vertelt hoe de tekst in het element moet worden weergegeven. Het doel van het gebruik van em in plaats van i is om informatie over de aard van het contentitem over te brengen, in plaats van informatie over het stylen ervan. De em beïnvloedt uiteraard de stijl, wat de belangrijkste reden is dat we deze gebruiken, maar laat de details van de stijl over aan de browser en / of CSS-code die idealiter gescheiden is van de paginamarkering.
Semantische HTML5 is een grotere stap in dit proces. Het uiteindelijke doel is om een systeem te creëren waarin applicaties toegang hebben tot een groter niveau van betekenis - dit is echter niet AI, het gaat er alleen om beschrijvende informatie over gegevensitems op te nemen in de codestructuren die deze modelleren.
Als u in het verleden XML hebt gebruikt, heeft u enige bekendheid met de concepten in semantische opmaak. Wanneer u bijvoorbeeld een XML-document (of schema) voor een gegevensset ontwerpt, kiest u elementen en attributen om items in de gegevens te modelleren. In het ideale geval definiëren de element- en attribuutnamen de gegevensitems op een zinvolle manier:
Jim Smith 23 November 2012
De ontwikkelaar heeft hier namen gekozen die intuïtief de gegevenswaarden beschrijven die worden gemodelleerd. Met HTML5 kun je niet je eigen elementen kiezen, omdat het niet vrij uitbreidbaar is. De structuren die ervoor gekozen zijn hebben eenvoudigweg meer inherente betekenis in vergelijking met eerdere versies.
We hebben gesproken over betekenis, maar in feite zijn er verschillende manieren waarop een element of een ander codefragment zinvol kan zijn.
De img-tag is zinvol omdat het iets vertelt over de inhoud van het element en beschrijft wat het is.
Sommige van de nieuwe HTML5-elementen, zoals koptekst en voettekst, zijn zinvol omdat ze iets aangeven over de rol of het doel van het element binnen de algehele structuur van een pagina.
Dus wat houdt dit versterkte, betekenisvolle aspect van HTML5 in? In essentie heeft HTML5 een aantal nieuwe elementen waarmee u meer semantische informatie in uw paginamarkup kunt opnemen. Er zijn een hoop nieuwe elementen, waarvan we er hier enkele zullen bekijken. De header-tag geeft informatie over de inhoud van het element en over zijn rol binnen de paginastructuur:
Man in Window Outburst
Het header- element kan andere elementen bevatten en heeft de neiging om ten minste één headingelement te bevatten. De footer-tag is vergelijkbaar, waarbij de tag opnieuw iets zinvols weergeeft over de inhoud van het element en de relatie ervan tot de rest van de pagina:
De nav- tag beschrijft het doel van een paginasectie, dat wil zeggen dat het navigatielinks bevat:
Het sectie- element bevat meestal een groep items over hetzelfde thema, vaak samen met een koptekst. Het sectie-element heeft een vrij abstracte betekenis, maar het is niettemin zinvol:
What happened
Police officers apprehended the man at 3.30pm...
Het artikelelement is vergelijkbaar, gebruikt om een item te definiëren dat op zichzelf staat:
The Law
The law on throwing items through windows is very clear...
Een opzij- label geeft de rol van een element ten opzichte van de context op de pagina aan, zoals in de volgende uitgebreide versie van de bovenstaande artikelcode:
The Law
The law on throwing items through windows is very clear...
Dit zijn slechts een paar van de nieuwe HTML5-elementen die semantische verbeteringen bieden, andere bevatten media en gebruikersinvoerelementen en extra attributen. De opname van microgegevens in HTML5 biedt ook meer mogelijkheden voor het opnemen van semantische informatie in webpagina's en toepassingen. Zoals u kunt zien, zijn sommige van deze nieuwe elementen zinvol in termen van zowel inhoud als structuur.
Denk aan enkele van de oudere tags (waarvan er veel nog steeds in de buurt zijn), zoals div. Het div-element is gewoon een brok van een pagina - de tag-naam vertelt ons absoluut niets over de inhoud van het element of zijn rol binnen de pagina. Met andere woorden, de tag geeft maar heel weinig betekenis. Veel van de al lang bestaande tags geven ofwel helemaal geen betekenis, of in sommige gevallen een generieke, losjes gedefinieerde betekenis. Elk item op een webpagina was onderdeel van een reeks zeer algemene elementcategorieën. De sleutel tot het maken van iets zinvols is specifiek zijn. Met de nieuwe HTML5-tags kunnen we webinhoud definiëren met behulp van meer specifieke termen.
Als u al geruime tijd webpagina's maakt, kunnen sommige nieuwe HTML5-elementen voor u een belletje doen rinkelen. In werkelijkheid ontwikkelden ontwikkelaars al een niveau van betekenis in hun pagina's met behulp van de elementattributen, met name klasse en ID. Als u bijvoorbeeld ooit een element een klasse- of ID-kenmerk van 'footer' of 'header' heeft gegeven, bent u zeker niet de enige. Met HTML5 wordt deze betekenis in de markup zelf weergegeven in plaats van in attribuutwaarden. Als u deze kenmerken hebt gebruikt om bepaalde stijleigenschappen te implementeren, deed u effectief iets dat in HTML5 standaard is ingebouwd - en met semantische elementen zijn er extra voordelen ...
OK, dit gaat allemaal goed, maar het zou je vergeven zijn als je vraagt waarom we naar al deze problemen gaan voor iets dat in essentie conceptueel / academisch lijkt. Nou, je kunt er zeker van zijn dat er goede redenen zijn om in een meer semantische richting te bewegen. Zoals we hebben gezien, kunnen we met HTML5-semantiek markup-code maken die contentitems beschrijft. Met dit beschrijvende aspect van de code kunnen andere programma's effectiever gebruik maken van de inhoud, met verschillende toepassingen:
Toen ik een aantal jaren geleden bij uni was, herinner ik me een docent die ons vertelde dat het gebied van academisch onderzoek een revolutie zou ondergaan door vorderingen bij het zoeken. Hij had het over het semantische web - het is onnodig om te zeggen dat het nog niet is gebeurd. Het nemen van elke vorm van gerichte nieuwe richting met iets zo divers en grillig als het World Wide Web wordt altijd een moeilijke taak. Door echter aan boord te komen met het idee van semantische markup, kunnen wij als ontwikkelaars de beweging naar een toekomstig web dat toegankelijker, doorzoekbaar en consistent is, beïnvloeden voor alle gebruikers.
Gebruik je de semantische elementen van HTML5? Geeft het focussen op semantiek een product van hogere kwaliteit? Laat ons weten wat je denkt in de reacties.
Uitgelichte afbeelding / miniatuur, maakt gebruik van taalafbeelding via Shutterstock.