Bitte Beachten: Dieser Blog wird hier nicht weiter geführt! Kommentare und neue Blogposts gibt es unter http://feitel.indeedgeek.de. Dort bitte auch neue Kommentare zu diesen Beiträge erstellen.

Dienstag, 18. August 2009

HTML ist nutzlos!

Wofür brauchen wir überhaupt HTML? Mal ganz nüchtern betrachtet ist HTML doch nur ein gravierender Einschnitt in die Freiheit die XML uns bietet. Man muss ich plötzlich in eine Welt hinein zwängen, in der man zwar Videos abspielen kann aber maximal sechs Ordnungen von Überschriften haben darf. In der man zwar zwischen einem Akronym und einer Abkürzung unterscheiden kann aber nicht mal Überschriften automatisch numeriert werden.

Status Quo

Ok, ich bin nicht ganz fair mit meinen Beispielen. Aber mit welchem Grund machen wir diese Einschränkungen? Wäre es nicht einfach möglich XML frei Schnauze hinzuschreiben?

Betrachten wir doch erst einmal HTML. HTML gibt es im Grunde schon so lange wie es Webserver gibt (1987 - Tim Berners-Lee). Am Anfang eigentlich nur zur Textformatierung gedacht entwickelte sich später eher eine semantische Markup Sprache daraus. Mit der Entwicklung von CSS ging man immer mehr zu einer Trennung zwischen Aussehen (CSS) und Auszeichnung (HTML) über. In HTML sollte seit dem nicht mehr ein <b> (für bold - fett) stehen sondern ein <em> (für emphasized - hervorgehoben). Da so die Bedeutung und nicht das Aussehen definiert wird.

Da CSS lange Zeit (bedauerlicherweise bis heute noch) von vielen Browsern unterschiedlich implementiert (oder gar ignoriert) wurde, ist es schwer ein komplettes Layout in CSS abzubilden. Zudem hat bei Vielen nie ein Umdenken statt gefunden, so dass sich heute immer noch Webseiten mit <b> oder <font>-Tags finden. Auch Tabellen werden heute immer noch gerne für ein Layout missbraucht da man sich mit einer alternativen CSS Implementierung sehr schwer tut.

Eigentlich sollte man erst einmal jede Webseite komplett in HTML schreiben. Im HTML den Inhalt entsprechend auszeichnen (Zitate in <blockquote>, Abkürzungen mit <abbr>, etc) und erst anschließend das Ergebnis mit CSS formatieren. Dabei kann man dann auch entsprechend auf den Medientyp wie Bildschirm, Handy oder Screenreader eingehen. Aber leider sind wir wohl in der Praxis davon noch ein ganzes Stück entfernt.

Wo hilft mir nun also mein XML?

Der erste Punkt ist sicher die bereits erwähnte Freiheit. Ich kann jeden TAG den ich brauche einfach selbst definieren. Somit kann ich mein Text auch viel flexibler auszeichnen. Zusätzlich ist im Browser auch kein Standardverhalten (wie kursiv für <em>) vordefiniert. Ich kann sozusagen auf einer leeren Tafel anfangen zu malen und muss nicht jedes mal erst ein CSS-Reset implementieren. Zusätzlich erhält man eine klarere Struktur zwischen Semantik und Design da man erst gar nicht auf die Idee kommt eine Tabelle zum Positionieren zu missbrauchen - schließlich müsste man das Aussehen für ein table-Tag sowieso selbst in CSS implementieren.

Fassen wir zusammen: Formatieren muss ich mit CSS sowieso und durch XML wird die die semantische Aussagekraft ins Unendliche katapultiert. Wer sich noch nicht so ganz vorstellen kann wie ich mir das denke, für den habe ich mal ein kleines Beispiel erstellt.

Wo ist der Haken?

Also erstmal die beiden simpelsten Hindernisse: Zu erst einmal sind die meisten Webseitenbetreiber weder gewillt noch im Stande diese Änderung nachzuvollziehen. Wenn ihr euch die Verbreitung von Tabellenlayouts anschaut wisst ihr was ich meine. Zum anderen dürfte es an der ein oder anderen Browserunterstütung scheitern (Früher oder später bekommt der IE doch in jedem Webdesignartikel sein Fett weg).

Aber gut lassen wir einmal solche trivialen Hindernisse außer acht. Das Hauptproblem was ich sehe ist das durch zuviel Semantikfreiheit jegliche Semantik verloren geht. Zwar kann der Entwickler jeden Tag nennen wie er will aber der Browser versteht trotzdem nicht das "Kontakt" für einen Kontakt steht so lange bis man es ihm sagt. Wenn ich also völlige Freiheit in der Benennung habe kann der Browser daraus auch keine Schlüsse mehr ziehen. Man müsste dazu der Maschine erst denken beibringen damit sie versteht was ich mit Kontakt meine (und auch checkt das "Contact" und ein falsch geschriebenes "Gondagde" das selbe meint).

Der einzige Ausweg wird es wohl sein nicht ein HTML zu haben sondern in sich abgeschlossene Semantikbereiche. Diese müssten dann in irgend einer Metasprache definiert werden so damit der Browser damit etwas anfangen kann. Diese übergeordnete Definition müsste einmal das Aussehen definieren aber im weiteren auch die Bedeutung welche die entsprechenden Tags mit sich bringen. Nehmen wir mal als Beispiel SVG, MathML oder was ganz anderes. Diese beschreiben für ein entsprechendes Themengebiet eine Auszeichnungssprache. Möchte ich nun Formeln darstellen kann ich MathML einfach "includen" und kann dann meine Formeln schreiben. Das Problem daran ist: Es kann wieder kein Browser anständig darstellen und selbst wenn versteht er trotzdem nicht den Sinn dahinter (solange man es ihm nicht explizit erklärt). Deshalb meine ich es müsste eine Art Metasprache geben (konsequenterweise wieder XML) in der man beschreibt wie zum Beispiel SVG oder MathML auszusehen hat. Bisher gibt es das soweit ich weiß nur eine Sprache zur Festlegung von Schemata die allerdings nur zur Validierung von XML verwendet werden.

Mein Fazit, was ich aus der Überlegung mitnehme: Eigentlich verwenden wir die gesamte Zeit schon XML denn eigentlich ist HTML ja auch nur ein Teil von XML welcher sich um die Auszeichnung von Text kümmert. Schön wäre es allerdings wenn man den vollem Umfang, der von XML geboten wird, auch nutzen kann. Bisher muss jede Erweiterung erst in jeden Browser implementiert werden was annähernd unmöglich ist. Schön wäre es wenn man einfach auf verschiedene "Libraries" zugreifen, bzw. selbst erstellen, kann. Diese muss man einfach nur einbinden und schon versteht der Browser meine Erweiterungen und kann Formeln darstellen und Überschriften nummerieren.

Was haltet ihr davon? Wäre XML eine brauchbare Alternative? Kennt ihr schon Ansätze um die Semantik von XML wieder in XML zu beschreiben? Und ganz wichtig: Verwendet ihr noch Tabellenlayouts? ;-)