XHTML1.1 (Experiment)
10 oktober 2003, deze pagina staat nog onder bewerking, niet alle links zullen nog werken ook kan de tekst nog wijzigen.
XHTML
XHTML is de opvolger van HTML. XHTML1.0 is rechstreeks afgeleid van HTML4.01 en XHTML1.1 is een verbetering daarop (op basis van 1.0 strict). Inmiddels is de ontwikkeling van XHTML2.0 in volle gang. XHTML2.0 zal niet meer per definitie compatible zijn met haar voorlopers.
XHTML is een nieuwe definitie van HTML in XML. XML wordt gebruik om data op te slaan en is erg flexibel. XML is een afleiding van SGML en HTML is daar weer een subset(onderdeel) van.
Zowel HTML als XML kunnen gebruikt worden om documenten met gestructureerde informatie te beschrijven. De verschillende stukjes data worden gescheiden door tags, bijvoorbeeld <H1>. Bij HTML ligt de betekenis van de tags vast. Bij XML bepaalt de maker van het document de betekenis. Dit laatste maakt XML zo flexibel.
In de practijk
XHTML kent nog wel enkele tags met een vast betekennis, maar het aantal is veel beperkter. Verder wordt de betekenis van de tags niet meer beschreven door de atributen van de tag, maar door CSS. Hierdoor ontstaat een stricte scheiding tussen de beschrijvende datastructuur en de opmaak daarvan.
In theorie zou een XHTML bestand dus veel compacter en overzichtelijker gestructuurd moeten zijn als een HTML bestand, waardoor het bijvoorbeeld beter gelezen zou kunnen worden door de robots (spiders) van de zoekmachines. Ook draagt XHTML automatisch bij aan een scheiding tussen opmaak en content.
Om te kijken hoe bruikbaar dit is, heb ik de pagina die u nu bekijkt gemaakt in XHTML. Uitdaging daarbij was een pagina te maken, die qua functionaliteit, accessbility (toegankelijkheid) en usability (gebruiksvriendelijkheid) gelijk is aan de testpagina van deze site in HTML4.01 volgens het strict DTD.
Opmaak van deze pagina gebeurde m.b.v. CSS versie 2.
Browsers en CSS2
Voor een goede toegankelijkheid zou het eindresultaat browser-onafhankelijk moeten zijn.
Maar welke browsers ondersteunen CSS2?
De onderstuning van 4e of eerdere generatie browsers (o.a. IE4 en NN4)
is slecht of te verwaarlozen. Hogere versies zouden CSS2 moeten ondersteunen, opvallend daar bij is de
slechte onder steuning van alle Internet Explorer Browsers, Microsoft houdt blijkbaar niet van standaards.
Uitgebreidere informatie is te vinden op: CSS 2 Tests.
Test browsers
Zelf het ik de pagina getest met de volgende browsers onder Linux Redhat9
- Mozilla 1.4 (Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624)
- Konqueror 3.1-15 Red Hat (gebruik maken van KDE 3.1-12 Red Hat)
- MS Internet Explorer Version 6.0.2800.1106
- Opera 7.11 (Mozilla/4.0 (compatible; MSIE 6.0; Linux 2.4.20-20.9 i686) Opera 7.11 [en])
Meer info over de gebruikte browsers: Browsers.
Uitwerking
Door uitsluitend gebruik te maken van CSS(2) zou de XHTML gelijk aan (zelfde functionaliteit, accessbility en usability) de HTML4.01 strict pagina, gemaakt moeten kunnen worden zonder te hoeven terugvallen op tabellen (<table>) voor de layout. Ook zou het javascript voor het 'sticky' menu (= menu dat meescrollt met de pagina) overbodig moeten worden.
Een layoutontwerp waarbij geen gebruik van tabellen gemaakt wordt heeft diverse voordelen:
- Onderhoud van de pagina wordt gemakkelijker; kleine veranderingen leiden niet tot het 'verpesten' van de layout
- Minder code; sneller laadtijd en hogere keyword-density (zie: )
- Tabellen laden sowieso relatief langzaam
- Geen 'verborgen' images meer nodig, om een tabel de juiste afemetingen te geven
Globaal bestaat de(ze) pagina uit een header(kop), footer(voet) en drie kolommen, waarvan de middelste kolom de feitelijke conetent(inhoud) bevat.
Duidelijk ben ik niet de eerste die zich met dit vraagstuk bezig houd:
- HTML Utopia
- Multicolumn pages without tables or frames
- NN4, 3 columns with Header and Footer
- this is a 4 box and 3 column layout with plain css + image flip
- CSS layout, 3 columns with Header and Footer, Ordered columns, ...
- 2-Boxen-Model mit Header
Vooral de laatste twee gaven nuttige informatie voor de uiteindelijke tot standkoming van deze pagina.
Het eindresultaat lijkt in eerste instantie redelijk. Grootste probleem bleek het
behoud van functionaliteit en wel het meescrollen van het menu met de pagina.
CSS geeft ons de mogelijkheid dit te doen met het volgende stukje code:
position: fixed;
Maar geen enkele versie van MS IE blijkt deze code te ondersteunen.
Dit lijkt alleen op te lossen, door toch terug te vallen op javascript. De code
die de oplossing geeft is te vinden op:
http://www.doxdesk.com/software/js/fixed.html
Uiteindelijk werd een betere oplossing gevonden op: http://imfo.ru/csstest/fixed/fixed.htm. Hiermee kan ook zonder javscript, het beoogde effect in IE gerealsieerd worden. Deze oplossing maakt handig gebruikt van: Conditional comments of IE.
Resultaten
Het eindresultaat is een pagina, die voldoet aan de gestelde eisen, uiteindelijk dus ook geheel zonder javascript.
Ter vergelijking vergelijken we een document met de hier beschreven methoden met een zelfde document in HTML 4.01 strict. De oorspronkelijke pagina zetten we om op dezelfde manier als deze pagina, voor een goede vergelijking laten we de tekst "Email Communications" in de meest rechter kolom weg.
HTML 4.01 strict | XHTML1.1 + CSS2 | |
HTML-code | 8357 | 6566 |
Stylesheet | 1943 | 3173 |
Javascript | 916 | 0 |
Totaal: | 10.9Kb | 9.5Kb |
Bovenstaande tabel laat zien hoeveel bytes er nodig zijn voor de verschillende onderdelen van de pagina. Het totaal is weergeven in Kilobytes.
Voor dezelfde pagina levert XHTML1.1 + CSS2 hier dus een besparing van 12.8%. De bezoeker kan dit merken door een sneller laadtijd, dit effect wordt nog eens versterkt doordat de extra laadtijd voor het javascript komt te vervallen en we ook niet meer te maken hebben met relatief langzaam ladende tabellen.
Het aantal bytes wordt HTML-code mede bepaald door de feitelijk content (+/- 3500bytes). Naarmate de content van de pagina groter wordt, zal de procentuele 'winst' zoals bovenbeschreven afnemen. Al hoeft die afname niet altijd evenredig te zijn met toename van bytes, omdat het gebruikt van CSS ook voor andere opmaakeffecten een voordeel kan hebben.
De besparing is hier relatief gering, omdat HTML 4.01 strict pagina ookal goed gebruik maakte van CSS.
Belangrijk ander voorbeeld is gehaald in de optimalisatie voor de zoekmachines. In de eerste plaats slaan de robots alle javascript en CSS over, zij treffen dus een duidelijk compactere pagina, ruim 20% kleiner. Dat laatste zal leiden tot een hogere keyword densitity.
Daar naast stelt deze aanpak ons in staat de belangrijkste content (in dit geval de feitelijk content) bovenaan in de broncode te plaatsen. Zoekmachines hechten meer waarde aan het begin van een document, sommige (lees de meeste) indexeren alleen de eerste .. Kb.
Beperkingen
De pagina zal alleen werken voor browsers met een redelijke ondersteuning voor CSS2.
In het oorspronkelijk ontwerp had de rechterkolom van de 3-kolommen-layout
een andere achtergrondkleur. Omdat in dit onwerp de kolom de achtergrond
krijgt van zijn parent-element (body), moeten de linker- en rechterkolom
dezelfde achtergrond kleur hebben.
Zouden we de kolom zelf een achtergrondkleur geven, dan geeft dat
problemen, omdat niet automatisch een hoogte van 100% krijgt.
zie o.a.: http://www.xs4all.nl/~ppk/css2tests/100percheight.html
Wel kunnen zonder problemen elementen in de rechter kolom gepositioneerd worden, ter illustratie is daar dus de tekst Email Communications geplaatst.
Deze pagina maakt gebruik van zgn. named anchors (interne links).
Dit geeft problemen voor Konqueror en Mozilla, die het anchor bovenaan de pagina plaatsen
i.p.v. boven aan de content div. De opgegeven
padding van de body wordt dus genegeerd:
body
{
padding-top: 4em;
background-color:#990000;
}
Conclusie
Het is mogelijk een goede pagina te maken met behulp van alleen CSS, ook kunnen (nagenoeg) alle traditionele HTML pagina's op deze manier omgezet worden naar XHTML.
Grootste probleem lijkt de ondersteuning van oudere browsers. Hoe ouder de browser hoe minder opmaak. Ook de slechte ondersteuning van (standaards voor) CSS2 door MS IE, maakt het er niet makkelijker op. Wat betreft dat laatste verwijs ik u graag nog eens door naar: The Web Standards Project (WaSP)
Onder resultaten worden de voordelen voor de bezoeker en zoekmachine optimalisatie al beschreven.
Overige voor- en nadelen van CSS worden uitgebreider beschreven onder CSS op deze website. Meer over zoekmachine optimalisatie valt te lezen naar zoekmachine optimalisatie.