Websiteentwicklung: XHTML: Allgemeine Attribute

In XHTML gibt es einige Attribute, die bei allen oder nahezu allen Elementen verwendet werden können. Diese werden im Buch als allgemein verwendbare Attribute zusammengefaßt und nicht bei jedem Element einzeln aufgeführt und erläutert. Erlaubt ein Element diese Attribute nicht oder nur einen Teil von ihnen, so wird darauf beim betreffenden Element eingegangen.

Attribut xml:space, Behandlung von Leerzeichen Bearbeiten

Mit dem Attribut wird festgelegt, ob mehrere aufeinanderfolgende Leerzeichen in der Darstellung zu einem reduziert werden sollen oder nicht. Es gibt zwei Werte, 'default' und 'preserve'. Voreinstellung ist 'default'.

Bei 'default' werden zunächst alle Zeichen entfernt, die eine neue Zeile bewirken. Dann werden alle Tabulatorzeichen zu normalen Leerzeichen konvertiert. Danach werden alle führenden und endenden Leerzeichen eines Elementinhaltes entfernt. Als letztes werden alle aufeinanderfolgenden Leerzeichen auf ein Leerzeichen reduziert. Der verbleibende Text wird dann zur Darstellung gebracht. Dies hat dann auch zur Folge, dass Einrückungen und Zeilenumbrüche im Quelltext nahezu folgenlos bleiben. Nahezu, weil immerhin ein Leerzeichen verbleibt, wenn mindestens eines dieser Zeichen verwendet wurde. Kann man auch dieses nicht gebrauchen, darf man an der betroffenen Stelle weder Leerzeichen noch Zeilenumbrüche einfügen.

Bei 'preserve' werden zunächst alle Tabulatoren und Zeichen, die eine neue Zeile bewirken, zu Leerzeichen konvertiert. Dieser Text wird dann zur Darstellung gebracht. Führende und endende Leerzeichen und mehrere aufeinanderfolgende bleiben in der Darstellung also erhalten. In diesem Falle werden Einrückungen im Quelltext also sichtbar, dort untergebrachte Zeilenumbrüche jedoch nur als weitere Leerzeichen.

Attribut xml:lang, verwendete Sprache Bearbeiten

Mit dem Attribut wird die im Element verwendete Sprache angegeben. Das Attribut ist für XML-Formate allgemein definiert, ist also nicht für XHTML spezifisch. Der Wert ist ein Sprachkürzel gemäß BCP47, also im einfachsten Fall 'de' für deutsch, 'en' für englisch, 'fr' für französisch, 'it' für italienisch, 'es' für spanisch und so weiter, insbesondere noch 'x' für selbst festgelegte, experimentelle Varianten. Sprachvariationen werden optional festgelegt, indem deren Kürzel hinter einem Bindestrich angefügt wird, also etwa de-1996 für deutsch nach den Rechtschreibregeln von 1996 oder de-1901 für die von 1901 oder de-AT für die Variante aus Österreich, de-CH für die aus der Schweiz, en-US für englisch im amerikanischen Dialekt etc. Auch hier kann das 'x' wieder dafür herhalten, eine eigene Sprachvariante anzugeben, zum Beispiel en-x-Hixie oder als weitere Untervariante auch en-US-x-Hixie (ist tatsächlich beim Arbeitsentwurf vom 2011-05-25 für HTML5 zu finden ;o).

Betrachtet man also speziell die Sprachvarianten für deutsch, so ist mit der Angabe 'de' nicht festgelegt, um welche Variante es sich handelt. Erst durch Ergänzung des Subtyps wird eindeutig festgelegt, um welche Variante es geht. Da etwa die Schweizer etwas andere Rechtschreibregeln haben, ist es für diese sinnvoll, 'de-CH' anzugeben, was auch nützlich sein kann, wenn verschiedene Autoren einen Text bearbeiten. So bleibt immer klar, welche Variante verwendet wird. Bedingt durch die Rechtschreibreform der deutschen Sprache lassen sich entsprechende Diskussionen auch vermeiden, indem entweder 'de-1901' oder 'de-1996' angegeben wird, wobei letztere Angabe durch Korrekturen der Reform nicht ganz eindeutig ist. Jedenfalls deckt wiederum die Angabe von 'de' alle diese Varianten ab, sogar einschließlich individueller Varianten wie 'de-x-Dieter', im Grunde ist es bei der Angabe 'de' also sinnlos, Rechtschreibfehler zu diskutieren.

Eine korrekte Angabe für das gesamte Dokument ist zu empfehlen. Fehlt diese, wird die verwendete Sprache als unbekannt angenommen. Werden im Dokument für Passagen oder einzelne Wörter andere Sprachen verwendet, so sollte dies ebenfalls angegeben werden, indem das Attribut im umschließenden Element mit dem zutreffenden Sprachkürzel notiert wird. Zum Beispiel erleichtert dies Programmen, die Dokumente vorlesen, die Wörter besser verständlich auszusprechen.

Attribut dir, Schreibrichtung Bearbeiten

Mit dem Attribut dir wird die Schreibrichtung im Element festgelegt. Es gibt zwei Werte, 'ltr' für von links nach rechts und 'rtl' für von rechts nach links. Die Voreinstellung ist 'ltr'.

Wird das Attribut beim Wurzelelement html gesetzt, so gilt der Wert für das ganze Dokument, sofern in Nachfahren kein anderer Wert gesetzt ist.

Wird das Attribut bei einem Blockelement gesetzt, so gilt der Wert für alle Blockelemente, die Nachfahren dieses Blockelementes sind, sofern in diesen Nachfahren kein anderer Wert gesetzt ist. Für inzeilige Elemente gilt diese Vererbung nicht.

Zu beachten ist, daß die Kodierung von Schriftzeichen zum Beispiel nach UTF-8 bereits eine Schreibrichtung impliziert. Von daher wird das Attribut in den allermeisten Fällen nur benötigt, wenn die normale Schreibrichtung für die Schriftzeichen überschrieben werden soll.

Attribut id, Fragmentidentifizierer Bearbeiten

Das Attribut id dient dazu, ein Element eindeutig zu identifizieren. Dies wird auch als Fragmentidentifizierer beziehungsweise Fragmentidentifizierung bezeichnet.

Der Wert eines Attributes id darf in einem Dokument nur maximal ein einziges Mal vorkommen.

Wie der Wert aussehen darf, ist in XML genau festgelegt. Eine etwas vereinfachte Auswahl, mit welcher ein Autor auf der sicheren Seite ist: Der Wert beginnt immer mit einem Buchstaben a-z oder A-Z, keine Sonderzeichen wie Umlaute oder Ligaturen. Alternativ kann der Wert auch mit ':' oder '_' beginnen. Optional können dann noch weitere dieser Buchstaben oder Zeichen folgen, zusätzlich auch noch Ziffern 0-9, '-' und '.'.

Für XML-Dokumente allgemein ist auch noch das Attribut xml:id mit gleicher Funktionalität definiert. In XHTML-Dokumenten allein wird dieses jedoch im Allgemeinen nicht verwendet. Es kann aber nützlich werden, wenn verschiedene XML-Formate in einem Dokument gemischt werden und Elemente von einem Formatfragment zum anderen identifiziert werden sollen - oder auch von Programmen, bei denen davon ausgegangen werden kann, dass sie XHTML inhaltlich nicht verstehen. Für die Identifikation innerhalb von XHTML-Fragmente ist allerdings immer id zu verwenden. Wenn beide Attribute in einem Dokument verwendet werden, darf kein Konflikt bei der Identifizierung entstehen. Für dasselbe Element sind dann im Bedarfsfalle xml:id und id gleich zu wählen, ansonsten darf kein Wert von xml:id oder id im Dokument doppelt vorkommen.

Attribut class, Klassenzuordnung Bearbeiten

In XHTML kann ein Element ebenfalls selbstdefinierten Klassen zugeordnet werden. Dazu dient das Attribut class. Es kann also pro Klasse mehr als ein Element im Dokument geben, anders als id eignet sich class damit nicht zur Identifizierung genau eines Fragmentes.

Der Wert des Attributes ist eine mit Leerzeichen separierte Liste von Klassennamen.

Ein Klassenname in dem Sinne ist eine Zeichenkombination aus Buchstaben, Zahlen und den Zeichen '.', '-', '_', ':'

Vielfach wird das Attribut dazu verwendet, um eine Klasse von Elementen über einen CSS-Selektor mit Eigenschaften zu versehen. Der Wert des Attributes hat allerdings auch eine semantische Bedeutung, denn der Name der Klasse sollte charakteristisch zur Funktion der Elemente einer Klasse gewählt werden.

Zum Beispiel bedeutet class="Hilfe Menue", dass das Element zu den Klassen 'Hilfe' und 'Menue' gehört. Eine Bezeichnung wie class="klein blau" ist hingegen vermutlich keine semantisch gute Bezeichnung, weil es nichts über die Funktion des Elementes verrät, sondern bestenfalls über die beabsichtigte Präsentation (die bei einer alternativen Stilvorlage anders sein kann).

Attribut title, kommentierender Titel, Nutzerhilfe Bearbeiten

Mit dem Attribut title kann einem Element ein Titel oder Kommentar zugeordnet werden, welcher nicht im normalen Textfluß, sondern nur bei Bedarf für den Leser sichtbar gemacht wird.

Der Wert ist normaler Text.

Es ist nicht festgelegt, wie Darstellungsprogramme im Bedarfsfalle den Wert von title zur Darstellung bringen.

Bei interaktiven, graphischen Programmen hat es sich jedoch etabliert, dass der Inhalt beim Drüberfahren mit einem Zeigergerät wie einer Maus etwas versetzt zum Zeigergerät in einem kleinen Kästchen getrennt vom sonstigen Inhalt dargestellt wird. Als Nutzerhilfe (englisch: tooltip) wird das Attribut häufig verwendet, um einem Leser Zusatzinformation zur Funktion des Elementes anzugeben.

Attribut style Bearbeiten

Mit dem Attribut können Formatierungs- oder Dekorationsanweisungen für ein Element notiert werden. Der Wert ist zunächst einfacher Text. Die verwendete Stilvorlagensprache legt genauer fest, wie der Wert aussehen darf. Eine häufig verwendete Sprache ist zum Beispiel CSS.

Bei XHTML sollte Inhalt von Dekoration und Layout strikt getrennt werden, daher sollte dieses Attribut im Allgemeinen vermieden werden. Entsprechend ist das Attribut in neueren Version von XHTML als veraltet gekennzeichnet. Es ist mehr für die Ausnahmesituation vorgesehen, wo aus bestimmten Gründen Angaben zur Dekoration nicht in einer externen Datei oder im Element style notiert werden können. In der Praxis treten solche Gründe allerdings fast nie auf.

Da keine Stilvorlagensprache als Voreinstellung festgelegt ist, muß der Autor dies im Dokumentkopf als Metainformation angeben, damit der Wert von style definiert ist. Nähere Angaben zu solchen Metainformationen finden sich im Kapitel über Kopfdaten.

Für CSS sieht das dazu zu verwendende Element meta wie folgt aus:

<meta http-equiv="Content-Style-Type" content="text/css" />

Attribute zu semantischen Notationen, RDFa Bearbeiten

In der Sprachvariante XHTML+RDFa gibt es einige allgemein verwendbare Attribute, die dazu dienen, die vom Autor beabsichtigte Bedeutung, die Funktion und den Zweck von Elementen genauer festzulegen. Der Hintergrund dafür ist, dass XHTML selbst nur wenige Element hat, um Inhalte präzise semantisch zu kennzeichnen, was schon für normalen Text zutrifft. Für speziellere Ausdrücke bietet XHTML selbst meist gar keine eigene Notation. Es ist jedoch oft erwünscht, diese Ausdrücke passend und spezifisch auszuzeichnen. Neben dem Wunsch, eindeutig aufschreiben zu können, was man eigentlich inhaltlich meint, gibt es so auch die ganz praktische Möglichkeit, dass Programme so präzise ausgezeichnete Information besser 'verstehen' und auslesen können, also dem Leser mit Hilfen besser zugänglich machen können, für den sich durch die präzise Notation auch Mehrdeutigkeiten der Aussagen gezielt vermeiden lassen.

Dazu kann prinzipiell eine eigene Sprache mit eigenem Namensraum verwendet werden, wobei deren Elemente dann statt XHTML verwendet werden oder diese Element eben unter Angabe des anderen Namensraumes direkt in XHTML verwendet werden. Da nicht alle Darstellungsprogramme die Elemente aus anderen Namensräumen kennen werden oder auch deren gegebenenfalls vorhandene technische Funktionalität (wie bei XHTML etwa Verweise oder Formulare) nicht korrekt interpretieren können, kann die Situation vereinfacht werden, in dem weiterhin ausschließlich Elemente von XHTML verwendet werden, diese aber Attribute bekommen, die deren semantische Bedeutung präziser festlegen.

Dies wird umgesetzt mit Attributen, die mit XHTML+RDFa neu eingeführt wurden und allgemein verwendbar sind, dies sind in der Version XHTML+RDFa 1.0: about, content, datatype, typeof, property und resource. Zusätzlich sind die Attribute rel und rev nicht mehr nur bei ganz bestimmten Elementen verwendbar, sondern werden auch zu allgemein verwendbaren Attributen. In der Version XHTML+RDFa 1.1 kommen noch die Attribute vocab, prefix und inlist hinzu.

Die Verwendung wird im gesonderten Kapitel RDFa erläutert.

Attribute zur Ereignisbehandlung Bearbeiten

Attribute zur Ereignisbehandlung gehören ebenfalls zu den allgemein verwendbaren Attributen. Dies sind: onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup.

Die Werte sind zunächst einfacher Text. Die verwendete Skriptsprache legt genauer fest, wie der Wert aussehen darf.

Generell sollen Skripte - wenn überhaupt - so angelegt sein, dass mit und ohne Skriptinterpretation durch das Darstellungsprogramm die gleiche Information verfügbar ist. Die Attribute zur Ereignisbehandlung können also im Bedarfsfalle dazu verwendet werden, um die Ergonomie der Dokumentbedienung, den Zugang zum Inhalt für bestimmte Nutzergruppen zu verändern, nicht um relevante Inhalte zu verändern.

Generell gilt es als bessere Technik, auf diese Attribute zu verzichten und die Ereignisbehandlung ausschließlich im Skript zu realisieren. Dies entspricht der Trennung von Inhalt und Dekoration bei der Verwendung von externen CSS-Dateien. In diesem Modell bildet das Skript eine weitere optionale Dekorationsebene oder Abstraktionsebene, mit der es möglich wird, den vorhandenen Inhalt anders zu präsentieren.

Da keine Skriptsprache als Voreinstellung festgelegt ist, muß der Autor dies im Dokumentkopf als Metainformation angeben, damit der Wert dieser Attribute definiert ist. Ohne eine solche Angabe ist die Verwendung der Attribute inkorrekt, ein Darstellungsprogramm kann dann die Skriptsprache raten, muß es aber nicht. Nähere Angaben zu solchen Metainformationen finden sich im Kapitel über Kopfdaten.

Für ecmascript zum Beispiel sieht das dazu zu verwendende Element meta wie folgt aus:

<meta http-equiv="Content-Style-Type" content="application/ecmascript" />

Die genaue Bedeutung der Attribute wird im Kapitel über Skripte erläutert.

Aufgabe 4 Bearbeiten

Was ist der Hauptunterschied zwischen dem Attribut id und dem Attribut class?

Lösung