Websiteentwicklung: XHTML: Kopfdaten

Für ein komplettes XHTML-Dokument sind einige Angaben notwendig oder dringend geboten, die vor dem eigentlichen Inhalt zu notieren sind. Dabei ist zu unterscheiden zwischen Angaben, die sogar noch vor dem Wurzelelement html angeordnet sind und solchen, die innerhalb des Elementes head auftreten. Ersteres sind Angaben, die sich etwa auf Kodierungen und formale Aspekte der verwendeten Sprachversion oder Angaben zur Syntax beziehen. Letztere beziehen sich zumeist mehr auf das Dokument und seinen Inhalt selbst. Entsprechend sind die allgemeineren Angaben außerhalb des Wurzelelementes html nicht in XHTML definiert, sondern bereits in XML.


Ein leeres Dokument in der Sprachversion XHTML 1.1 sieht dann etwa wie folgt aus:

<?xml version="1.0" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Titel der Seite</title>
</head>
<body>

</body>
</html>

Die erste Zeile beinhaltet die XML-Verarbeitungsanweisung, welche man eigentlich immer notieren sollte, damit klar ist, dass es sich um ein XML-Dokument handelt. Diese wird in der Empfehlung XML-Deklaration genannt, wird aber wie eine Verarbeitungsanweisung notiert und ist effektiv eben ein Hinweis, wie das Dokument zu verarbeiten ist, eben als XML. Optional folgen daraufhin XML-Stilvorlagenverarbeitungsanweisungen, die in dem einfachen Beispiel ausgespart wurden. Dann kommt eine Angabe zum Dokumenttyp (DOCTYPE), die formal auf ein Schema verweist, welches die Syntax der verwendeten Sprachversion von XHTML festlegt.

Nach dem 'XML-Vorspann' folgt erst das eigentliche Wurzelelement html mit dem eigentlichen Dokumentinhalt.

Statt oder zusätzlich zu einer Angabe zum Dokumenttyp (DOCTYPE) kann bei der Sprachversion XHTML+RDFa einfach im Wurzelelement html eine Versionsangabe erfolgen: version="XHTML+RDFa 1.1" oder version="XHTML+RDFa 1.0".

Als derzeit einfachste und aktuellste Variante ergibt sich damit das Beispiel für ein leeres Dokument mit Versionsangabe zu XHTML+RDFa ohne Dokumenttyp:

<?xml version="1.0" ?>
<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1">
<head>
<title>Titel der Seite</title>
</head>
<body>

</body>
</html>

XML-Verarbeitungsanweisung

Bearbeiten

Eine XML-Verarbeitungsanweisung sagt einem Darstellungsprogramm, dass es sich bei dem vorliegenden Dokument um ein XML-Format handelt, es also nach den Regeln von XML zu verarbeiten ist.

Oft kommt darin auch eine Angabe zur Kodierung vor. Ein offensichtliches Problem dabei ist, dass bis zu der Stelle, wo die Angabe erfolgt, das Dokument schon dekodiert sein muss, um die Angabe berücksichtigen zu können. Das typische Vorgehen besteht darin, dass das Programm erstmal eine Kodierung rät und guckt, ob damit der Dokumentinhalt einen Sinn ergibt. Wird so die erste Zeile eines Dokumentes dekodiert, in der die XML-Verarbeitungsanweisung steht, kann gegebenenfalls die Dekodierung noch angepasst werden. Das liegt daran, dass die Angaben in der XML-Verarbeitungsanweisung so ausgelegt sind, dass sie bei gängigen Kodierungen gleich ausfallen, also keine kritischen Sonderzeichen enthalten. Liegt keine Angabe vor, wird eine Kodierung als UTF-8 angenommen. Ein anderes Vorgehen kann sich ergeben, wenn das Dokument von einem Dienstprogramm kommt. Dieses kann verbindlich die Kodierung des Dokumentes angeben, wonach sich ein Darstellungsprogramm zu richten hat. Das vermeidet das Problem, dass die Datei bereits dekodiert sein muss, bevor man die Angabe zur Kodierung erhält. Gibt das Dienstprogramm eine Kodierung an, so wird die Angabe im Dokument ignoriert.

Typische Beispiele

Bearbeiten

Nur eine Angabe, dass nach XML1.0 zu interpretieren ist. Sofern keine anderen Angaben gemacht wurden, wird UTF-8 als Kodierung unterstellt:

<?xml version="1.0" ?>

Zusätzliche Angabe der Kodierung als iso-8859-1 (das reicht für Umlaute, ß-Ligatur und viele andere Sonderzeichen aus dem europäischen Sprachraum):

<?xml version="1.0" encoding="iso-8859-1" ?>

Beziehungsweise wenn man das Euro-Zeichen braucht, kann auch iso-8859-15 verwendet werden:

<?xml version="1.0" encoding="iso-8859-15" ?>

Eine Kodierung mit UTF-8 eignet sich für die meisten Sprachen und kann insbesondere empfohlen werden, wenn neu angefangen wird und keine Altlasten mit anderer Kodierung bereits vorhanden sind:

<?xml version="1.0" encoding="UTF-8" ?>

Zu beachten ist, dass einige Editoren bei UTF-8 an den Beginn einer Datei bisweilen ein BOM setzen (Bytereihenfolge-Markierung, englisch: byte order mark). Das ist für UTF-8 nicht unbedingt notwendig, weil dort die Anordnung der Bytes eindeutig ist. Dies kann aber mit der Forderung kollidieren, dass zu Beginn des Dokumentes die XML-Verarbeitungsanweisung stehen soll. Entwicklern einiger Programme ist das Problem bekannt und sie umgehen es, indem sie das vorangestellte BOM hinsichtlich der Forderung ignorieren, dass die XML-Anweisung zu Beginn des Dokumentes stehen soll. Bei anderen Programmen oder älteren Versionen kann es hingegen passieren, dass versucht wird, das BOM zur Anzeige zu bringen, statt ein XML-Dokument zu verarbeiten. Deswegen ist es in der Praxis empfehlenswert, dem Editor nicht zu erlauben, ein BOM an den Anfang einer mit UTF-8 kodierten XML-Datei zu setzen.

XML-Stilvorlagenverarbeitungsanweisung

Bearbeiten

XML-Stilvorlagenverarbeitungsanweisungen können auf die XML-Verarbeitungsanweisung folgen und referenzieren dann externe Dateien, in denen Stilvorlagen notiert sind.

In der Praxis kann es sinnvoller sein, die ältere (X)HTML-spezifische Notation mit dem Element link zu verwenden. Die ist zwar etwas weniger gut durchdacht und elegant, aber im Bedarfsfalle rückwärtskompatibel zu HTML und im Zweifelsfalle wird dies von älteren Darstellungsprogrammen besser interpretiert als XML-Stilvorlagenverarbeitungsanweisungen.

Folgendes ist ein Beispiel mit XML-Stilvorlagenverarbeitungsanweisungen. Hier werden CSS-Dateien referenziert. Zudem gibt es drei verschiedene Vorlagen. Das Darstellungsprogramm sollte einen Auswahlmechanismus bereitstellen, um zwischen den drei Möglichkeiten zu wechseln (ist zum Beispiel mit Mozilla-Geckos oder Opera auch nachvollziehbar).

<?xml version="1.0" encoding="UTF-8" ?> 
<?xml-stylesheet href="css1.css" type="text/css" title="Stil 1"?>
<?xml-stylesheet href="css2.css" type="text/css" title="Stil 2"  
   alternate="yes" ?>
<?xml-stylesheet href="css0.css" type="text/css" title="Kein CSS"  
   alternate="yes" ?>

Mit dem Attribut href wird die externe Stilvorlage referenziert. Die Angabe des Attributes ist erforderlich. Der Attributwert ist eine absolute oder relative URI der Datei mit der Stilvorlage, hier einfach der Dateiname einer CSS-Datei im gleichen Verzeichnis. Es kann auch ein Fragmentidentifizierer sein, der dann eben auf ein Dokumentfragment verweist, welches die Stilvorlage enthält. Das kann etwa für solche Darstellungsprogramme hilfreich sein, die zwar XML, aber kein XHTML verstehen, sofern die Stilvorlage im Element style notiert ist. Hat dies ein Attribut id, kann in der Stilvorlagenverarbeitungsanweisung auf das Element verwiesen werden.

Mit dem Attribut type wird angegeben, welches Stilvorlagenformat verwendet wird, hier also CSS. Der Wert ist ein Inhaltstyp (ehemals MIME-Typ). Die Angabe des Attributes ist erforderlich.

Mit dem Attribut title kann ein Titel oder eine Überschrift angegeben werden. Die Angabe des Attributes ist nicht erforderlich, sie wird jedoch immer benötigt, wenn mehrere Stilvorlagen alternativ angeboten werden. Das Attribut ist also insbesondere relevant, wenn das Darstellungsprogramm mehrere alternative Stilvorlagen zur Auswahl stellen soll, der Attributwert wird dann als Menüeintrag der Auswahl verwendet.

Dass Stilvorlagen alternativ und nicht alle gleichzeitig angewendet werden sollen, wird dann mit dem Attribut alternate angegeben. Die erste Angabe im obigen Beispiel ist ohne alternate, was dann bedeutet, das dies die Voreinstellung ist. Der Attributwert 'yes' gibt eben an, dass es sich um eine alternative Stilvorlage handelt. 'no' würde angeben, dass es zusätzlich zur Voreinstellung anzuwenden ist. Eine Angabe des Attributes ist nicht erforderlich, Voreinstellung ist 'no'.

Mit dem Attribut charset kann ein Hinweis auf die Kodierung des referenzierten Dokumentes angegeben werden. Eine Angabe des Attributes ist nicht erforderlich. Die möglichen Werte entsprechen denen von encoding. Der Hinweis ist allerdings nur relevant, wenn es keine anderen bindenden Informationen gibt, zum Beispiel von einem Dienstprogramm, welches das referenzierte Dokument ausliefert, oder im Dokument selbst.

Mit dem Attribut media kann angegeben werden, für welches Ausgabemedium die Stilvorlage gedacht ist. Eine Angabe des Attributes ist nicht erforderlich, Voreinstellung ist in CSS 'screen'. Der Attributwert ist ein Medientyp oder eine Liste von Medientypen, die jeweils mit einem Komma voneinander separiert sind. Welche Medientypen verfügbar sind, hängt von der verwendete Stilvorlagensprache ab. CSS2 gibt zum Beispiel folgende Möglichkeiten an:

all
Für alle Ausgabemedien geeignet.
aural
Für eine akustische Wiedergabe vorgesehen (CSS2.0).
braille
Für Braille-Geräte vorgesehen.
embossed
Für Braille-Seitendrucker vorgesehen.
handheld
Für Handheld-Geräte vorgesehen (normalerweise mit kleinem Schwarzweißbildschirm und begrenzter Bandbreite).
print
Für Drucker vorgesehen, ebenso für den Druckvorschaumodus auf dem Bildschirm.
projection
Für projizierte Präsentationen vorgesehen, wie zum Beispiel Projektoren oder den Ausdruck auf Folien.
screen
Hauptsächlich für normale Farbmonitore vorgesehen.
speech
Für eine akustische Wiedergabe vorgesehen (CSS2.1).
tty
Für Medien vorgesehen, die ein festes Zeichenraster verwenden, wie beispielsweise Fernschreiber oder Terminals.
tv
Für fernsehartige Geräte vorgesehen (geringe Auflösung, begrenzt rollbare Bildschirme, aber in Farbe und mit Ton).

Für spätere Versionen von CSS sind weitere Typen und Schreibweisen vorgesehen, insbesondere auch, weil es inzwischen eine größere Anzahl von verschiedenen Geräten gibt, zum Beispiel weichen bei notebooks oder Mobiltelephonen die typischen Abmessungen von Höhe und Breite erheblich von denen von früheren Monitoren ab (auch im Seitenverhältnis). Dies wird in einem CSS3-Modul als Medienabfrage definiert: Medien-Abfrage.

Der Wert von media entspricht dem gleichnamigen Attribut des Elementes link, siehe unten.

Dokumenttypdeklaration und Dokumenttyp-Definition

Bearbeiten

Die Dokumenttypdeklaration kann hilfreich sein, wenn mit einem Validator untersucht werden soll, ob die Struktur eines Dokumentes korrekt ist. Ein Validator ist ein spezielles Programm, welches derartige Untersuchungen der Dokumentstruktur durchführt. Kennt der Validator das Format oder kann die entsprechende Datei mit Strukturinformationen herunterladen, kann er untersuchen, ob das Dokument die Verschachtelungsregeln und einige andere relevante Dinge einhält, die in der Dokumenttyp-Definition (DTD) angegeben sind, welche mit der Deklaration im Dokument zugeordnet wird. Weil man in der gängigen Notation als DTD längst nicht alles angeben kann, was hilfreich wäre, wird darauf auch bei neueren oder komplexeren Formaten verzichtet. Allerdings kann mittels der DTD nicht überprüft werden, ob ein Autor Elemente und Attributwerte inhaltlich sinnvoll verwendet, weil die DTD solche Feinheiten nicht hergibt. Dem Validator fallen solche Fehler nicht auf. Andersherum können Beschränkungen in dem, was in einer Dokumenttypdefinition angegeben werden kann, dazu führen, dass der Validator Fehler anzeigt, die keine sind, weil in der Spezifikation etwas anderes angegeben ist, dies aber in solcher Allgemeinheit nicht in der Dokumenttypdeklaration angegeben werden kann. Auch kompliziertere Verschachtelungsregelungen wie in XHTML für Formulare und Verweise (es dürfen keine a-Elemente als Nachfahren von anderen a-Elementen auftauchen) sind in DTDs nicht notierbar, insofern stehen sie nur als Prosa in den Spezifikationen.

Relevant ist bei einer konkreten Angabe einer Dokumenttypdeklaration weniger, genau zu verstehen, was da warum angegeben ist, sondern die Deklaration exakt so hinzuschreiben, wie es spezifiziert ist. Nur dann kann der Dokumenttyp von einem Programm erkannt werden. Als Autor ist nicht mehr zu tun. Die Entwickler der Formate haben sich zu überlegen, was wie deklariert wird.

Während ein Programm jedes XML-Dokument daraufhin prüfen kann, ob es korrekt nach den XML-Regeln erstellt ist (Wohlgeformtheit), braucht es ein solches für die Sprache spezifisches Schema wie eine DTD, um zu erkennen, ob die Bedingungen des Formates erfüllt sind. Ob also die Elemente und Attribute richtig verwendet werden und richtig ineinander verschachtelt sind. Letzteres wäre dann also eine Prüfung auf Validität des jeweiligen Formates.

Bei XHTML mit Ausnahme von XHTML+RDFa dient die Deklaration auch der Angaben der Version und des Profiles der Sprache. Bei XHTML+RDFa kann alternativ auch das mit einem Attribut getan werden.

In der Praxis sind Angaben zur Version hilfreicher für den Autor oder spätere Leser des Quelltextes als für ein Programm, welches das Dokument interpretiert. Das liegt daran, dass aktuell real existierende Programme einfach nicht so ausgelegt sind, dass sie für verschiedene Versionen verschiedene Interpretationen implementiert haben. Entwickler von Formaten versuchen daher nach Möglichkeit, Inkompatibilitäten zu vermeiden, was aber nicht immer komplett möglich ist - oder auch gerade nicht dem Zeitgeist entspricht - zusammen mit der begrenzten Qualität der Darstellungsprogramme führt das dann bei inkompatiblen Details zu Interpretationsfehlern.

Autoren können anhand der Versionsangaben bei Unstimmigkeiten gucken, wie das Dokument eigentlich gedacht war und es dann im Bedarfsfalle vorsichtig an eine neue Version anpassen. Bei Dokumenten ohne Versionsangabe wird in der Regel die aktuelle Version des Formates als relevant angenommen. Das hat zur Konsequenz, dass sich bei einer inkompatiblen Änderung der Spezifikation die Bedeutungen von solchen Dokumenten oer Elementen in solchen Dokumenten ändern können. Der Autor verliert ohne Versionsangabe also die Kontrolle über die Aussagen, die in seinen Dokumenten gemacht werden. Bei Dokumenten mit relevantem, kritischem Inhalt ist also immer zu empfehlen, eine eindeutige Angabe zur verwendeten Sprachversion anzugeben. Der Autor kann nicht vorhersagen, wie zukünftige Versionen des Formates aussehen werden.

Bei den aktuellen Arbeitsentwürfen für HTML5 wird ein Zustand ohne Versionskennung angestrebt. Derzeit gibt es also keine Möglichkeit anzugeben, dass ein Dokument in der Sprachvariante HTML5 abgefaßt ist. Die Idee dahinter ist, dass so die Interpretation des Dokumentes auch im Nachhinein noch angepaßt werden kann - auch Jahre, nachdem es schon geschrieben ist, indem einfach die Spezifikation der Sprache angepaßt wird (ein bißchen wie bei Orwells Roman 1984, wo die geschichtlichen Aufzeichnungen den aktuellen Begebenheiten angepaßt werden). Hier dient das allerdings eher dazu, mangelhafte Implementierungen im Nachhinein als korrekt zu spezifizieren, als gezielt die Bedeutung von Inhalten zu manipulieren, was eher ein Nebeneffekt dieser Bestrebungen ist. Damit wird dann jedenfalls gezielt vermieden, dass Autoren definierte Aussagen treffen können. Wer definierte Aussagen treffen möchte und definierte Auszeichnungssprachen verwenden, sollte diesem Trend zum Vagen und Beliebigen also wohl nicht folgen. Dokumente ohne Kennung der Sprachversion eignen sich daher mehr für kurzfristige, temporäre Veröffentlichungen im aktuellen Zeitgeist, die dann relativ schnell wieder verschwinden werden oder sollten, bevor sich die Bedeutung der versionslosen Sprache ändert. Für Dokumente, die Jahre, Jahrzehnte oder Jahrhunderte oder noch länger überdauern sollen, ist eine Versionskennung der Sprache jedoch sehr wichtig, ebenso für solche, die aus Sicht des Autors relevanten Inhalt haben, der eine definierte Bedeutung hat.

Die Angaben zum Dokumenttyp hängen natürlich von der verwendeten Sprachversion ab und sehen wie folgt aus:

XHTML+RDFa 1.0 (Sprachversion 2008-10-14):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">

oder XHTML+RDFa 1.1 (aktuelle Sprachversion, 2012-06-07):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN"
    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">

Diese Versionen enthalten neben den üblichen, nicht als veraltet angesehenen Elementen und Attributen von XHTML entsprechend der Version 1.1 auch noch neue Attribute, die bei nahezu jedem Element verwendet werden können, um Meta-Information definiert zu notieren. Weil RDFa als Attributvariante von RDF keine neuen Elemente benötigt, ist die Version insofern rückwärtskompatibel, als alte Darstellungsprogramme unter Ignorierung der neuen Attribute den eigentlichen Inhalt gemäß XHTML darstellen können. Spezielle Programme, die zur Interpretation von RDF(a) ausgelegt sind oder neue Darstellungsprogramme können zusätzlich die Meta-Informationen auswerten und dem Benutzer zugänglich machen.

Bei diesen beiden Varianten dient die optionale Angabe des Dokumenttyps vor allem dem Zwecke der Prüfung, ob die Dokumente korrekt abgefaßt sind, anders als bei den älteren Versionen von XHTML ist die Angabe ansonsten nicht notwendig oder erforderlich, stattdessen oder unabhängig von der Verwendung des Dokumenttyps wird bei diesen Versionen immer im Element html das Attribut version notiert, siehe oben.


XHTML1.1 (Modularisierte Variante, 2001-05-31, zweite Ausgabe 2010-11-23):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Neben den von HTML4.01 her bereits definierten Elementen und Attributen, die nicht als veraltet gelten, enthält diese Variante zusätzlich auch noch das Ruby-Modul, welches vor allem in asiatischen Raum benötigt wird, um erklärenden Text entlang eines Haupttextes notieren zu können, vor allem für Anmerkungen und Betonungsregeln gedacht. Das Modul wird also für den amerikanischen und europäischen Raum weniger wichtig sein. Der Rest beseitigt vor allem in der zweiten Auflage Fehler aus früheren Versionen. Einige Altlasten, die in der Version 1.0 noch alternativ oder zusätzlich zu neuen Notationen verwendet werden konnten, sind hier bereits gestrichen.


XHTML Basic 1.1 (Modularisierte Variante, 2008-06-11, zweite Ausgabe 2010-11-23):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN"
    "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">

Diese Variante beinhaltet nur die minimal notwendigen Module. Sie ist besonders ausgelegt für Darstellungsprogramme auf Geräten mit Prozessoren mit stark begrenztem Leistungsvermögen, etwa Mobiltelephonen. In diesem Buch wird allerdings auf die damit verbundenen Einschränkungen bei der Auswahl von Elementen, Attributen und Funktionalitäten nicht weiter eingegangen. In der Praxis sind heute Mobiltelephone, die (X)HTML darstellen können, ohnehin bereits so ausgelegt, dass sie leistungsfähiger sind als Computer, die gegen Ende des letzten Jahrtausends verwendet wurden, um HTML4 zu interpretieren. Auch von daher ist davon auszugehen, dass es für die meisten Programme auf Mobiltelephonen heute nicht mehr notwendig ist, die Variante XHTML Basic 1.1 zu verwenden.


XHTML1.0 (strict, Variante vom 2000-01-26, aktualisiert 2002-08-01):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Dies ist eine ältere Variante, die vom Element- und Attributsatz als gleich zu HTML4.01 (strict) ausgelegt ist. Als veraltet geltende Elemente oder Attribute sind hier also bereits gestrichen. Die Spezifikation enthält auch nicht normative Hinweise, wie die Rückwärtskompatibilität heuristisch für alte Darstellungsprogramme gewährleistet werden kann (also für damals oft verwendete, nicht für hypothetische, die HTML4.01 korrekt interpretieren können, für die würde damit keine Kompatibilität gewährleistet sein).


Dann gibt es noch veraltete Versionen, beziehungsweise Übergangsversionen, deren Verwendung nur in Ausnahmefällen zu empfehlen ist (wenn es auf besondere Rückwärtskompatibilität zu HTML oder alten Konstruktionen von HTML ankommt, die als veraltet gelten). Der Übergang von HTML4 zu XHTML kann nach über zehn Jahren im Grunde als abgeschlossen gelten. Wenn man allerdings noch Projekte aus dem letzten Jahrtausend hat, die in diesen Versionen abgefaßt sind oder die von HTML4 auf XHTML aktualisiert werden sollen, so ergibt sich noch eine konkrete Anwendung. Diese DTDs enthalten also auch als veraltet geltende Elemente und Attribute, die eigentlich nicht mehr verwendet werden sollten. Verfügbar sind sie hier vor allem, um es Autoren zu ermöglichen, sie im laufenden Betrieb allmählich durch aktuelle Strukturen zu ersetzen:

XHTML1.0 (transitional):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML1.0 (frameset):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

Auch auf diese Variante wird in diesem Buch nur am Rande eingegangen.


In einer Erweiterung der Angabe zum Dokumenttyp können auch eigene Abkürzungen, sogenannte Entitäten (englisch: entity) definiert werden. Anders als etwa beim Format SVG ist dies allerdings bei XHTML nicht sehr verbreitet. Wer diese Funktionalität verwenden möchte, sollte das genaue Vorgehen in einem Buch über XML nachlesen. Ein Beispiel für eine Erweiterung von XHTML 1.1 mit der Definition einer Entität namens 'MeinDing' sieht wie folgt aus:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
  [<!ENTITY MeinDing "Das ist mein Ding!"> 
  ] >

Verwendet werden kann 'MeinDing' dann als '&MeinDing;' im normalen Textfluß. Allerdings lassen sich damit auch komplette Elemente abkürzen, nicht nur einfacher Text. Vor der Darstellung ersetzt das Darstellungprogramm dann die Entität durch den in Anführungszeichen stehenden Wert, hier wird also aus '&MeinDing;': 'Das ist mein Ding!'. Die korrekte Positionierung der Entität im Quelltext richtet sich also nach dem, was damit abgekürzt wird.

XHTML definiert in der DTD eine ganze Menge eigener Entitäten. Diese Abkürzungen haben bereits eine Bedeutung und sollten nicht ein zweites Mal definiert werden.

Da die so selbst definierten Entitäten im selben Dokument stehen, werden sie immer vom XML-eparser berücksichtigt. Allerdings gibt es keine Verpflichtung, dass externe Schemata von den Darstellungsprogrammen gelesen werden müssen. Nach Meinung einiger Anbieter von Darstellungsprogrammen ergibt sich daraus auch, dass es nicht unbedingt notwendig ist, die von XHTML selbst definierten Entitäten zu kennen. Oft werden diese daher nur ersetzt, wenn die Angabe zum Dokumenttyp vorhanden ist und die Angabe dem Programm bekannt ist. Dies kann dazu führen, dass beim Fehlen einer Angabe zum Dokumenttyp, bei Angabe eines dem Darstellungsprogramm unbekannten Dokumenttyps oder falls die Entwickler des Darstellungsprogrammes eine bestimmte DTD nicht mögen, eine Fehlermeldung statt des Inhalts der Seite erscheint, wenn in XHTML vordefinierte Entitäten im Dokument verwendet werden. Daraus ergibt sich die Empfehlung, die von XHTML selbst definierten Entitäten nicht zu verwenden, sondern nur die wenigen von XML definierten und die numerische Notation für Sonderzeichen, die auch immer funktioniert.

Element html

Bearbeiten

html ist das Wurzelelement und enthält die Elemente head für die weiteren Kopfdaten des Dokumentes und body für den direkt darzustellenden Inhalt.

Das für html spezifische Attribut version ist besonders relevant für die Sprachvariante XHTML+RDFa. Zwar gab es das Attribut auch schon in HTML4, galt dann aber als veraltet und wurde durch die Angaben zum Dokumenttyp ersetzt. Neuere Entwicklungen zeigen eher, dass das im Dokumenttyp angegebene Schema ohnehin nicht komplett ausreicht, um eine Sprachvariante komplett zu beschreiben - und in der Praxis gucken sich Darstellungsprogramme solch ein Schema nicht einmal an. Durch die Modularisierung ergibt sich zudem eine weitere Relevanz des Attributes. Als Folge unter anderem davon ist besonders für XHTML+RDFa das Attribut wieder interessant geworden, dort mit dem Wert 'XHTML+RDFa 1.0', beziehungsweise 'XHTML+RDFa 1.1' für die Variante 1.1.

Ferner können auch die allgemein verwendbaren Attribute id, dir und das generische XML-Attribut xml:lang verwendet werden.

Hinzu kommt natürlich das XML-Attribut für den Namensraum. Für XHTML ist der Wert festgelegt:
xmlns="http://www.w3.org/1999/xhtml"
Ohne diese Angabe kann formal keine Zuordnung von Funktion und Bedeutung von Elementen und Attributen zu XHTML erfolgen.

Element head

Bearbeiten

Das Element head enthält Informationen über das aktuelle Dokument selbst, insbesondere Meta-Informationen, den Dokumenttitel, Verweise zu Dokumenten, die einen Bezug zum aktuellen Dokument haben, Hinweise zu Darstellungsoptionen, Stilvorlagen, Hinweise zu alternativen Darstellungen bei aktivierter Interpretation von anwenderseitigen Skriptsprachen.

Der Inhalt dieses Elementes wird nicht direkt im normalen Textfluß dargestellt. Die genaue Interpretation oder Präsentation ist für die meisten Inhalte nicht präzise festgelegt, weil dies von den Möglichkeiten und Gegebenheiten des jeweiligen Darstellungsprogrammes abhängen kann.

Das Element wird als erstes Kindelement des Wurzelelementes html erwartet.

Erforderlicher Inhalt ist das Element title. Weitere mögliche Inhalte sind die Elemente meta, link, style, script, object, base.

Spezifisch für das Element ist das optionale Attribut profile.

Weitere Attribute sind die generischen von XML, insbesondere xml:lang (in den Übergangsvarianten von XHTML auch XHTML-spezifisch nur lang) für die verwendete Sprache und dir für die Angabe der Schreibrichtung. Wie immer gelten die Angaben für diese beiden Attribute dann für die Inhalte von head, nicht etwa für das ganze Dokument.

Der Wert des Attributes profile ist eine Liste von URIs zu Profilen für Meta-Informationen. Leerzeichen sind die Trennzeichen einer solchen Liste. (X)HTML selbst legt nicht genau fest, wie diese Profile auszusehen haben, üblich ist jedenfalls eine Prosa-Darststellung, etwa auch im Format XHTML.

Kleiner Exkurs und Ausblick: Weil in der HTML4.01-Empfehlung irrtümlich in der DTD, aber nicht in der maßgeblichen Prosa-Definition steht, daß nur eine URI notiert werden kann, ist bei der in der Entwicklung befindlichen Variante HTML5 das Attribut als problematisch eingestuft worden. Der Fehler ist bei XHTML1.1 längst erkannt und behoben, ist also formal für XHTML nicht relevant, bei der XHTML-Variante von HTML5 könnte der Fehler in HTML4.01 jedoch dazu führen, dass dieser Umstand als Vorwand verwendet wird, das Attribut zu streichen. Die Ursache des Streichwunsches liegt indes eher darin, dass die Gegner innerhalb der HTML5-Arbeitsgruppe eher Profile oder Erweiterungsmöglichkeiten von HTML allgemein nicht besonders mögen, die nicht ihrer Kontrolle unterliegen. So wurde also ein formaler Grund gesucht und gefunden, das Attribut für HTML5 in Mißkredit zu bringen.

Element title

Bearbeiten

Das Element title ist erforderlich als Kindelement von head und hat als Inhalt einen (aussagekräftigen) Titel für das Gesamtdokument.

Der Inhalt von title ist einfacher, interpretierter Text. Besondere Zeichen im Sinne von XML sind also zu maskieren.

Das Element hat keine spezifischen eigenen Attribute, generische XML-Attribute und die zur Sprachangabe und Schreibrichtung sind natürlich möglich.

Das Element wird nicht direkt im normalen Fließtext dargestellt, zu dem Zwecke wird der gleiche oder ein ähnlicher Text in einem Element h1 zu Beginn des sonstigen Inhaltes notiert. Wie der Inhalt von title präsentiert wird, ist nicht genau festgelegt. In den üblichen Programmen mit graphischer Ausgabe in einem separaten Fenster auf einem Monitor wird der Inhalt zumeist in der Kopfzeile des Fensters als einfacher Text dargestellt. Bei reiner Textrepräsentation kann der Titel räumlich vom folgenden Text abgeteilt sein. Wird das Dokument in ein anderes eingebettet (Elemente object, iframe etc), so kann es sein, dass der Titel vom Nutzer gar nicht direkt wahrgenommen werden kann, nur der Titel des einbettenden Dokumentes.

Wegen der Verwendung in Fenster-Kopfzeilen sollte der Titel nicht zu lang sein. Auch Roboter von Suchmaschinen versuchen bei langen Titeln mitunter eine Kürzung, ohne den Sinnzusammenhang zu verstehen. Daher empfiehlt sich, die wichtige Information zum Dokument selbst vorne zu notieren und hinten die für den Leser vermutlich eher sekundäre wie etwa der Name des Autors oder Herausgebers oder Angaben zum Gesamtprojekt, von dem das Dokument ein Teil ist.

Im historischen Sinne eines Dokumenttitels oder einer Überschrift ist der Inhalt von title eine Kurzzusammenfassung des Dokumentinhaltes in wenigen Worten. Je nach Art des Inhaltes sind mittlerweile aber auch andere Varianten von Titeln im Gebrauch. Jedenfalls repräsentiert der Titel in irgendeiner Weise das Dokument oder Werk selbst, wenn dieses anderweitig benannt oder darauf verwiesen wird. Insofern ist es wichtig, dass der Titel das Dokument selbst gut repräsentiert, nicht unbedingt ein Gesamtwerk aus mehreren, zusammengehörigen Dokumenten oder auch den Autor oder Herausgeber.

Titel wie 'Index', 'Einführung', 'Start', '1', 'Seite 1', 'Unbekanntes Dokument', 'Ohne Titel', 'Hier Titel einfügen' sind als Dokumenttitel in der Regel wenig geeignet, wenn oder weil sie den Inhalt des Dokumentes nicht charakteristisch repräsentieren, wenn das Dokument etwa in anderem Zusammenhang genannt oder referenziert wird. Für den speziellen Fall, dass wirklich aus künstlerischen Gründen kein narrativer Titel verwendet werden soll, hat es sich in der Kunst oft als brauchbar erwiesen, einen repräsentierenden Identifizierer zu verwenden wie 'Stahl 5/81', bei Texten vielleicht entsprechend 'Geschichte 2011-06-23T11:03Z' - das sagt dann, wie für den speziellen künstlerischen Zweck beabsichtigt, nichts über den Inhalt aus, reicht aber aus, um das Dokument zu repräsentieren. Sofern vorhanden, kann dafür auch eine DOI verwendet werden. Die Strategie vermeidet bei solch eigentlich titellos geplanten Dokumenten, dass sich Zitierende oder Referenzierende dann doch einen eigenen, vom Autor unerwünschten Titel einfallen lassen, um über das Dokument etwas aussagen zu können.

Bei Sachtexten ohne besonderen künstlerischen Anspruch an die Titelfrage empfiehlt sich jedoch immer der klassische Ansatz der Kurzzusammenfassung, nicht zu verwechseln mit dem 'abstract', welches eine etwas längere Zusammenfassung ist. Der klassische Ansatz sollte als Normalfall angesehen werden, auch für eine 'homepage' oder Präsentationen von Produkten, Firmen oder Werken, wo das Werk oder Produkt zwar selbst künstlerisch oder designtechnisch eine gesonderte Stellung einnehmen mag, das beschreibende Dokument als solches aber repräsentierbar und referenzierbar sein muß.

Beispiel
schlecht: 'XHTML' oder 'Sachtexte'
besser: 'Semantische Verwendung von XHTML zur Auszeichnung von Sachtexten' oder in kürzerer Form vielleicht auch mit Autorennennung 'Sachtexte schreiben mit XHTML, von Wiki van Book'.

schlecht: 'Grünzeug-Karl'
besser: 'Bestellformularliste Gemüse-Sortiment von Grünzeug-Karl, Hannover Linden'

Element base

Bearbeiten

Das Element base kann im Element head notiert werden. Erforderliches Attribut ist href, dessen Wert eine absolute URI ist, also eine absolute internet-Adresse. Diese dient dann im gesamten Dokument zur Auflösung relativer URIs. Das Element selbst ist immer leer. Anders als das generische XML-Attribut xml:base gilt das Element base immer für das ganze Dokument.

Weil es verschiedene Meinungen darüber gibt, wie Verweise auf Fragmentidentifizierer aufgelöst werden sollen - das typische Verhalten weicht von einigen Empfehlungen ab, von anderen nicht, empfiehlt es sich nicht, base mit Verweisen zu kombinieren, welche nur auf Fragmente im selben Dokument verweisen, also gar keinen URI-Bestandteil enthalten.

Beispiel

<base href="http://example.org/sample/" />

Ist im gleichen Dokument etwa notiert:

<a href="document#ex">ex</a>

oder

<link href="document#ex" title="ex" />

so ist die absolute URI jeweils immer "http://example.org/sample/document#ex".

In XHTML1.0 transitional und XHTML+RDFa kann zudem auch noch das Attribut target notiert werden, um anzugeben, in welchem Rahmen Verweisziele angezeigt werden sollen. Der Wert ist der Fragmentidentifizierer des jeweiligen Rahmenelementes, siehe auch das Kapitel über Verweise und das Element a und das Kapitel im Anhang über Rahmentechnik.

Beispiel

<base href="http://example.org/sample/" target="_blank"/>

Das schlägt vor, dass jedes Verweisziel in einem neuen Anzeigebereich (Fenster oder Reiter) angezeigt werden soll. Sofern das Darstellungsprogramm eine entsprechende Funktionalität hat und der Nutzer diese nicht deaktiviert hat, wird solchen Vorschlägen gefolgt. Bei einfacheren Programmen oder solchen ohne visuelle Präsentation ist das Attribut belanglos.

Bearbeiten

Mit dem Element link, welches immer innerhalb des Elementes head notiert wird, können andere Dokumente referenziert werden. link selbst ist ohne eigenen Inhalt. Gemäß der nicht normativen Kompatibiliätsempfehlung ist die Kurznotation zu empfehlen, aber auch die lange Schreibweise mit getrennter Anfangs- und Endmarkierung ist möglich.

Von gängigen Darstellungsprogrammen durchgehend interpetiert werden Verweise auf CSS-Dateien. Probleme gibt es allerdings bereits bei einigen, wenn mehrere CSS-Dateien alternativ zueinander angeboten werden.

Problematischer ist die Lage noch, wenn mit dem Element sogar auf andere Dokumente mit (XHTML-)Inhalt verwiesen wird. Einige Darstellungsprogramme stellen diese Verweise dem Betrachter der Seite gar nicht zur Auswahl zur Verfügung (was als eine Lücke oder einen Fehler in der Interpretation von XHTML interpretiert werden kann; dies trifft etwa auf den Microsoft Internet Explorer zu), andere brauchen dazu eine spezielle Erweiterung (etwa bei Mozilla Firefox), die wenigsten bieten eine gleich eingebaute Darstellung (zum Beispiel Opera, Mozilla Seamonkey).

Aufgrund der historisch und teilweise immer noch mangelhaften Interpretation dieses Elementes bei gängigen Darstellungsprogrammen konnte sich eine Projektnavigation durch Nutzung des Elementes link leider nie durchsetzen, stattdessen wird alternativ dazu oder ausschließlich eine Navigation im Dokumentinhalt genutzt, wo der Autor des Dokumentes hinsichtlich der Anordnung und Struktur immer wieder selbst eine sinnvolle Lösung finden muss.

Elementspezifische Attribute sind charset, href, hreflang, type, rel, rev, media und bei einigen Profilen auch target. Eine von anderen Elementen abweichende Bedeutung hat das Attribut title bei link. Die Verwendung aller Attribute ist optional, ohne href ergibt sich allerdings keine Funktion.


Der Wert von charset macht eine Angabe zur Zeichenkodierung des referenzierten Dokumentes, was aber nur relevant ist, wenn sonst keine andere Quelle zur Ermittlung der Zeichenkodierung verfügbar ist.
Beispiel: charset="UTF-8"

Der Wert von href ist eine URI/IRI eines anderen Dokumentes oder ein Fragmentidentifizierer.
Beispiel relative URI: href="anderesDokument.xhtml"
Beispiel absolute URI: href="http://de.wikibooks.org"
Beispiel (falls im Dokument ein Fragmentidentifizierer mit dem Wert 'Navigation' vorhanden ist): href="#Navigation"

Zu beachten: Das Darstellungsprogramm wird das referenzierte Dokument je nach Funktion ohne vorherige Nachfrage beim Nutzer von der angegebenen Quelle zu laden versuchen. Ob dies passiert, hängt vom Typ des Verweises ab. Beim automatischen Aufruf einer externen Quelle mittels absoluter URI gelangt so Information ohne Wissen des Nutzers auf den externen Dienstrechner. Hinsichtlich des Datenschutzes und der Privatsphäre des Nutzers ist dies bedenklich, folglich also besser zu vermeiden. Ist trotzdem eine externe Referenzierung erwünscht, ist im Sinne des Datenschutzes zuvor besser ein von dem Sachverhalt nicht betroffenes Dokument vorzuschalten, in welchem der Nutzer über das potentielle Datenleck informiert wird, sich damit also einverstanden erklärt, wenn das betreffende Dokument mit der externen Referenz aufgerufen wird. Beliebt sind mittlerweile wohl Aufrufe externer Stilvorlagen oder sonstiger Dienste. Sofern das überhaupt getan wird, sollte den Nutzern eine lokale Alternative bereitgestellt werden oder jedenfalls eine Variante des Projektes, welche auf derartige externen Quellen verzichtet.

hreflang

Bearbeiten

Der Wert von hreflang ist eine Sprachkennung für das referenzierte Dokument.
Beispiel (deutsch): hreflang="de"
Beispiel (englisch): hreflang="en"
Beispiel (französisch): hreflang="fr"

Der Wert von type gibt den Inhaltstyp (ehemals MIME-Typ) des referenzierten Dokumentes an, was aber vorrangig relevant ist, wenn sonst keine andere Quelle zur Ermittlung des Inhaltstyps verfügbar ist. Kann das Darstellungsprogramm den Typ allerdings nicht darstellen, kann die Information auch dazu dienen, das referenzierte Dokument gar nicht erst zu laden, sondern etwa den Nutzer zu fragen, was passieren soll.
Beispiel (SVG-Dokument): type="image/svg+xml"
Beispiel (CSS-Dokument): type="text/css"
Beispiel (XHTML-Dokument): type="application/xhtml+xml"
Beispiel (HTML-Dokument): type="text/html"

rel und rev

Bearbeiten

Mit den Attributen rel und rev wird ein Bezug zwischen dem referenzierenden und dem referenzierten Dokument hergestellt. Mittels rel wird angegeben, welche Beziehung das referenzierte Dokument zum aktuellen hat. Bei rev ist es umgedreht. Bei einigen Werten können Aussagen über das andere Dokument eine Abwertung implizieren, etwa wenn damit angedeutet wird, dass das referenzierte Dokument veraltet oder ungültig ist. Damit solche Aussagen nachprüfbar und verlässlich sind, sollte das referenzierte Dokument dann jeweils eine inverse Information über das referenzierende anbieten, dass das andere also etwa die neue oder korrigierte Version ist, sonst werden solche Information zumeist nicht als relevant eingestuft, weil nicht automatisch vom Darstellungsprogramm beurteilt werden kann, ob ein Autor eines Dokumentes dazu qualifiziert ist, relevante Aussagen zu einem anderen Dokument zu machen. Teilweise ist die Verwendung von rev bei einigen Werten nicht sinnvoll, das ergibt sich dann automatisch aus dem Definition des Wertes.

Der Wert von rel und rev ist eine Liste von Einzelwerten, die mit Leerzeichen voneinander separiert werden. Explizit definiert sind für HTML4 und XHTML bis Version 1.1 und XHTML+RDFa folgende Werte:

Alternate
Eine Alternativversion des Dokumentes, dabei kann etwa mittels hreflang angegeben werden, in welcher anderen Sprache eine Alternative vorliegt. Entsprechend kann es auch zusammen mit media verwendet werden, um Alternativen für unterschiedliche Ausgabemedien anzubieten.
Stylesheet
Angabe einer Stilvorlagendatei, meist eine CSS-Datei. In Kombination mit 'Alternate' und title kann so eine Auswahl von Stilvorlagen bereitgestellt werden.
Start
Anfang einer Gruppe von zusammengehörigen Dokumenten.
Next
Nächstes Dokument einer Gruppe von zusammengehörigen Dokumenten.
Prev
Vorheriges Dokument einer Gruppe von zusammengehörigen Dokumenten.
Contents
Inhaltsverzeichnis
Index
Index für ein Dokument.
Glossary
Dokument mit Begriffs- und Abkürzungserklärungen.
Copyright
Angaben zu Kopierrechten oder Urheberrechten.
Chapter
Kapitel einer Gruppe von zusammengehörigen Dokumenten.
Section
Abschnitt einer Gruppe von zusammengehörigen Dokumenten.
Subsection
Unterabschnitt einer Gruppe von zusammengehörigen Dokumenten.
Appendix
Anhang einer Gruppe von zusammengehörigen Dokumenten.
Help
Hilfeseite, weitergehende Informationen.
Bookmark
Vorschlag für ein Lesezeichen, in title sollte dann ein passender Text notiert sein.

Beispiel:
Im Dokument A ist bei einem Verweis auf Dokument B notiert rel="Appendix". Dies bedeutet dann, dass in B ein Anhang zu A zu finden ist. Umgedreht kann dann im Dokument B bei Verweisen auf A und gegebenenfalls andere Dokumente rev="Appendix" notiert werden, um anzugeben, dass B ein Anhang zu A (und den anderen Dokumenten) ist.

Autoren können auch andere Werte verwenden. Damit diese eine Bedeutung haben, sollte diese allerdings eindeutig definiert werden, etwa anhand eine Profils (Attribute profile von head). Mit RDFa sind die beiden Attribute allgemein verwendbar. Zudem wird mit RDFa genau definiert, wie der Attributwert auszusehen hat, um definiert andere Werte zu verwenden als die zuvor gelisteten.

Es gibt auch einige andere, tradierte Werte, etwa 'ico' für ein Logo-Bildchen, welches beim Darstellungsprogramm etwa bei Lesezeichen zur leichteren Wiedererkennung verwendet werden kann oder auch neben der URI/IRI in der Statuszeile. Problematisch ist in dem Zusammenhang das von Microsoft eigentlich falsch verwendete 'favicon ico', denn dies ist eigentlich eine Liste mit zwei Bedeutungen, also 'favicon' und 'ico'. Microsoft gibt aber nur an, was beides zusammen bedeutet, nicht jedes einzeln, da deuten sich also Verständnisprobleme an, die einen Autor dazu drängen könnten, das ebenfalls falsch zu verwenden.

Mittels media kann angegeben werden, für welches Ausgabemedium das referenzierte Dokument gedacht ist. Der Wert ist eine Liste von Einzelwerten, die mit einem Komma voneinander separiert werden. Definierte Werte sind:

screen
Computer-Bildschirme (Voreinstellung)
tty
Teleprinter, Terminals, Geräte mit grober Auflösung mit äquidistantem Zeichenraster
tv
Fernseher und ähnliche, niedrige Auflösung, Farbe, eingeschränkte Möglichkeiten zu rollen
projection
Projektoren
handheld
Tragbare Geräte mit geringer Auflösung, geringe Bandbreite, keine Farbe
print
Druckausgabe auf einzelnen Papierseiten und Vorschau auf dem Monitor dafür
braille
Braille-Lesegeräte
embossed
Braille-Seitendrucker
aural
Sprachausgabe (CSS 2.0)
speech
Sprachausgabe (CSS 2.1)
all
Alle Geräte

In CSS3 werden auch Medienabfragen (englisch: media queries) definiert, mit denen eine noch genauere Berücksichtigung der Ausgabegerät möglich ist: CSS3 Medienabfragen.

Das Attribut title hat bei der Verwendung in link eine Sonderrolle, weil es dazu dient, einen Titel anzugeben, durch welchen das Element und der damit verbundene Verweis dargestellt wird. Ohne title kann also in einem Auswahlmenü keine Darstellung stattfinden. Bei Alternativen sollte natürlich auch der Inhalt von title jeweils unterschiedlich sein, damit eine gezielte Auswahl möglich ist. Handelt es sich um alternative Stilvorlagen, dient der Wert von title auch dazu, zwischen verschiedenen Stilvorlagen zu unterscheiden, die ja aus mehreren CSS-Dateien bestehen können, auf welche verwiesen wird. Weil Stilvorlagen ja auch selbst wiederum auf andere Dateien verweisen können, lässt sich die Komplikation allerdings recht einfach umgehen. Stilvorlagen ohne eigenen title werden immer angewendet, können also auch als gemeinsame Grundlage aller Alternativen dienen.

Dies Attribut steht nur in XHTML+RDFa und in XHTML1.0 transitional zur Verfügung. Mit dem Attribut kann der Autor einen Vorschlag machen, wo das Verweisziel angezeigt werden sollte. Das Attribut ist ausführlich für das Element a im Kapitel über Verweise erläutert, siehe dort.


Beispiele

Bearbeiten

Typisch wird auf Stilvorlagen verwiesen. Hier ein Beispiel mit alternativen Stilvorlagen, der erste Stil wird also verwendet, wenn nichts ausgewählt wird, für die anderen sollte das Darstellungsprogramm eine Funktionalität bereitstellen, um die Alternativen auszuwählen. Hinsichtlich der Zugänglichkeit für alle kann es immer hilfreich sein, einen Stil mit heller Schrift auf dunklem Untergrund und umgekehrt verfügbar zu machen und natürlich auch eine minimalistische Möglichkeit mit einer leeren CSS-Datei für den Fall, daß der Nutzer beim Darstellungsprogramm den Knopf zum Deaktivieren der CSS-Interpretation nicht findet, für den Fall, dass das Darstellungsprogramm eine zu fehlerhafte Interpretation liefert.

<link href="voreinstellung.css" type="text/css" 
      title="Stil: Voreinstellung" rel="Stylesheet" />
<link href="hellaufdunkel.css" type="text/css" 
      title="Stil: Hell auf Dunkel" rel="Alternate Stylesheet" />
<link href="dunkelaufhell.css" type="text/css" 
      title="Stil: Dunkel auf Hell" rel="Alternate Stylesheet" />
<link href="exp.css" type="text/css" 
      title="Stil: Experimentell" rel="Alternate Stylesheet" />
<link href="nix.css" type="text/css" 
      title="Stil: Kein CSS" rel="Alternate Stylesheet" />


Beispiel zu mehrsprachigen Projekten, hier kommt automatisch die deutsche Version, als Alternativen sollten im Darstellungsprogramm englisch und französisch auswählbar sein:

<link href="index.de.xhtml" hreflang="de" 
      rel="Index" title="Index (de)" />
<link href="index.en.xhtml" hreflang="en" 
      rel="Alternate Index" title="Index (en)" />
<link href="index.fr.xhtml" hreflang="fr" 
      rel="Alternate Index" title="Index (fr)" />

Beispiel alternative Variante des Dokumentes im Format SVG anbieten, dazu eine aktustische Alternative:

<link href="KarteSkulpturenInHannover.svg" type="image/svg+xml" 
      title="Interaktive Karte mit Standorten der Skulpturen" rel="Alternate" />
<link href="SkulpturenInHannover.oga" type="audio/ogg" 
      title="Vortrag über Skulpturen in Hannover" media="aural" rel="Alternate" />

Element meta

Bearbeiten

Im Element meta können verschiedene, bei der Ausgabe eines Darstellungsprogrammes nicht ohne weitere Maßnahmen sichtbare Meta-Informationen über das Dokument aufgelistet werden. Da (X)HTML keine andere Möglichkeit einer Kennzeichnung gibt, beziehen sich die Meta-Informationen immer auf das gesamte, aktuelle Dokument, in dem die Angaben stehen.

meta selbst ist ohne eigenen Inhalt. Gemäß der nicht normativen Kompatibilitätsempfehlung ist die Kurznotation zu empfehlen, aber auch die lange Schreibweise mit getrennter Anfangs- und Endmarkierung ist möglich.

meta-Elemente stehen immer im Element head:

<head>
  <meta name="author" content="Max Mustermann" />
  ...
</head>

Es können beliebig viele Meta-Angaben eingefügt werden. Mit meta-Elementen kann man Robotern von Suchmaschinen, Dienstprogrammen oder Darstellungsprogrammen Anweisungen geben. Jeder kann seine eigenen Meta-Angaben definieren, jedoch müssen diese immer den gleichen Grundaufbau haben:

<meta name="..." content="..." />
<meta http-equiv="..." content="..." />

Das Element meta hat die Attribute name, http-equiv, scheme und content. Die Angabe von content ist notwendig, die anderen Attribute sind optional.

Der Wert von content ist CDATA, also einfacher, interpretierter Text, XML-spezifische Zeichen darin sind also zu maskieren.

Die Attribute name und http-equiv sind vom Typ 'name' wie auch das Attribut id. Werte müssen mit einem Buchstaben beginnen und können dann weitere Buchstaben a-z, A-Z enthalten, auch Ziffern 0-9, den Bindestrich '-', Unterstrich '_', Doppelpunkt ':' und Punkt '.'

Der Wert von dem Attribut scheme ist ebenfalls vom Typ CDATA. In Verbindung mit dem Attribut profile des Elementes head kann damit angegeben werden, welchem Schema die Angaben folgen. Üblich sind zum Beispiel Angaben nach Dublin Core, deren Profil dann entsprechend in profile angegeben wird.

name oder http-equiv weisen der Meta-Angabe einen Namen zu. http-equiv ist als Alternative zu name gedacht, falls die Angaben eigentlich zu den HTTP-Kopfinformationen gehören, die so informationshalber in der Datei gesammelt werden können, womit jedoch nicht gesagt ist, dass sie vom Dienstprogramm als Kopfinformation gesendet werden oder vom Darstellungsprogramm äquivalent als gesendet interpretiert werden. Im Zweifelsfalle können solche Kopfdaten immer mit einem Dienstprogramm-seitigen Skript gesendet werden, sofern verfügbar.

content gibt dann den Inhalt der Meta-Angabe an. Wie solch ein Inhalt aussieht, sollte im Schema oder Profil definiert sein. Es ist für (X)HTML selbst nicht festgelegt, welche Namen und Werte welche Bedeutung haben. Dies ist also immer mit einem Schema zu definieren. Ob und wozu die Meta-Informationen verwendet werden, ist auch nicht festgelegt.

Roboter von Suchmaschinen etwa könnten die mit name versehenen Meta-Angaben nutzen, um Suchergebnisse zu optimieren. Da Autoren allerdings in der Vergangenheit viel Unfug mit solchen Angaben angestellt haben, um für eigentlich für einen Suchbegriff irrelevante Seiten gut in den Suchergebnissen zu einem bestimmten Stichwort zu positionieren (etwa zu Werbezwecken), sind die Roboter hinsichtlich solcher Angaben kritischer geworden und sofern sie überhaupt verwendet werden, wird ein Plausibilitätstest mit dem restlichen Inhalt desselben Dokumentes durchgeführt.

Angaben mit http-equiv waren eigentlich einmal als Sammlung für das Dienstprogramm gedacht, welches die Datei ausliefert. Typische Dienstprogramme wie der Apache bringen es aber auch heute noch nicht fertig, auch nur die Kodierungsangaben aus einer XML-Datei auszulesen und korrekt im Dateikopf zu übertragen. Derartige Meta-Information werden von solchen Dienstprogrammen also erst recht ignoriert. Darstellungsprogramme können diese Angaben jedoch analysieren und sich so verhalten, als habe das Dienstprogramm solche Informationen gesendet. In einigen Fällen, wie etwa der automatischen verzögerten Weiterleitung, funktioniert das in der Praxis sogar recht gut, obgleich eine solche Kopfinformation so nicht einmal im HTTP definiert ist.

Prinzipiell legt bei der Verwendung von http-equiv das HTTP fest, wie der Wert von content auszusehen hat, weil dieser Wert eben als Bestandteil der HTTP-Kopfinformation der Datei interpretierbar sein muss. Insofern ist in der Variante eine Angabe eines Profiles oder Schemas nicht notwendig.


In den Empfehlungen erwähnte oder tradierte Verwendungen

Bearbeiten

In der Empfehlung als Beispiel erwähnt ist die Angabe des Autors mittels

<meta name="author" content="Wilhelm Busch" />

Obgleich vorgesehen ist, dass beim Wert von name Groß- und Kleinschreibung signifikant ist, vertrauen viele Autoren darauf, dass dem nicht so ist und verwenden auch 'Author' oder ähnliche Varianten, wobei die HTML4-Empfehlung, die das Element definiert, selbst zwischen 'author' und 'Author' wechselt.

Eine andere Möglichkeit ist die Angabe von Stichworten, die im Seiteninhalt vorkommen und besonders relevant für die Seite sind:

<meta name="keywords" content="Max, Moritz, Bubengeschichte, Streiche" />

Die Stichworte werden dabei traditionell durch exakt ein Komma und einfache Leerzeichen getrennt, wobei Zeilenumbrüche und ausgefallenere Varianten von Leerzeichen vermieden werden, um die einfache Auswertung durch Programme zu erleichtern.

Auch eine Datierungsvariante wird erwähnt:

<meta name="date" content="2011-06-21T12:00Z" />

Als Wert empfiehlt sich hier dringend das internationale Datumsformat, denn Angaben in sprachspezifischen Varianten, Dialekten oder privaten Notationen sind nicht eindeutig und enthalten damit keine relevante Information.

Auch Lizenzangaben (Urheberrecht) werden erwähnt:

<meta name="copyright" 
      content="Der Autor Wilhelm Busch ist 1908 verstorben, 
               urheberrechtlich ist das Werk daher frei verfügbar." />

Tradiert ist auch die Angabe einer Kurzbeschreibung:

<meta name="description" 
      content="Max und Moritz – 
               Eine gereimte Bubengeschichte in sieben Streichen" />

Dies kann anderen helfen, neben dem Titel auch eine kurze Beschreibung zu verwenden, wenn etwa von anderen Seiten oder aus Ergebnissen von Suchmaschinen auf dieses Dokument verwiesen wird. Der Leser der anderen Seite kann dann bereits anhand von Titel und Kurzbeschreibung grob einschätzen, ob das Verweisziel relevant ist. Aufgrund von Missbrauch werden solche Hilfen allerdings von den Suchmaschinenbetreibern nicht durchgängig (eigentlich eher selten) angenommen, was andererseits auch zum Ergebnis hat, dass die von der Suchmaschine selbst erzeugten Kurzzusammenfassungen meist komplett unbrauchbar bis unsinnig sind. Wenn andere Menschen allerdings einen Verweis setzen wollen, etwa in einem Katalog wie dmoz oder auf einer eigenen Seite, kann es natürlich sehr hilfreich sein, wenn der Autor selbst bereits für eine gute Zusammenfassung gesorgt hat, die zu dem Zwecke so übernommen werden kann. Dies impliziert natürlich auch mehr oder weniger, dass der Autor diese Kurzbeschreibung zum Zwecke der Referenzierung lizenztechnisch freigibt, sonst ergäbe die Angabe keinen Sinn. Andersherum können die Zitate von Suchmaschinen direkt aus dem Volltext einer Seite durchaus als Urheberrechtsverletzungen gewertet werden, da der Autor mit der Veröffentlichung des Volltextes nicht impliziert, dass Teile daraus einfach so verwendet werden dürfen. Daher ist es wichtig, dass von der Annahme ausgegangen werden kann, dass der Autor implizit damit einverstanden ist, dass wenigstens die so notierte Zusammenfassung unbedenklich zur Verweissetzung verwendet werden kann.


Angaben zur Kodierung der Seite selbst sind ebenfalls üblich:

<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=ISO-8859-1" />

Falls das Dienstprogramm keine Angaben zur Kodierung macht, keine Verarbeitungsanweisung zu Beginn des Dokumentes mit Kodierungsinformationen steht, was auf jeden Fall besser ist als diese Angabe, so kann ein Darstellungsprogramm dies berücksichtigen und mit der Dekodierung noch einmal von vorne beginnen. Offenkundig dabei ist die Problematik, dass das Darstellungsprogramm bis zu dieser Stelle im Dokument bereits etwas dekodiert hat. Die Information kommt also zu spät. Die Angabe in der Verarbeitungsanweisung ist etwas unproblematischer, weil das immer die erste Zeile des Dokumentes ist und die darin verwendeten Zeichen so gewählt sind, dass die bei vielen Kodierungen gleich ausfallen. Besser ist es natürlich immer, die Kodierungsinformation ist bekannt, bevor die Datei dekodiert wird. Aus historischen Gründen verfügen aber die meisten Dateisysteme über keine einfache, den Autoren direkt zugängliche Methode, um Meta-Informationen wie die Kodierung und das verwendete Format mit eindeutigem Bezug zur Datei, aber außerhalb abzulegen. Daher ist es insbesondere ohne Dienstprogramm im lokalen Dateisystemen oder allgemein in Archiven zumeist notwendig und hilfreich, die Kodierungsinformation direkt in der Datei zu notieren.


Auch die Gültigkeit, das Haltbarkeitsdatum kann angegeben werden, danach könnte ein Programm zum Beispiel vorsichtshalber eine neue Variante vom Dienstprogramm anfordern, wenn diese auf einem lokalen Zwischenspeicher abgelegt wurde:

<meta http-equiv="Expires" content="Tue, 21 Jun 2011 12:00:00 GMT" />

Leider wird hier für den Wert von content statt des internationalen Datumsformates ein veralteter amerikanischer Dialekt verwendet, was die Verwendung und Lesbarkeit international etwas erschwert. Spezialisierte Skriptsprachen wie etwa PHP haben spezielle Funktionen, mit denen derart verschlüsselte Angaben zum Haltbarkeitsdatum erzeugt werden können.


Besonders bei Plauderecken (englisch: chat) und Konstruktionen mit ähnlicher Funktionalität wird gern die verzögerte Weiterleitung verwendet. Diese Angabe entspricht zwar nicht dem HTTP, wird aber von gängigen Darstellungsprogrammen interpretiert, wenn sie als HTTP-Kopfinformation gesendet wird, zumeist aber auch, wenn es nur als Meta-Information notiert ist:

<meta http-equiv="refresh" content="600; URL=kapitel2.xhtml" />

Der Wert besteht aus einer Zahl als Angabe der Verzögerungszeit in Sekunden, gefolgt von einem Semikolon, gefolgt von der Zeichenfolge ' URL=' gefolgt von der URI, zu der weitergeleitet werden soll.

Diese Meta-Information ist mit Vorsicht anzuwenden, nicht nur weil sie nicht dem HTTP entspricht, sondern weil sie auch Zugänglichkeitsprobleme bereiten kann, gerade wenn sie funktioniert. Es ist daher zu empfehlen, einer Konstruktion, die dies verwendet, eine Seite vorzuschalten, wo der Nutzer diese Funktion explizit einschaltet oder alternativ eine Variante wählen kann, wo der Inhalt manuell gewechselt werden kann. Bei Plauderecken, die über ein Dienstprogramm laufen, wird der Nutzer hingegen mit der Funktionalität rechnen, da wird es meistens reichen, eine Funktion bereitzustellen, mit der das automatische und verzögerte Weiterleiten abgeschaltet werden kann, etwa mit einem Verweis auf eine Seite, die die Funktionalität nicht enthält, sondern einen normalen Verweis zum nächsten Inhalt enthält.

Letzteres ist auch für den Fall vorzusehen, dass ein Darstellungsprogramm diese Konstruktion ignoriert, weil sie nicht zum HTTP gehört.

Metainformation nach DCMI notieren

Bearbeiten

Statt eigene oder tradierte Notationen zu verwenden, ist es natürlich vorteilhaft, eine standardisierte Notation zu verwenden und auch noch eindeutig einen Bezug herzustellen, der erkennbar macht, welcher Standard verwendet wird

DCMI (Dublin Core Metadata Initiative) stellt einen solchen Standard bereit.

Beispiel:

      <?xml version="1.0" encoding="utf-8" ?>
      <!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">
        <head profile="http://dublincore.org/documents/2008/08/04/dc-html/">
          <title>Max und Moritz</title>
          <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
          <meta name="DC.title" content="Max und Moritz" />
          <meta name="DC.description" content="Max und Moritz –
               Eine gereimte Bubengeschichte in sieben Streichen" />
          <meta name="DC.creator" content="Wilhelm Busch" />
          <meta name="DC.date" content="2011-06-21" />
          <meta name="DC.format" content="application/xhtml+xml" />
          <meta name="DC.language" content="de" />
          <meta name="DC.publisher" content="Wiki van Book" />
          <meta name="DC.rights" content="Der Autor Wilhelm Busch ist 1908 verstorben,
               urheberrechtlich ist das Werk daher frei verfügbar." />
          <meta name="DC.source" content="http://de.wikisource.org/wiki/Max_und_Moritz" />
        </head>
        <body>
          <h1>Max und Moritz</h1>
          <p>etc ...</p>
        </body>
      </html>

Das verwendete Profil wird im Element head mit dem Attribut profile notiert. Mit einem Element link wird einem Schema festgelegt. Hier ist es ein Schema, welches für die danach verwendeten DCMI-Elemente ein Präfix festlegt. Dies wird dann zusammen mit dem Elementnamen als Wert von name verwendet. Der Wert des Attributes name ist dann also jeweils ein DCMI-Element, der Wert von content entspricht dann der dortigen Definition des Wertes für das Element.

Es gibt weitere Notationsvarianten, siehe DCMI-Angaben in (X)HTML.


Als Verfeinerung gibt es von DCMI auch noch einen größeren Satz von sogenannten Termen, die dann ein eigenes Präfix bekommen. Diese eignen sich, um die Bedeutung der Meta-Informationen noch präziser zu fassen. Beispiel:

      <?xml version="1.0" encoding="utf-8" ?>
      <!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">
        <head profile="http://dublincore.org/documents/2008/08/04/dc-html/">
          <title>Max und Moritz</title>
          <link rel="schema.DCT" href="http://purl.org/dc/terms/" />
          <meta name="DCT.title" content="Max und Moritz" />
          <meta name="DCT.description" content="Max und Moritz –
               Eine gereimte Bubengeschichte in sieben Streichen" />
          <meta name="DCT.subject" content="Bubengeschichte" />
          <meta name="DCT.creator" content="Wilhelm Busch" />
          <meta name="DCT.created" content="1865-04-04" />
          <meta name="DCT.issued" content="2011-06-21" />
          <meta name="DCT.format" content="application/xhtml+xml" />
          <meta name="DCT.language" content="de" />
          <meta name="DCT.publisher" content="Wiki van Book" />
          <meta name="DCT.rights" content="Der Autor Wilhelm Busch ist 1908 verstorben,
               urheberrechtlich ist das Werk daher frei verfügbar." />
          <meta name="DCT.source" content="http://de.wikisource.org/wiki/Max_und_Moritz" />
          <meta name="DCT.mediator" content="http://de.wikipedia.org/wiki/Max_und_Moritz" />
        </head>
        <body>
          <h1>Max und Moritz</h1>
          <p>etc ...</p>
        </body>
      </html>

Die Datumsangabe wurde hier etwa etwas differenziert, um zwischen der Entstehung oder Erstveröffentlichung zu unterscheiden und der Veröffentlichung des aktuellen Dokumentes. Auch ein Artikel von Wikipedia wurde ergänzt, hier mit der Annahme, dass dieser sich eigenen könnte, um herauszufinden, für welches Publikum sich das Werk eignen könnte - sofern dem Herausgeber dies bekannt ist, kann der mit einem speziellen Term dazu auch selbst eigene Angaben machen.

Anwendungsmöglichkeiten für eigene Meta-Angaben

Bearbeiten

Stellt ein Projekt selbst eine Suchmöglichkeit bereit, ist es ideal, eigene Meta-Angaben einzusetzen und dann nur diese zu durchsuchen, um effektiv die passenden eigenen Inhalte als Ergebnisse listen zu können. Weil sich die üblichen Angaben allerdings immer auf das ganze Dokument beziehen, ist es ohne eine Erweiterung so nicht möglich, Dokumentfragmente zu bezeichnen und als Ziel zu referenzieren. Dazu bietet aber auch die im Folgenden beschriebene Variante XHTML+RDFa eine Möglichkeit in Form von weiteren Attributen, um gezielt anzugeben, worauf sich die Meta-Informationen beziehen, wenn sie sich nicht auf das ganze Dokument beziehen sollen.

Element style

Bearbeiten

Anweisungen einer Sprache für Stilvorlagen können nicht nur in einer externen Datei untergebracht sein, auf die verwiesen wird, in dem Element style können diese im Bedarfsfalle auch im selben Dokument notiert werden. Dies kann etwa sinnvoll sein, wenn es darauf ankommt, alle Informationen in einem Dokument unterzubringen, etwa wenn man eine Bewerbung oder allgemein einen elektronischen Brief versenden möchte und man vermeiden möchte, ein Archiv zu senden, welches erst entpackt werden müßte, bevor der Inhalt gelesen werden kann.

style kann somit in head notiert werden, die dort notierten Stilvorlagen gelten für das ganze Dokument. Aus Sicht von XHTML ist der Inhalt von style interpretierter Text (PCDATA). Zeichen wie insbesondere > und < sind darin also zu maskieren, wenn sie nicht zu Markierungen von XML-Elementen gehören. Alternativ kann natürlich auch in style ein CDATA-Bereich verwendet werden. Aus Sicht der Stilvorlagensprache, meist CSS oder manchmal vielleicht auch XSL(T), ist der Inhalt von style eine Struktur, die dieser Sprache entspricht, also in diesem Sinne interpretiert werden können muß.

XHTML selbst legt keine Sprache fest, die interpretiert werden können muß. Mit dem erforderlichen Attribut type wird der Inhaltstyp der Stilvorlagensprache angegeben, für CSS etwa 'text/css' oder für XSL(T) 'application/xslt+xml'.

Mit dem optionalen Attribut media wird das Zielmedium für die Stilvorlageninformation angegeben. Welche Medientypen verfügbar sind, hängt von der verwendete Stilvorlagensprache ab. Siehe auch dazu die Beschreibungen der gleichnamigen Attribute für Stilvorlagenverarbeitungsanweisungen und für das Element link.

Ferner sind noch die allgemein verwendbaren Attribute xml:lang, dir und title verwendbar. title kann auch zur Angabe alternativer Stilvorlagen dienen, siehe die Beschreibung des Attributes beim Element link.


Exkurs XHTML+RDF(a)

Bearbeiten

Damit irgendein Programm die Angaben interpretieren kann, muss selbiges dem Namen natürlich eine Funktion oder Definition zuordnen können, was bei selbst definierten Meta-Angaben so nicht der Fall ist. Um das Prinzip zu verallgemeinern, wurden die Formate RDF und neuerdings auch RDFa entwickelt. Damit kann formal auf Definitionen von Bedeutungen verwiesen werden, so dass ein Programm, welches die Bedeutungen kennt, diese zuordnen kann, selbst wenn sie in XHTML selbst nicht definiert sind. Kennt das Programm die Bedeutungen nicht, kann es immer noch unabhängig davon die Relation zwischen der Meta-Angabe und der Definition dem Nutzer formal bereitstellen, damit der Nutzer die Definition selbst nachlesen kann (oder ein Programmierer die Funktion implementieren kann).

Die neueste Variante von XHTML hat dafür spezielle neue Attribute, diese Variante heißt XHTML+RDFa. Auch die in Arbeit befindliche Variante HTML5 (die wiederum auch eine Variante mit XML-Notation beinhaltet), weist eine RDFa-Erweiterung auf. Im weiterführenden, vertiefenden Kapitel über RDFa wird genauer darauf eingegangen, wie dieses praktisch benutzt wird.

Formal kann bei XHTML auch direkt im Element 'head' RDF notiert werden, RDF ist eine etwas etabliertere Methode, mit der in XML-Dateien ganz allgemein Meta-Angaben maschinenlesbar notiert werden können, während RDFa eine spezielle Variante ist, die dies mit Attributen tut und bislang nur speziell auf XHTML und SVG (tiny 1.2) zugeschnitten ist. Da XHTML ein XML-Format ist, ist man also nicht streng an obige Form mit dem meta-Element gebunden, sondern kann mittels RDF dafür speziell definierte Elemente aus anderen Namensräumen verwenden oder im Falle von RDFa mittels spezieller Attribute in praktisch jedem Element solch eine Meta-Information in Attributform notieren. Zur Verwendung von Elementen aus anderen Namensräumen siehe auch das Kapitel Erweiterbarkeit.