XHTML5.NL

Basisbestandstypen

  • IE 1.0+
  • Chrome 1.0+
  • Firefox 1.0+
  • Safari 1.0+
  • Opera 2.1+

Hypertext Markup Language (HTML)

MIME-type: text/html
Gangbare extensie: .html

HTML is de essentiële taal waaruit het web is opgebouwd. Elk HTML-bestand definieert één document.

Oorspronkelijk was de taal gebaseerd op SGML, maar sinds HTML 5 heeft het een unieke syntaxis, die weliswaar grotendeels overeenkomt met XML, maar op belangrijke punten afwijkingen vertoont. Een voorname afwijking is dat bij fouten in de syntaxis, HTML-documenten verder gaan met renderen en XML-documenten niet. Een andere bijzonderheid is dat het parsen afhankelijk is van de namen van de elementen, wat bij XML uiteraard ondenkbaar zou zijn.

  • IE 9.0+
  • Chrome 1.0+
  • Firefox 1.0+
  • Safari 1.2+
  • Opera 6.0+

Extensible Hypertext Markup Language (XHTML)

MIME-type: application/xhtml+xml
Gangbare extensie: .xhtml

XHTML is de variatie op HTML waarbij de inhoud van de pagina in XML wordt genoteerd. Hierdoor is XHTML in tegenstelling tot HTML onbeperkt uitbreidbaar met elementen en attributen uit andere naamruimten. Daarnaast is de syntaxis gelijk aan die van XML en dus niet langer afhankelijk van de elementnamen. XML-bestanden kunnen ook efficiënter worden gelezen door bijvoorbeeld de browser. Ook bestaat de zogenaamde quirksmodus in XHTML niet.

Een XHTML-document kan zo worden opgesteld dat het ook door een HTML-parser begrepen kan worden. Zo’n document heet een polyglot en op deze manier kan XHTML worden gebruikt in browsers die dat eigenlijk niet ondersteunen. De uitbreidbaarheid van XHTML gaat zo wel verloren.

  • IE 3.0+
  • Chrome 1.0+
  • Firefox 1.0+
  • Safari 1.0+
  • Opera 3.5+

Cascading Style Sheets (CSS)

MIME-type: text/css
Gangbare extensie: .css

CSS is de taal waarin uiterlijk aan HTML- en XML-documenten wordt toegevoegd. Zonder CSS zou elke webpagina in de standaardopmaak van de browser te zien zijn.

In sommige browsers kan CSS worden uitgeschakeld.

  • IE 3.0+
  • Chrome 1.0+
  • Firefox 1.0+
  • Safari 1.0+
  • Opera 3.0+

JavaScript

MIME-type: text/javascript
Gangbare extensie: .js

JavaScript is de programmeertaal waarmee alle dynamische eigenschappen van webpagina’s worden gecreëerd. JavaScript vergroot de mogelijkheden voor interactie met de gebruiker aanzienlijk.

JavaScript kan worden uitgeschakeld in de browser of kan simpelweg niet worden ondersteund door de browser. Ga er niet vanuit dat voor iedereen JavaScript beschikbaar is.

  • IE 1.0+
  • Chrome 1.0+
  • Firefox 1.0+
  • Safari 1.0+
  • Opera 2.1+

Platte tekst

MIME-type: text/plain
Gangbare extensie: .txt

Platte tekst is simpelweg tekst zonder opmaak.

Gewaarschuwd dient te worden dat dit MIME-type niet altijd door browsers wordt geloofd als de inhoud niet op platte tekst ‘lijkt’. Dit heet ‘content sniffing’ (ook wel ‘MIME sniffing’) en zorgt ervoor dat een tekstbestand onterecht als bijvoorbeeld een HTML-bestand kan worden gelezen door de browser, wat een veiligheidsrisico kan zijn voor uploadsites. Dit probleem geldt ook voor sommige andere MIME-types en is ontstaan doordat de MIME-types van servers niet altijd goed zijn ingesteld.

Configuratie Apache-server

Gebruik je de webserversoftware Apache, dan kun je onderstaande codes in .htaccess of httpd.conf plaatsen:

  • Stel de MIME-types correct in voor alle bestandsextensies waarbij dit niet standaard gebeurt in Apache:
    AddType text/javascript .js
  • Stel de karakterset in op UTF-8 bij alle bestandstypen waarbij dit mogelijk is:
    AddCharset UTF-8 .html .xhtml .css .js .txt
  • Forceer Internet Explorer om altijd zo goed mogelijk aan de webstandaarden te voldoen door de laatste versie van de renderer te gebruik en de compatibiliteitsknop uit te schakelen:
    Header set X-UA-Compatible "IE=edge"
  • Stel bestanden met HTML-extensie in als polyglots:
    RewriteEngine on
    RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
    RewriteCond %{HTTP_ACCEPT} !application/xhtml\+xml\s*;\s*q=0
    RewriteRule \.html$ - "[T=application/xhtml+xml; charset=UTF-8]"
  • Schakel ‘content sniffing’ uit in browsers waarin dit uit te schakelen is:
    Header set X-Content-Type-Options nosniff
  • Wijzig het standaard-MIME-type, dat wordt gebruikt voor niet door Apache herkende extensies, van platte tekst in binaire data:
    DefaultType application/octet-stream