Veränderungen zu XHTML 2 - eine Revolution?

Vorwort

Die letzten Jahre sind im Bereich der Webgestaltung ohne größere Veränderungen verlaufen. Im Jahr 1999 gab es mit HTML 4.0 die letzte größere Reform (ok, es wurde noch Feinheiten ausgebessert und das ganze XML-konform gemacht), CSS 2 ist unsere Spielweise - und die gibt es sogar schon seit 1998. Wir ärgern uns bei jeder Seite über die Rückschrittlichkeit des Internet Explorers - und ansonsten? Einige Features bereicherten die Seiten (z.B. RSS, Favicons, ...) - aber es waren keine grundsätzlichen Veränderungen! Aber so langsam kommt wieder Wind auf. Schauen wir einen Blick in die Zukunft, denn XHTML 2 wird eine Revolution werden!

Überschriften

Bisher geben wir einer Überschrift einfach eine Nummer - und machen damit deutlich, welchen Rang sie hat:

<h1>Überschrift ersten Grades</h1>
<h2>Überschrift zweiten Grades</h2>
<h3>Überschrift dritten Grades</h3>
... </h6>

Eine ähnliche Praxis gibt es auch in LaTeX: \part, \chapter, \section, \subsection, \subsubsection usw. Diese Struktur wird komplett aufgelöst. In Zukunft werden die Webseiten in logische Abschnitte verschachtelt - und zu dem Abschnitt kann dann die Überschrift festgelegt werden:

<section>
  <h>Überschrit ersten Grades</h>
  ...
  <section>
    <h>Überschrift zweiten Grades</h>
    ...
    <section>
      <h>Überschrift dritten Grades</h>
      ...
    </section>
  </section>
</section>

Ein angenehmer Nebeneffekt ist die nicht mehr vorhandene Beschränkung auf maximal sechs Ebenen (bei LaTeX sind es sieben). Zugegeben: so tief habe ich noch nie verschachteln müssen. Der weitaus größere Vorteil ist allerdings die einfache Weiterverarbeitung von Texten. Wenn man ein Kapitel schreibt, kann man es ohne nennenswerten Aufwand in einem anderen Artikel einbinden - oder man kopiert nur Abschnitte heraus. Bisher mußte man zumindest die Nummer der Ebene im Überschrifts-Tag verändern.

(Kurzer Gedanke am Rande: ein <h> außerhalb von <section> wäre doch eine praktische Sache für einen Seitentitel?)

Absätze

Es wird einige Vereinfachungen bei der Verwendung von Absätzen geben, die wichtigste ist die Möglichkeit, Blockelemente weiter zu verschachteln.

<p>Es wird einiges neues bei XHTML 2 geben, z.B. das hier
   <ul>
   <li>Neue Struktur für Überschriften</li>
   <li>Listen sind auch in Absätzen erlaubt</li>
   <li>usw..</li>
   </ul>
Einiges wird sich auch nicht ändern!</p>

Nach den bisherigen Regeln mußte man den Absatz erst schließen, um dann die Liste eröffnen zu können - und danach öffnete man wieder den Absatz!

vorformatierte Bereiche, Zeilenumbrüche und die horizontalen Linien

Die Elemente <pre />, <hr /> und <br /> werden verschwinden. Eine horizontale Linie (hr = horizontal row) ist ein Gestaltungsmerkmal - es wird durch <seperator> ersetzt - und mit CSS dann gestaltet. Diese Veränderung ist im Endeffekt nur eine Umbenennung - und könnte den Tipfaulen weniger gefallen (warum nicht kurz <sep />?). Ähnlich verhält es sich mit dem vorformatierten Texten mittels <pre /> - in Zukunft ist dies lediglich ein Attribut eines anderen Elementes: layout="relevant". Richtig chaotisch ist dagegen der Ansatz für den Zeilenwechsel. Bisher verwendete man lediglich ein Element:

<p>So funktionierte bisher ein Zeilenumbruch<br/>
und weiter geht es!<br/>
und es funktioniert</p>

Nach XHTML 2.0 wird jede Zeile geklammert:

<p><l>Wir definieren zum Absatz eine Zeile</l>
<l>damit wir nun einen Umbruch machen können</l>
<l>und benötigen wesentlich mehr Elemente!</l></p>

Der Ansatz ist zugegebenermaßen Chaos. Die Argumentation sind verbesserte Gestaltungsmöglichkeiten - nur wie will ich einen Zeilenumbruch optisch gestalten? Notfalls wäre auch der CSS-Ansatz mit :before / :after denkbar. Auf jeden Fall wird mit dieser Maßnahme der Quellcode aufgebläht - insbesondere wenn man zur Vereinfachung und jederzeitigen Verwendung das Element permanent verwendet!

eingebundene Bilder und Links

Diese beiden Elemente sind eigentlich die Grundbasis von HTML. Mit <img /> plaziert man Bilder, mit <a href=""> setzt man Links. Auch dieser Ansatz wird aufgeweicht: die relevanten Attribute src und href dürfen künftig in allen Elementen verwendet werden. Ein Bild kann man künftig so setzen (anstelle von <p> ist auch weiterhin <img> möglich, jedoch gibt es das alt-Attribut nicht mehr):

<p src="map.png" type="image/png, image/gif">Ein schönes Bild!</p>

Das w3c bemängelt schon sehr lange und sehr energisch, daß zu einem Bild stets eine Beschreibung als Alternative angeboten werden soll. In den alten Modem-Zeiten war es nützlich: man las erst einen kleinen Beschreibungstext - um dann zu entscheiden, ob man das Bild sehen möchte. Heute spielt viel stärker der Gedanke der barrierefreiheit (hier die Blinden) eine Rolle. Mit der neuen Variation werden die Betreiber der Seiten viel stärker gezwungen, eine Alternative anzubieten (ein Attribut weglassen geht schnell, ein Tag leer lassen sieht dagegen ungeschickt aus).

Das Attribut type ist eine freiwillige Zugabe, mit der man den gewünschten Dateityp angeben kann. Es ist nützlich, wenn man damit geschickt Browserweichen aus dem Weg gehen will.

<li href="http://renephoenix.de/">René Pönitz</li>

Links sind nun genauso auf jedes Element angewendet. In Bezug auf Menulisten sogar echte Vereinfachung.

Menulisten

Es gibt sie wieder, nachdem man sie entfernt hat. Das, was früher sich <menu> sich nannte, nur eine geringe Popularität hatte - und anschließend als mißbilligt eingestuft wurde, wird mit XHTML 2 wieder geboren. Es nennt sich <nl> (Navigation Lists) - zugegeben: menu klang schöner!

Metadaten

Ohne diese Kapitel mit Details zu ersticken: es ist künftig möglich, Meta-Angaben an jeder beliebigen Stelle zu plazieren. Im Grunde funktioniert es dann mit dem Element <meta>, welches drei Attribute habe wird:

In der Anwendung könnte es z.B. so aussehen:

<p id="p123">
<meta about="#p123" property="title">Wert</meta>
eigentlicher Inhalt mit einem Link zur <a href="..."
rel="next">nachfolgenden</a> Seite</p>

Das Attribut role

Eine kleine Neuigkeit ist das role-Attribut. Damit kann man einzelne Bereiche kennzeichnen, z.B. als Einleitung, Zwischennotiz oder auch die Beliebte Trennung zwischen Hauptseite und dem Navigationsbereich. In der Praxis wurde diese Eigenschaften meistens im class-Attribut versteckt - welches letztendlich für die Auswahl der richtigen CSS-Klasse zuständig ist.

Das Attribt wurde als RSS-Killer vorgestellt. Man könnte z.B. die Zusammenfassung auf einer Seite suchen - nur RSS wird trotzdem kleiner sein (zumindest so lange es noch kein MS-RSS gibt)

Accesskeys nun zentral

Die sogenannten Zugriffstasten waren bisher verstreut definiert, z.B. in Links oder Formulardaten. Diese werden nun zentral im Kopf verwaltet. Dabei sind diese Tasten für verschiedene Medien unterschiedlich auslegbar.

<access targetid="main" key="M"/>

Eventhandler

Es haben die alten JavaScript-Handler ausgedient. Es gibt kein onmouseover und onclick mehr, sondern DOM-Handler. So sah der Aufruf einer Eingabeprüfung des Formulares bisher aus:

<input type="submit" onclick="validate(); return true;">

Und so in Zukunft:

<input type="submit">
    <handler ev:event="DOMActivate" type="text/javascript">
       validate();
    </handler>
</input>

Es sieht zugegebenermaßen nicht einfacher aus - aber es gibt mehr Möglichkeiten: ich kann verschiedene Handler aufrufen (es ging bisher auch) - ich kann für einen Handler auch verschiedene Sprachen verwenden (da stelle ich den Sinn einmal in Frage). Der Hauptvorteil für diesen Schritt ist das alte Problem, daß die Handler unterschiedlich interpretiert wurden sind (ist onclick nur ein Mausklick oder auch die Entertaste ... beim Drücken - oder beim Loslassen?), gibt es nun einen festdefinierten Standard.

Formulare

Den herkömmlichen Ansatz von Formularen wird es mit XHTML2 nicht mehr geben, sie werden ersetzt durch XFORMS. Die wesenttlichsten Verbesserungen sind der Austausch der Daten mittels XML und das Nachladen von bestehenden Formularelementen (Dazu aber später mehr)

Weitere Elemente

Fazit

Wenn man die gesamten Veränderungen betrachtet, sieht man eine Revolution auf uns zu kommen. Dinge, die seit den Anfängen des HTML vorhanden waren, werden nun in Frage gestellt - und bis auf wenige Ausnahmen auch gut gelöst!

Aber jenseits dieser Veränderungen steht natürlich die Frage, ab wann diese Technologien eingesetzt werden können. Die Antwort ist ungewiß! Vermutlich könnte der InternetExplorer wieder die Spaßbremse werden!

Weitere Informationen

Diese Seite gibt es auch als XHTML 2-Variante. Ich habe die oben genannten Veränderungen - soweit vorhanden - umgesetzt. Im CSS-Abschnitt waren einige Ergänzungen notwendig, da die Browser die neuen Tags und Attribute noch nicht kennen. An der Stelle zeichnet sich ein Unterschied zwischen den Browsern ab: bei Opera kann ich unbekannte Elemente formatieren, der Mozilla/FireFox ignoriert diese.

Du kannst einen Kommentar abgeben oder zur Startseite von renephoenix.de zurückgehen!