Eigenschappen van XHTML
1. Open met het correcte DOCTYPE en Namespace
XHTML documenten beginnen met elementen die de browser vertellen hoe ze het bestand moeten interpreteren en validatie diensten hoe ze moeten getest worden op conformiteit.
De eerste van deze is het DOCTYPE (afkorting voor "document type"). Dit handig element verteld aan de validatie service welke versie van XHTML of HTML je gebruikt. Om enkele duistere redenen wordt het woord DOCTYPE altijd in hoofdletters geschreven.
Wat is het DOCTYPE?
XHTML staat ontwerpers en ontwikkelaars toe verschillende document types aan te maken, die elk een eigen set regels volgen. Deze worden gedefinieerd binnen de XHTML specificaties in een lange tekst die men "document type definition" noemt, of kortweg DTD. Het DOCTYPE dat je hanteert informeert dus de validatie diensten en moderne browsers welk DTD je volgde bij het tot stand komen van je opmaak. Als gevolg hiervan bepaalt het ook hoe je pagina wordt afgehandeld.
De gebruikte opmaak en CSS zal niet gevalideerd kunnen worden wanneer je XHTML bestand niet begint met een juist gedefinieerd DOCTYPE. De keuze hiervan zal dus ook de manier bepalen waarop moderne browsers je site aan de gebruiker tonen.
XHTML 1 geeft je de keuze uit drie DTDs en dus drie mogelijke DOCTYPE declaraties.
- Transitional ? Leunt het sterkst aan bij HTML 4.01 en is de enige die presentatie opmaak en verouderde elementen of attributen toelaat.
- Strict ? Deze strikte vorm van XHTML laat enkel structurele elementen toe.
- Frameset ? gebaseerd op het type uit de jaren '90 waar men frames kan gebruiken.
Het DOCTYPE gaat alle andere elementen in je XHTML bestand vooraf. Het moet dus helemaal bovenaan geplaatst worden, voor elke andere code of opmaak. Toch is er een bepaald element dat deze declaratie mag vooraf gaan. (zie content type)
Een voorbeeld van een correct gebruikt DOCTYPE declaratie:
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
DOCTYPE dient gevolgd te worden door de NAMESPACE
Deze namespace is een declaratie die een uitbreiding vormt op het oude <html> element:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
Een namespace in XML is een collectie van elementtypes en attributen die geassocieerd zijn met een specifieke DTD. De namespace declaratie staat je dus toe je namespace te identificeren door te verwijzen naar een online locatie. In dit geval www.w3.org/1999/xhtml. De twee additionele attributen tonen aan dat de gebruikte taal het engels is.
2. Declaratie van Content Type
Om correct te worden geïnterpreteerd door browsers en om de validatietests succesvol te kunnen doorstaan dienen XHTML documenten aan te geven welke karakter codering gebruikt werd bij de aanmaak.
XML proloog
Vele XHTML pagina's beginnen met de optionele XML proloog, ook bekend als een XML declaratie. Wanneer ze gebruikt wordt dient ze het eerder omschreven DOCTYPE vooraf te gaan, en het doel ervan is de XML versie te specificeren, alsook de karakter codering.
Het W3C adviseert om elk XML document, inclusief XHTML met een XML proloog te laten vooraf gaan. Om een ISO-8859-1 (Latin-1) codering te specificeren zou men volgende regel in acht moeten nemen:
<?xml version="1.0" encoding="ISO-8859-1"?>
Helaas ondersteunen vele browsers deze XML proloog niet. Het gevaar bestaat er dan in dat je webpagina misschien zelf gewoon vertoont. Of erger nog, dat het de browser doet crashen. In het geval van IE6/Windows wordt de pagina incorrect getoond.
Gelukkig voor ons bestaat er een oplossing. In plaats van deze regel te gebruiken kan je de karakter codering op een andere locatie definiëren. Namelijk in de <head> van je document.
<meta http-equiv="Content-Type" content="text/html; charset=IS0-8859-1" />
3. Alle Tags in kleine letters
XML is in tegenstelling tot HTML hoofdlettergevoelig. Hierdoor dus ook XHTML. Alle XHTML elementen en attributen dienen dus in kleine letters getypt te worden, zoniet zal je document niet gevalideerd worden.
De waarden van deze elementen of attributen mogen echter wel in hoofdletters worden geschreven.
4. Alle attributen worden voorzien van aanhalingstekens
In HTML was dit geen vereiste, maar in XHTML dus wel. Het is dus height="100" en niet height=100.
5. Alle attributen vereisen waarden
Volgende code was correct in HTML 4.01:
<td nowrap>
<input type="checkbox" name="shirt" value="medium" checked>
<hr noshade>
In XHTML wordt dit echter:
<td nowrap="nowrap">
<input type="checkbox" name="shirt" value="medium" checked="checked" />
<hr noshade="noshade" />
6. Alle tags afsluiten
In HTML had je de mogelijkheid om verschillende tags zoals <p> en <li> te openen zonder ze opnieuw te sluiten. In XHTML dient echter elke geopende tag opnieuw afgesloten te worden.
Omdat XHTML deze regel oplegt zal men minder CSS problemen ondervinden, omdat alle tags netjes worden afgesloten en zal je pagina werken zoals er verwacht werd.
7. Ook lege tags afsluiten
Zelfs de 'lege' tags zoals <br> en <img> dienen opnieuw afgesloten te worden, door toevoegingen van een schuine streeep aan het einde van de tag.
<br />
<img src="webstandaarden.jpg" />
De spatie tussen het element en de schuine streep is verplicht !
8. Geen dubbele streepjes binnen een commentaarregel
Twee streepjes na mekaar mogen alleen bij het begin en op het einde van de XHTML commentaar voorkomen.
<!-- Ongeldig -- alsook de regel hieronder. -->
<!-------------------------------------------->
Je kan dan ofwel de streepjes vervangen door =, of door spaties tussen de streepjes te plaatsen.
<!-- Geldig - - alsook de regel hieronder -->
<!-- ==================================== -->
9. Coderen van alle < en & tekens
Elk kleiner dan teken dat geen deel uitmaakt van een tag moet geschreven worden als < en elke ampersand als &.
De validatie dienst van W3C zal enkel een waarschuwing geven wanneer men dit niet toepast. Een pure XML parser zal een fatale foutmelding genereren.