Wir haben noch nicht alle älteren Artikel nachbearbeitet. Das bezieht sich in der Regel nur auf die Codebeispiele, die noch nicht optimal dargestellt werden.
Moderne Semantik
Auch wenn bisher nur ein Entwurf vorliegt, ist klar: HTML5 wird der neue Standard für Markup. Die Webkrauts widmen sich dem Thema deshalb in einer mehrteiligen Serie. Eric Eggert eröffnet die Reihe und fragt nach dem Weshalb, Was und Wann.
HTML5 wird der neue Markup-Standard, daran gibt es mittlerweile keinen Zweifel mehr. Grund genug einmal zu schauen was eigentlich dahinter steckt.
Weshalb wurde HTML5 entwickelt?
Das Web hat sich seit 1999, als HTML4/XHTML1 entwickelt wurde, grundlegend verändert. Aus einem Web von statischen Dokumenten wurden hochkomplexe Applikationen, für die aber kaum semantisches Fundament vorhanden ist. Das soll sich in HTML5 ändern.
Die Entwicklung begann bei der WHATWG, einer Gruppe von Browserherstellern, die mit dem W3C-Prozess nicht einverstanden waren. Dort wurde der (zu vorigen (X)HTML-Versionen inkompatible) XHTML2-Standard entwickelt, der aber auf keinerlei Akzeptanz bei den Browserherstellern stieß. 2006 sah das W3C ein, dass HTML5 eine gute Sache ist und reaktivierte die alte HTML-Arbeitsgruppe. Beide Organisationen existieren heute nebeneinander und arbeiten an einer gemeinsamen Spezifikation, Editor Ian Hickson (Google) sammelt die Vorschläge und führt sie zusammen.
Was sind die Prinzipen und Ziele der HTML5-Entwicklung?
- Unterstütze existierende Inhalte: Parser (nicht Autoren!) sollen mit alten, aber dennoch existierenden Techniken umgehen können, auch wenn sie nicht in HTML5 festgelegt sind. So werden bspw. fehlerhaft verschachtelte Elemente (
<b>a<i>b</b>c</i>
) genauso unterstützt wie Elemente, die nicht mehr zum Standard gehören (<u>
etwa). - Graceful degradation (etwa: „Schrittweises Zurückfallen“): Wird eine Komponente in HTML5 nicht von einem Browser unterstützt, so darf das nicht dazu führen, dass die gesamte Webseite unzugänglich wird. Beispiel: Das (vorgeschlagene)
irrelevant
-Attribut kann per CSS emuliert werden:[irrelevant] {display:none;}
- Das Rad nicht neu erfinden: Wenn es schon eine weit verbreitete und implementierte Technik gibt, dann sollte sie übernommen werden statt etwas komplett neues zu entwickeln. Beispiel:
contenteditable=""
(um Bereiche der Seite bearbeitbar zu machen) ist bereits in vielen Browsern vorhanden und wird daher übernommen. - Paving the Cowpaths (etwa: „Trampelpfade pflastern“): Wenn es schon weit verbreitete Techniken gibt, dann sollte in Erwägung gezogen werden diese zu nutzen. Beispiel:
<br />
kommt oft in HTML statt<br>
vor und es schadet niemandem, wenn man die Nutzung erlaubt. - Evolution statt Revolution: HTML5 entwickelt (X)HTML weiter und wirft altbekannte Grundsätze nicht weg. Das bedeutet, dass Webentwickler nichts komplett neues erlernen müssen, sondern nach und nach neue Features einbauen können. Das gilt natürlich auch für die Hersteller von Browsern.
Muss ich jetzt HTML statt XHTML schreiben?
Nein. HTML5 verfügt über beide Serialisationen (Schreibweisen), kann also sowohl als X(HT)ML als auch als HTML geschrieben und interpretiert werden. Wichtig ist: Beide verfügen nach dem Parsen über den selben DOM-Baum. Es wird also tendenziell einfacher JavaScripts für HTML und XHTML zu schreiben.
Der DOM-Baum von HTML4 und XHTML1-Dokumenten konnte zuvor trotz gleicher Schreibweise unterschiedlich sein. Bei einem HTML4-Dokument wird zum Beispiel bei folgender Tabelle ein <tbody>
explizit in das DOM eingefügt, bei XHTML nicht:
<table><tr><td>Text</td></tr></table>
Das bedeutet, dass CSS wie table > tr > td
in HTML4 keine Wirkung zeigt.
Zum anderen erlaubt HTML5 ausdrücklich die Nutzung der XML-Syntax für Elemente ohne End-Tag: <img … />
führt nicht mehr zu Validierungsfehlern, auch wenn man ein HTML-Dokument benutzt.
Wann wird HTML5 fertig?
„Fertig“ ist im aktuellen W3C-Prozess ein sehr dehnbarer Begriff. Ein (vorgeschlagener) Standard muss heute viele Tests überstehen und Bedingungen erfüllen, um vom W3C final abgesegnet werden. Für HTML5 wird dafür extra eine Testsuite erstellt, die dann auch noch von 2 Browsern (oder vom Marktführer) bestanden werden müssen. Dieser letzte Teil, der sich bis 2022 hinziehen könnte, ist aber in der Praxis für Webentwickler relativ uninteressant – wir nutzen ja auch CSS2.1, das sich seit Jahren in der Entwicklung befindet, weitgehend implementiert ist, aber eben noch keine W3C-Empfehlung ist. Trotzdem würde kein Webentwickler sagen CSS2.1 sei nicht „fertig“.
Die HTML5-Arbeitsgruppe im W3C bereitet gerade die Veröffentlichung eines ersten Last Call vor, die im Oktober erscheinen soll. HTML5 definiert dann praktisch eine Todo-Liste für die Browserhersteller.
Gerade in den letzten Wochen hat sich mit der Gründung der HTML5 Super Friends, unter der Führung von Jeffrey Zeldman, und der Einreichung ihrer Anregungen einiges an der Spezifikation geändert, was Autoren betrifft.
Sollte man HTML5 jetzt verwenden?
Das kommt auf das Projekt an. Es schadet nichts, gewohntes (X)HTML zu nutzen und den neuen Doctype drüber zu schreiben, doch es hat auch keine wirklichen Vorteile. Die neuen Elemente (<nav>
, <article>
, <section>
) funktionieren in vielen Browsern noch nicht (IEs, Firefox 2) und haben dort wo sie funktionieren auch noch keine semantischere Bedeutung als div
s. Will man alle Browser mit im Boot haben und die IEs auch ohne JavaScript unterstützen, so kommt man um Hilfkonstruktionen und mehrfachverschachtelte div
s wohl nicht herum.
Für kleine, private Seiten, die nicht den Anspruch haben unter jeder Konfiguration gleich (gut) auszusehen, lohnt sich der Blick über den Tellerrand aber bereits, erst recht wenn man auch mit den neuen JavaScript-APIs spielen möchte. Für die alltägliche Arbeit sollte man aber vielleicht heute noch auf altbekannte Elemente setzen und eine Namenskonvention mit Klassen einführen, die HTML5-Elemente widerspiegelt.
Wie geht’s hier weiter?
In den nächsten zwei Wochen stellen euch einige unserer Autoren auf webkrauts.de die wichtigsten neuen Elemente im Detail vor – ausgehend vom aktuellen Entwurf. Es wird um die semantische Grundaufteilung einer Webseite gehen, um Elemente für Video- und Audiodateien, um Spielereien mit und um die neuen Möglichkeiten für das input
-Element. Den Abschluss bildet ein Beispiel aus der Praxis: Wir nutzen HTML5 für ein Blog-Projekt.
Kommentare
Peter Müller
am 21.09.2009 - 22:10
Eine Klasse-Idee, freue mich jetzt schon auf den Rest der Serie. Danke!
philosapiens
am 21.09.2009 - 22:13
Hallo Eric,
vielen Dank für den optimistischen Ausblick. Ich freue mich schon sehr, einmal "von der Pike auf" mit zu erleben, wie Du eine semantisch sinnvolle Seite mit HTML5 skizzieren möchtest.
Da ich auch sehr an einem barrierefreien Netz interessiert bin freue ich mich schon sehr auf Deine angekündigten Werke.
Wir lesen uns!
philosapiens
Eric Eggert (Autor)
am 21.09.2009 - 22:41
@philosapiens: Das sind natürlich nicht alle meine Artikel, sondern eine Gemeinschaftsproduktion von viele Webkrauts-Autoren. Ich habe das auch im Artikel noch einmal klar gestellt.
Markus Sowada
am 22.09.2009 - 08:54
Der Beitrag arbeitet Neues heraus und zeigt dennoch auch, mit welchem eigenen Anspruch HTML5 »in die Welt« entlassen wird. Insofern kann man nur sagen: Vielen Dank für die einordnenden Worte zum Thema. :)
Andy
am 23.09.2009 - 09:59
Ich freue mich schon sehr auf HTML5! Gerade Google und andere Firmen wollen ja HTML5 pushen.
Ich hoffe Microsoft wird so schnell wie möglich mitzieht!
Bei der "Marktmacht" die der IE noch hat, wäre es blöd wenn 50% der Leute keine HTML5 Seiten korrekt anschauen könnten.
Ich denke das könnte noch ein großes Problem werden!
Gruß aus Hamburg
Andy
Gunnar Bittersmann
am 23.09.2009 - 11:06
Ist das die Policy der HTML-5-Entwickler? Wenn ja, dann halten sie sich leider nicht dran.
Beispiel 1: Es gibt RDFa [RDFa-SYNTAX, RDFa-PRIMER] und es gibt Mikroformate [microformats.org]. Aber was von anderen kommt, das ist den HTML-5-Entwicklern wohl nicht gut genug und sie erfinden das Rad neu: Microdata [HTML5], §5.
Beispiel 2: Es gibt eine Spezifikation für Ruby-Annotationen [RUBY]. Simple Ruby ist in dieser Form seit vielen Jahren schon im Internet Explorer implementiert. Dennoch denken die HTML-5-Entwickler gar nicht daran, die Ruby-Spezifikation so in HTML 5 zu übernehmen (von Complex Ruby mal ganz abgesehen). Stattdessen auch hier: Wir machen unseren eigenen Kram und schaffen das 'rb'-Element ab. [http://www.w3.org/TR/html5/text-level-semantics.html#the-ruby-element], §4.6.20 ff. Das ist IMHO bedauerlich und semantisch unsinnig.
Von
kann kaum die Rede sein.
Gunnar
Eric Eggert (Autor)
am 23.09.2009 - 12:05
@Gunnar Bittersmann:
Zu Beispiel 1:
Das stimmt so natürlich nicht. Microdata ist aus Microformats und RDFa zusammengeführt und versucht beiden Vorlagen gerecht zu werden. Microdata kann in RDFa umgewandelt werden, hat aber für den Autoren den entscheidenden Vorteil, dass es eine gewohnte Syntax ist. Zudem sind (momentan) XML-Namespaces in HTML5 nicht möglich, die RDFa zwingend voraussetzt.
Ich zitiere da gerne Matthias Pfefferle:
Microdata ist zudem ein erster Entwurf, also eine Diskussionsgrundlage. Wie sehr diskutiert wird sieht man an dem HTML+RDFa-Draft, der ebenfalls veröffentlicht wurde. Es ist also noch viel Bewegung in dieser Frage.
Zu Beispiel 2:
Wie ich mir gerade versichern lies ist das
rb
implizit, da alles was nichtrt
oderrp
ist aber in einemruby
-Element steht Ruby-Base sein muss.Es ist also simplifiziert aber vollständig kompatibel.
Mathias Schäfer (Webkraut)
am 23.09.2009 - 14:23
Das Prinzip »Das Rad nicht neu zu erfinden« stimmt mit der Wirklichkeit gleichzeitig überein und auch nicht. Einerseits standardisiert man auch schlechte Techniken wie z.B. Microsoft Drag and Drop allein aus dem Grund, weil sie bereits da sind. Andererseits fährt man in verschiedener Hinsicht eine »Not invented here«-Politik und denkt sich z.B. neue Methoden zum Einbettung anderer Sprachen wie SVG, Ruby, RDF aus. Gut, das ist jeweils nötig, weil die HTML-Serialisierung keine Namensräume kennt. Eine (absichtliche, bewusste) Neuerfindung des Rades ist es trotzdem.
Eric Eggert (Autor)
am 23.09.2009 - 14:32
@molily
Auch wenn du das Gegenteil behauptest: Vorher gab es keine Möglichkeit diese ganzen Technologien in HTML einzubinden. HTML5 benutzt (angepasst) das was bereits in XML funktioniert und macht, dass es erstmals in HTML funktioniert. Wenn überhaupt wird hier ein Rad erfunden, aber sicher nicht neu erfunden.
Mathias Schäfer (Webkraut)
am 24.09.2009 - 15:14
Ich habe nicht das Gegenteil behauptet. Das W3C hatte mit XHTML die Möglichkeit der Extensibility geschaffen, und damit das Rad »Einbettung von anderen Auszeichnungssprachen in das HTML-Vokabular« erfunden. (Klar, HTML 4 war dadurch nicht betroffen.) Jetzt wird dieses Rad nochmal erfunden, auf einer anderen Basis als XML. Was wie gesagt auch folgerichtig ist: Das »Gefährt«, das dadurch rollen soll, ist schließlich ein anderes.
Paul
am 26.09.2009 - 04:36
Sehr angenehm zu lesen. Nun bin ich besser informiert was HTML5 angeht und freue mich auf die kommenden Artikel mit den befehlen.
Harald
am 26.09.2009 - 18:45
Ein guter Beitrag, der die Ziele nocheinmal herausstellt. Was mich jedoch an der Umsetzung stört: es wird wieder einmal (siehe XHTML 2) versucht, den großen Wurf zu landen, statt in kleineren Schritten zu standardisieren.
Und gerade die semantischen Elemente wie ARTICLE oder SECTION, die für den Browser im Prinzip nichts anderes sind als DIVs werden so ziemlich die letzten Elemente sein, die eingesetzt werden können - wenn sie dann noch im Entwurf sind und nicht durch Attribute ersetzt wurden.
Ich würde es begrüßen, wenn langsam mal ein (kleiner) gemeinsamer Nenner gefunden wird, in dem die vielen umstrittenen und unfertigen Elemente außen vor gelassen werden. Zum Beispiel ist für mich noch unklar, wie ich ein METER-Element mit CSS gestalten kann oder die Meldungen, die bei den neuen INPUT-Types ausgegeben werden. Nicht, dass am Ende so unterschiedliche und unvollständige Implementierungen herrauskommen wie bei HR oder FIELDSET, wo bei allen Browsern noch Nachholbedarf besteht.
Gunnar Bittersmann
am 12.10.2009 - 12:28
Wenn den HTML-5-Machern das 'rb'-Element nicht gefällt, dann müssen sie halt ihren Einfluss im W3C (den sie offenbar mehr als gut ist haben) nutzen, damit die Ruby-Spezifikation geändert wird.
Nein, das ist es nicht. So wie es jetzt ist, muss für Ruby-Annotationen unterschiedliches Markup geschrieben werden: mit 'rb' in XML (incl. XHTML 1.1), ohne 'rb' in HTML 5. Das widerspricht jeder Vernunft.
Die HTML-5-Macher scheren sich einen Dreck um Vereinheitlichung von Webtechnologien, kochen stattdessen ihr eigenes Süppchen und erfinden auch noch das letzte Rädchen neu. Und das W3C segnet diesen Unsinn am Ende auch noch ab. :-(
Eric Eggert (Autor)
am 12.10.2009 - 13:23
XML und HTML5 sind nicht kompatibel und müssen so und so konvertiert werden. Sich hier über die Arbeitsgruppe zu beschweren ist übrigens relativ sinnfrei, es ist sinnvoller sich direkt dort zu beschweren.
Die Kommentare sind geschlossen.