Prolog und Head
Aus 4webmaster.de
Bevor der eigentliche Content einer Seite übermittelt wird, müssen zahlreiche Meta-Informationen übermittelt werden, d.h. Informationen über die übermittelten Informationen. Die grundlegendsten Meta-Informationen sind- die Zeichenkodierung (wie können die übermittelten Bytes als Zeichen interpretiert werden?)
- der MIME-Typ (was für eine Art Dokument ist das überhaupt, wie also können weitere Informationen ermittelt werden?)
- die verwendete HTML-Sprachvariante (wie können die übermittelten Zeichen als Beschreibung einer Webseite interpretiert werden?)
Bei der Übertragung einer in XHTML formulierten Webseite sind sehr viele verschiedene Ebenen beteiligt.
- HTTP: Die grundlegensten Ebenen der Netzwerkkommunikation lassen sich mit dem TCP/IP-Referenzmodell beschreiben. Die oberste Schicht dabei ist HTTP, hier wird schon die Zeichenkodierung und der MIME-Typ festgelegt.
- XML: Mit dem MIME-Type steht XML als Sprache fest. Aber XML ist erstmal nur eine Meta-Sprache, die genaue HTML-Sprachvariante ist noch nicht definiert. Aber XML verlangt für sich schon einige Meta-Informationen, z.B. die XML-Deklaration, die Doctype-Angabe und den XML-Namespace.
- XHTML, CSS, etc. Erst diese obersten Schichten enthalten die eigentliche Beschreibung des darzustellenden Content. Auch hier gibt es zahlreiche Meta-Informationen, die angegeben werden können oder müssen.
Eine Übersicht über die wichtigsten Meta-Angaben in allen Schichten liefert die folgende Tabelle:
| Beispiel | Festlegendes Element | Erklärung | Wofür ist das wichtig? |
|---|---|---|---|
HTTP/1.1 302 Found Server: Apache Content-Type: text/html; charset=utf-8 | HTTP-Header | Der Webserver sendet dem Browser im HTTP-Header grundlegende Meta-Informationen über die ausgelieferte Seite, insbesondere die Zeichenkodierung und der MIME-Type. | Zeichenkodierung HTML-Sprachvariante |
<?xml version="1.1"
encoding="UTF-8" ?>
| XML-Deklaration | Eigentlich wird dem XML-Parser des Browsers mit der XML-Deklaration nur mitgeteilt, welche XML-Sprachvariante und welche Zeichenkodierung verwendet wird. In der Praxis gibt es Abhängigkeiten zum MIME-Typ mit potentiell sehr negativen Folgen, siehe Artikel XML-Deklaration. | Zeichenkodierung HTML-Sprachvariante |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | Doctype-Angabe | Die Doctype-Angabe eines Dokumentes hilft dem Empfänger bei der Entschlüsselung seiner Struktur. Der Browser entscheidet anhand dieser Angabe, ob er den Inhalt standardkonform anzeigt oder ob er den Quirks-Modus verwendet. | HTML-Sprachvariante |
<html xmlns="http://www.w3.org/1999/xhtml"
lang="de-DE" xml:lang="de-DE">
| Document-Element | Dem obersten Element des Dokumentes (Document-Element: html) muss ein XML-Namespace zugewiesen werden. Mit den optionalen Lang-Attributen lässt sich die Locale angeben.
| HTML-Sprachvariante Locale |
<meta http-equiv="content-type"
content="text/html; charset=utf-8" />
| Meta-Tag content-type | Überschreibt die Angaben im HTTP-Header (je nach Browser). | Zeichenkodierung HTML-Sprachvariante |
- Ab XHTML 2.0 wird zusätzlich noch die Angabe des Instanz hat Merkmal::XML-Schemas erforderlich.
Beispiel für XHTML 1.0
<?xml version="1.1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de"> <head> <title>Beispiel</title> </head> <body> ... </body> </html>
- Die XML-Deklaration
<?xml version="1.1" ?>in der ersten Zeile ist optional, wird aber vom W3C empfohlen, da sie XML-Parsern die Zeichenkodierung des Dokuments mitteilt. Wenn die Kodierungsangabe fehlt und keine Kodierung im HTTP-Header gesendet wurde, kann der Browser gemäß dem XML-Standard die Kodierung UTF-8 oder UTF-16 verwenden.
- Der Doctype spezifiziert das Dokument als XHTML 1.0 Strict und benennt das Document-Element (es ist html)
- Der XML-Namespace ist angegeben
- Das Lang-Attribut ist angegeben (doppelt, wie empfohlen).
- Der MIME-Type stellt bei XHTML 1.0 noch kein Problem dar. Für XHTML 1.1 müsste er allerdings geändert werden! Er steht gar nicht im Dokument selbst, sondern wird im Rahmen des HTTP-Protokolls übermittelt.