Webpagina

De mogelijkheden die in webpagina's kunnen worden ondergebracht, zijn in de loop der jaren aanzienlijk uitgebreid. In de begintijd van het World Wide Web was het al mogelijk om plaatjes in tekst aan te brengen. Latere ontwikkelingen hebben het mogelijk gemaakt dat ook multimedia-inhoud en interactieve elementen konden worden ingebouwd. Het is inmiddels mogelijk om volledige applicaties in een enkele webpagina onder te brengen, bijvoorbeeld door het gebruik van HTML-scripting of Adobe Flash. Gedurende deze ontwikkeling is de definitie van HTML regelmatig aangepast en zijn de capaciteiten van de browsers voortdurend toegenomen. Deze ontwikkeling gaat nog steeds door.

Elke webpagina heeft in principe een eigen uniek adres in de vorm van een URL. Daar zijn echter uitzonderingen op, sommige webpagina's worden dynamisch gegenereerd door een programma of script (zie ook server-side scripting), waardoor dezelfde URL een andere pagina kan tonen op basis van acties van de gebruiker of andere variabele factoren (soort browser, cookies, tijd etc). Het bestaan van frames is ook verwarrend voor de een-op-eenrelatie tussen een webpagina en een URL. Frames maken het namelijk mogelijk dat binnen een webpagina (met een URL) meerdere andere webpagina's (met ieder een eigen URL) kunnen worden ondergebracht.

Een website bestaat uit een aantal samenhangende webpagina's op hetzelfde domein. De beginpagina van een website wordt de hoofdpagina of homepage genoemd.

HyperText Markup Language

De wezenlijke eigenschap van HTML is dat deze hypertekst ondersteunt: documenten en bestanden die verbonden zijn door direct volgbare verwijzingen, de zogenaamde hyperlinks (in het Nederlands ook wel koppelingen genoemd).

Daarnaast is HTML een opmaaktaal zoals vele andere, met notaties voor het aangeven van nadruk in tekst, van kopjes, van indeling in paragrafen, van tabellen, en van plaatjes en multimedia (die echter zelf niet in HTML worden gespecificeerd).

HTML bestaat uit platte tekst waarin met markeringstekens is aangegeven hoe de tekst moet worden geïnterpreteerd, bijvoorbeeld als lijst of als opschrift. Zo'n markering wordt (naar het Engels) een tag genoemd - er is geen goed Nederlands woord voor. HTML wordt meestal bekeken met een webbrowser, een programma dat HTML-documenten opvraagt en als opgemaakte tekst aan de gebruiker toont.

In de loop der jaren is het aantal verschillende tags dat in HTML wordt gebruikt, enorm uitgebreid. Om interpretatieproblemen te voorkomen heeft het World Wide Web Consortium (W3C) aanbevelingen opgesteld over welke tags geldig zijn en hoe ze moeten worden geïnterpreteerd. De oorspronkelijke aanbeveling is een aantal malen geactualiseerd in verband met verdere ontwikkeling van HTML. De laatst geaccepteerde aanbeveling, HTML 4.01, dateert van december 1999.

Sinds het ontstaan van HTML zijn er pogingen gedaan om het tot een exact gestructureerde taal te maken, door te eisen dat de syntaxis van de tags exact gevolgd wordt en hun combinatie aan een precieze grammaticale definitie voldoet. Dit is gedaan door de syntaxis van elke versie van HTML te beschrijven als een toepassing van SGML, en later XML. Dit is een wezenlijke voorwaarde om een uniforme interpretatie van HTML door software te kunnen garanderen. De meeste gebruikers en softwareontwikkelaars hebben zich hier nooit veel van aangetrokken, met als gevolg dat HTML-verwerkende software in de praktijk niet op het correct gebruik van tags mag rekenen, en de eindgebruiker niet op een consistente interpretatie.

Een tweede continue trend in de ontwikkeling van HTML vormden de pogingen om het tot een structurele (of logische) opmaaktaal te maken, waarbij de tags in het document alleen structuur en algemene eigenschappen van de tekst aangeven, terwijl de details van de presentatie apart van het document worden gespecificeerd. Dit heeft als voordelen dat de opmaak ineens kan worden gewijzigd voor alle documenten tegelijk en dat er verschillende manieren van opmaken kunnen worden gebruikt die bijvoorbeeld toegesneden kunnen zijn op de eigenschappen van de gebruiker (misschien kleurenblind of blind) of het weergevende apparaat (misschien een klein beeldscherm of zwart-wit-papier). Om historische redenen is dit aanvankelijk totaal mislukt, waardoor HTML een grote hoeveelheid presentatiespecifieke tags heeft gekregen, maar uiteindelijk toch doorgezet, waardoor in moderne HTML een nette scheiding van presentatiespecificatie mogelijk is, met behulp van CSS. Daarbij blijft gelden dat HTML niet ontworpen of geschikt is voor het ondersteunen van willekeurige paginavormgeving.

Een min of meer gestandaardiseerde vorm om andere soorten interactie te ondersteunen is het inbedden van scripts geschreven in de taal JavaScript. Daarbij blijft gelden dat HTML niet ontworpen of geschikt is voor het ondersteunen van willekeurige grafische user interfaces.

Het derde doorlopende thema in de ontwikkeling van HTML is het spanningsveld tussen innovatie en standaardisering. De concurrentiestrijd tussen producenten van webbrowsers heeft een belangrijke rol gespeeld in de ontwikkeling van HTML. Producenten ontwikkelden op eigen houtje nieuwe tags, die vaak niet door andere webbrowsers werden begrepen, hadden eigen interpretaties van stylesheets en een eigen interpretatie van JavaScript. Sommige van deze HTML-tags zijn later opgenomen in de aanbevelingen, andere niet. Ook nu nog zijn daarvan relicten te vinden in moderne browsers.

Het W3C is een internationale organisatie maar heeft geen bevoegdheid om standaarden vast te stellen, zoals de ISO. De HTML-specificaties van het W3C zijn daarom formeel niet meer dan aanbevelingen. In de praktijk worden de W3C-aanbevelingen echter als standaarden gezien, mede omdat alle belangrijke browserfabrikanten in het W3C samenwerken.

De geschiedenis van HTML ging in de eerste jaren hand in hand met de ontwikkeling van webbrowsers. De belangrijkste spelers daarin waren de concurrerende browsers van Netscape en Microsoft (zie ook browseroorlog). Met elke uitgebrachte browserversie werd de HTML uitgebreid of aangepast. De W3C probeerde aanbevelingen vast te stellen, maar moest regelmatig constateren dat de aanbeveling waaraan gewerkt werd, inmiddels achterhaald was.

HTML werd in 1991 bedacht en ontwikkeld door Tim Berners-Lee om wetenschappelijke documenten van het CERN in Genève gemakkelijker toegankelijk te maken. De Brit baseerde zijn nieuwe opmaaktaal op het reeds bestaande SGML. Hij ontwikkelde ook de eerste webbrowser, WorldWideWeb genaamd. In 1993 werd de webbrowser Mosaic ontwikkeld door het NCSA, die als eerste grafische elementen in HTML ondersteunde. Op basis daarvan ontstond in 1994 Netscape Navigator. Met de komst van deze beide browsers werd het World Wide Web echt populair. Beide browsers voegden elementen toe aan de oorspronkelijke HTML. Kort daarop mengde Microsoft zich in de strijd met een eigen webbrowser.

De eerste officiële specificatie van HTML door de W3C organisatie was HTML 2.0, geaccepteerd in september 1995. Eerder was er gewerkt aan uitbreiding van de oorspronkelijke specificatie onder de naam HTML+ (gepubliceerd in november 1993). Al vóór de officiële acceptatie van HTML 2.0, werd de volgende specificatie (HTML 3.0) voorbereid. Deze specificatie werd achterhaald door het uitkomen van Netscape versie 3 en het voorstel werd in september 1995 verlaten. Het werk werd voortgezet in HTML versie 3.2, dat de naam "Wilbur" meekreeg. Wilbur werd geaccepteerd in januari 1997. In december 1997 werd de HTML 4.0 specificatie geaccepteerd, waarop nog enkele kleine correcties zijn aangebracht in HTML 4.01 (geaccepteerd in december 1999). In het jaar 2000 werd ISO-HTML, gebaseerd op HTML 4.01 Strict, geaccepteerd als een internationale standaard.

De verschillende specificaties zijn grotendeels backward compatible en moderne browsers kunnen documenten met oudere specificaties goed weergeven. Een aantal tags die ooit door browserproducenten zijn bedacht, zijn echter nooit in de specificaties terechtgekomen, en worden ook niet door alle moderne browsers ondersteund.

De HTML-4.01-specificatie was lange tijd bedoeld als de laatste specificatie van HTML. Verdere ontwikkeling van de markup-taal zou plaatsvinden in de vorm van XHTML (een subset van XML) en in de ontwikkeling van stijlbladen en JavaScript.

W3C-directeur Tim Berners-Lee zette echter in een blogposting in oktober 2006 een nieuwe koers uit. Hij constateerde dat een groot deel van de webontwikkelaars en -uitgevers niet bereid was gebleken over te stappen naar X(HT)ML, en dat het daarom nodig was de ontwikkeling van HTML toch voort te zetten. Die ontwikkeling diende volgens Berners-Lee parallel te lopen aan de ontwikkeling van XHTML.

Het W3C stelde daarop in maart 2007 een nieuwe HTML Working Group in, die al in juni 2007 een Working Draft diende te kunnen presenteren. Om dit te kunnen realiseren, zou de Working Group nauw samenwerken met de WHATWG-groep, die uit ongenoegen over de koers van het W3C sinds 2004 werkte aan HTML 5. Volgens de planning zou in 2010 een nieuwe aanbeveling gereed kunnen zijn.

De nieuwe versie van HTML moet volgens het charter onder meer voorzien in rijkere formulieren en nieuwe besturingselementen als menu's en voortgangsindicators.

Een HTML-document kan als los document zijn opgeslagen op een opslagmedium. Dergelijke documenten hebben als extensie .htm of .html. Op het World Wide Web worden (tijdelijke) HTML-documenten vaak op verzoek van een browser gegenereerd met behulp van server-side scripting of CGI. Dergelijke pagina's hebben meestal een URL waarin een andere extensie wordt gebruikt, bijvoorbeeld .asp voor Active Server Pages en .php als het document is gegenereerd met PHP ( PHP Hypertext Preprocessor).

Browsers horen niet naar de extensie te kijken maar naar het content-type van het document om te bepalen wat ze er mee gaan doen. Het content-type wordt door de webserver meegestuurd. De webserver geeft bestanden met de genoemde extensies .asp en .php krijgen hetzelfde content-type als een 'gewoon' html-bestand, namelijk text/html.

(X)HTML kan ook worden gegenereerd door transformatie van XML met XSLT, waarbij de inhoudelijke gegevens in de XML staan en de structuur in de XSLT. De browsers van Mozilla en Microsoft zijn in staat deze transformatie uit te voeren. Andere browsers ondersteunen dit niet. De transformatie kan echter ook op de webserver worden uitgevoerd.

Een DOCTYPE-declaratie aan het begin van het document geeft aan volgens welke specificatie de HTML moet worden geïnterpreteerd. Moderne browsers kennen twee manieren om een HTML-document weer te geven: de Standards compliance mode dat gebruikt wordt voor documenten die voldoen aan de strikte HTML-specificatie, en de Quirksmode die gebruikt wordt voor oudere specificaties. De keuze wordt gemaakt op basis van de DOCTYPE-declaratie.

Een correct HTML-document bestaat meestal naast deze declaratie uit één html-element, dat weer bestaat uit één header-element plus één body-element. In de header staat informatie over het document, zoals de titel en eventueel gebruikte stijlbladen, scripts, en metatags. De body bevat informatie die in het document zichtbaar is. In plaats van een body-element kan ook een frameset-element gebruik worden. Bij gebruik van een frameset worden andere (HTML-)documenten in de frames getoond.

HTML is uitgegroeid van opgemaakte tekst met plaatjes tot een object-georiënteerde benadering van een document. Ook daar heeft het W3C een standaard voor ontwikkeld: het Document Object Model (afgekort tot DOM). Het DOM maakt het mogelijk met behulp van scripts alle elementen van een document afzonderlijk te benaderen en aan te passen; ook kunnen nieuwe elementen worden toegevoegd of bestaande elementen verwijderd.

Steeds meer mensen publiceren een eigen website op internet in de vorm van HTML-documenten. Op internet zijn veel handleidingen te vinden over het maken van HTML-documenten. Omdat HTML-documenten gewoon tekstdocumenten zijn kan de code makkelijk zelf geschreven worden. Er zijn echter ook zogenaamde WYSIWYG HTML-editors beschikbaar die als een tekstverwerker werken en het resultaat als HTML kunnen opslaan.

Ook bieden sommige gratis hostingservices de mogelijkheid aan om online met een paar klikken je eigen site gemaakt uit HTML te maken en online te zetten. Maar hier krijg je snel reclame bij. Een andere tegenwoordig erg populaire manier om snel HTML-pagina's aan te maken, is het gebruik van zogenaamde sjablonen. Dit zijn voorgemaakte paginaontwerpen die gratis - of tegen betaling - van bepaalde plekken gedownload kunnen worden en dan vrij gebruikt mogen worden. Nadeel van deze sjablonen is dat de originaliteit soms op een laag niveau ligt.

Extensible HyperText Markup Language

XHTML biedt, mits goed gebruikt, enkele voordelen boven HTML. Doordat XML-documenten well-formed moeten zijn, kunnen ze makkelijker geïnterpreteerd worden door useragents. Een correcte XML-parser moet namelijk een fatale error geven als een XML-document niet volledig correct is, terwijl bij SGML-parsers complexe error-correcties worden gedaan. Doordat voor het verwerken van XHTML minder rekenkracht nodig is kan deze ook beter verwerkt worden door useragents met minder rekenkracht, zoals mobiele telefoons en pda's.

Door de modularisatie van XHTML kan XHTML makkelijk uitgebreid worden met nieuwe elementen en attributen. Ook worden hiermee de compatibiliteitsproblemen opgelost die ontstonden door onofficiële uitbreidingen van de HTML-standaard die niet door alle browsers werden ondersteund.

In XHTML kunnen verschillende XML-namespaces gebruikt worden, zo kunnen MathML en Scalable Vector Graphics in een XHTML-document verweven worden.

Om XHTML 1.0 compatibel te houden met HTML 4.01 mag XHTML 1.0 worden opgestuurd met het mime-type text/html dat eigenlijk bedoeld is voor HTML. Dit heeft echter enkele nadelen, XHTML die is verstuurd met dit mime-type wordt namelijk gewoon verwerkt als HTML, het document is dan dus eigenlijk invalide HTML 4.01 in plaats van XHTML, zogenaamde tag-soup. XHTML-documenten verstuurd met het correcte application/xhtml+xml-mime-type worden door sommige browsers, onder andere het veelgebruikte Internet Explorer, niet ondersteund. Andere browsers zoals Firefox ondersteunen dit wel.

Metatag

Metatags zijn bedoeld om (niet normaal zichtbare) informatie op te nemen over de inhoud van een website of een webpagina. Hiertoe wordt in de code van de pagina eerst een aanduiding opgenomen van het soort informatie, en daarna de informatie zelf. Die laatste kan beschrijvend van aard zijn, of kan een opsomming van trefwoorden bevatten.

Voorbeelden van metatags zijn "Auteur = Oscar Wilde" of "Het jaar van uitgifte van dit document is 1988.". Het eerste voorbeeld is beter te gebruiken door computers doordat het van een duidelijke syntaxis gebruik maakt: "naam van tag = beschrijving". Het tweede voorbeeld gebruikt natuurlijke taal als syntaxis, wat voor mensen plezieriger oogt, maar voor computers moeilijker te interpreteren is.

Soms wordt informatie zowel in het document zelf gegeven (voor de lezer van het document) als in een metatag (bijvoorbeeld voor programma’s die de collectie waar het document deel van uitmaakt beheren).

Op het world wide web kunnen ook metatags gebruikt worden om pagina’s te annoteren. In HTML, de taal waarin webpagina’s geschreven worden, is hier een speciale faciliteit voor opgenomen. Een metatag is dan de informatie die bovenaan in een HTML-document wordt geplaatst, in de tag head.

Tegenwoordig maken ook andere standaarden gebruik van metatags, bijvoorbeeld het Resource Description Framework. Deze metatags verschaffen meer informatie over de pagina, zoals keywords (sleutelwoorden – die handig zijn voor zoekmachines) of description (een korte beschrijving van de pagina).

Metatags kunnen ook zorgen voor paginaspecifieke taken, zoals het automatisch laden van een ander HTML-document.

In het begin van het world wide web werden metatags veel gebruikt om informatie over bepaalde webpagina’s op te nemen in de pagina zelf. De auteurs van de pagina gaven kort een beschrijving van de pagina en enkele steekwoorden.

Het was de bedoeling dat zoekmachines aan de hand van deze tags betere resultaten zouden opleveren. De makers van websites gaven echter op grote schaal valse of irrelevante metatags op, bijvoorbeeld populaire zoektermen die niets met de pagina zelf te maken hebben, zodat zoekmachines op een slimmere manier moesten bepalen hoe relevant een website is. De laatste tijd zijn metatags echter weer meer in gebruik. Zo neemt bijvoorbeeld Google de description-tag een-op-een over en dat kan weer bijzonder handig zijn voor websites met weinig tekst-inhoud, zoals flash-pagina’s. De tekst in de 'description' moet echter wel als leesbare tekst op de pagina staan en geen onderdeel zijn van een 'Flashframe'. Dit laatste geldt overigens óók voor de metatags 'title' en 'keywords'. Metatags en metadata hebben ook een mogelijke toepassing binnen het semantisch web. Daarnaast biedt Google de mogelijkheid om twee verschillende HTML-scripts aan te maken om de indexering door de zoekrobot te optimaliseren en dus de vindbaarheid te vergroten. Deze scripts worden aangemaakt in een (gratis) aan te maken Google-account en bestaan uit een code gebaseerd op de aanwezigheid van een sitemap en als tweede code een 'trackercode' (Google Analytics).

Frame

Een webpagina kan opgebouwd zijn uit meerdere afzonderlijke documenten, die ondergebracht zijn in een hoofddocument. In het hoofddocument kan met een frame de url, de positie en afmetingen van een ander HTML-document worden aangegeven. Het hoofddocument bevat in dat geval de frameset: het raamwerk van deelpagina's.

Door het gebruik van frames is het mogelijk om een webpagina slechts gedeeltelijk te vervangen met een andere pagina. Dit heeft zekere voordelen, omdat dan bijvoorbeeld het onderdeel van het document dat bedoeld is voor navigatie kan blijven staan, terwijl in een ander deel van het document een andere inhoud kan worden getoond als respons op een klik in het navigatiegedeelte.

Het gebruik van frames heeft echter ook een aantal belangrijke nadelen.

Ondersteuning voor frames werd door Netscape ingevoerd met de webbrowser Netscape Navigator 2.0. Vrijwel alle moderne browsers ondersteunen frames. De W3C heeft frames opgenomen in de standaard voor HTML (4.0) en XHTML (1.0), maar beveelt de toepassing van frames niet aan.

Een variant van de frames werd als inline frame (iframe) door Microsoft geïntroduceerd met Internet Explorer versie 3.0.

Bij het gebruik van frames wordt het hoofddocument in zijn geheel opgesplitst in afzonderlijke documenten met een eigen URL. Tekst, plaatjes en andere informatie uit het hoofddocument wordt niet getoond, tenzij de browser geen frames ondersteunt - maar dan worden de aangegeven onderliggende documenten niet getoond.

Als een browser ondersteuning biedt voor frames, dan worden de frames behandeld als aparte vensters met een eigen geschiedenis en eventueel een eigen naam. In een hyperlink kan worden aangegeven in welk venster het nieuwe document verschijnt (met het target attribuut). Frames vertonen - indien nodig - ieder een eigen scrollbar.

Frames kunnen ook met behulp van HTML-scripting worden aangestuurd. Hierdoor is het bijvoorbeeld mogelijk om de inhoud van meerdere frames aan te passen in reactie op één muisklik.

Onzichtbare frames (hidden frame in het Engels) kunnen worden gebruikt om buiten het zicht van de gebruiker informatie te verwerken. Een onzichtbaar frame kan namelijk wel informatie bevatten die met een script kan worden verwerkt tot zichtbare informatie. De opkomst van AJAX-technologie heeft het gebruik van onzichtbare frames voor een mix van client-side en server-side toepassingen enigszins verdrongen. In de discussie over hoe vernieuwend de AJAX-technologie is, wordt er echter wel verwezen naar onzichtbare frames als argument om aan te tonen dat AJAX niet wezenlijk vernieuwend is.

Frames kunnen in principe oneindig worden genest. De frames in een document worden gedefinieerd in een frameset, waarbij het zichtbare vlak van het document in de browser wordt onderverdeeld in kleinere rechthoeken. Ieder van deze rechthoeken kan echter ook weer uit frames bestaan.

Het nesten van frames kan zowel direct in het hoofddocument zelf gebeuren (een frameset plaatsen in een frame) als in het afzonderlijke document (het document dat in een frame wordt geplaatst bestaat zelf ook uit een frameset).

Met frame busting wordt een techniek bedoeld die er voor zorgt dat een webpagina niet in een frame kan worden gezet. Beter gezegd: zodra een pagina in een frame wordt gezet, zorgt een script ervoor dat de pagina uit het frame breekt.

Deze techniek wordt gebruikt omdat met behulp van frames ook pagina's van een andere website kunnen worden getoond alsof het een eigen pagina is. In sommige websites wordt op deze manier geprobeerd om inhoud van andere websites te gebruiken voor eigen doeleinden. Frame busting is bedoeld om dit tegen te gaan.

Er worden diverse bezwaren aangevoerd tegen het gebruik van frames, en in veel websites worden frames inmiddels niet meer gebruikt. Het is echter niet zo dat frames volledig uit de gratie zijn, ook bedrijven als Microsoft en Google maken op delen van hun websites nog gebruik van frames.

Aan deze bezwaren kan redelijk goed tegemoet worden gekomen door toepassing van een eenvoudig JavaScript dat de betreffende pagina alsnog in de juiste frameset toont en van een techniek waarmee een (dynamische) frameset getoond wordt via een iframe dat de gehele pagina beslaat. Nadelen van deze technieken zijn dat de gebruiker (uiteraard) JavaScript ingeschakeld moet hebben, en dat er veelal een gekunsteld adres in de adresbalk van de browser komt te staan.