Unterschied zwischen HTML und XML

HTML

Die Abk√ľrzung HTML steht f√ľr Hypertext Markup Language. HTML ist eine¬†Computersprache, die dazu genutzt wird, Webseiten zu erstellen. Auch wenn es gerne mal behauptet wird, so ist HTML keine Programmiersprache, sondern eine Seitenbeschreibungssprache. Das hei√üt, sie gibt Entwicklern die M√∂glichkeit eine Webseite (mehr oder minder genau) zu beschreiben.

Die erste Version von HTML wurde Anfang der 1990er Jahre am CERN in der Schweiz entwickelt. Da das CERN eine Forschungsst√§tte ist, ist es nicht verwunderlich, dass die¬†urspr√ľngliche Idee der Sprache war, wissenschaftliche Texte zu formatieren und sie somit zwischen verschiedenen Computersystemen austauschbar zu machen. Urspr√ľnglich¬†stand also die Formatierung von Texten und nicht der Aufbau von Layouts, Kommunikation mit Usern oder √§hnliches im Vordergrund. HTML ist eine der zentralen Technologien des World Wid Webs (WWW), das zeitgleich am CERN entwickelt wurde.

Syntax

Die Syntax von HTML ist sehr einfach aufgebaut und¬†schnell zu erlernen. Die Sprache besteht aus einzelnen Befehlen, so genannten Tags (Englisch f√ľr Kennzeichnung, Markierung). Ein Tag besteht mindestens immer aus einer „√∂ffnenden spitzen Klammer“ (Kleiner-Als-Zeichen), dem Befehl und einer „schlie√üenden spitzen Klammer“ (Gr√∂√üer-Als-Zeichen). Das hei√üt, ein Tag k√∂nnte beispielsweise so aussehen <b>. Dieser Befehl sorgt daf√ľr, dass Schrift fett dargestellt wird. Die meisten Befehle k√∂nnen Sie, wie in diesem Fall (b steht f√ľr bold = fett), einfach aus der englischen Sprache ableiten. Zwischen dem Kleiner-Als-Zeichen und dem Befehl darf kein Leerzeichen oder etwas anderes auftauchen. Nach dem Befehl sind allerdings Leerzeichen oder auch noch¬†weitere Spezifikationen zul√§ssig (mehr dazu sp√§ter). In Standard-HTML (also nicht HTML 5 oder XHTML) k√∂nnen Sie den eigentlichen Befehl √ľbrigens gro√ü oder klein schreiben. Ob Sie also <B> oder <b> schreiben macht keinen Unterschied. √úblicherweise werden Befehle aber klein geschrieben, wobei es interessanterweise eine Empfehlung des W3C gibt, die Befehle gro√ü zu schreiben. Die Idee bei der Empfehlung war, dass gro√ü geschriebene Befehle innerhalb des Codes besser zu erkennen sind.

In „normalem“ HTML werden viele Befehle auch wieder „geschlossen“. Das hei√üt, es gibt noch zus√§tzlich ein schlie√üendes Tag, welches die Anweisung des √∂ffnenden Befehls wieder aufhebt. Bei diesem gilt, dass es grunds√§tzlich erstmal genau so ausschaut wie das √∂ffnende, wobei sich zwischen der √∂ffnenden Klammer und dem Befehl allerdings ein Slash (/) befinde. F√ľr das obige Beispiel ¬†lautet der schlie√üende Befehl also </b>.
Dieser HTML-Text:
Dieser <b>Text</b> ist fett!
wird im Browser dann so dargestellt:
Dieser Text ist fett!

Wie schon angedeutet kann das √∂ffnende Tag um eine ganze Menge Erweiterungen erg√§nzt werden. Diese sogenannten Attribute¬†werden nach dem Befehl aber vor der schlie√üenden Klammer angegeben und jeweils durch Leerzeichen voneinander und von dem Befehl getrennt. M√∂chten Sie beispielsweise einen Absatz in einen Text einbauen und den Absatz zentriert ausrichten, dann w√§re <p align=’right‘>Absatz</p> der korrekte Befehl. In den meisten F√§llen besteht ein Attribut aus einem Namen und einem Wert, welcher mithilfe eines Gleichheitszeichens angeh√§ngt wird. Der Wert selbst sollte in einfache oder doppelte Anf√ľhrungszeichen (‚ oder „) gesetzt werden, auch wenn das nicht immer notwendig ist.¬†Welche Attribute¬†bei welchen Befehlen zul√§ssig sind, entnehmen Sie bitte den HTML-Spezifikationen.

Syntaktische Unterschiede zu XHTML

XHTML ist eine „Weiterentwicklung“ von HTML, welche Ende der 1990 Jahre entwickelt wurde und im Januar 2000 in der Version 1.0 ver√∂ffentlicht wurde.¬†Bei der Benutzung sind die Unterschiede zwischen HTML und XHTML nicht sonderlich gro√ü. Allerdings¬†gibt es einige¬†Punkte zu beachten. Die wichtigsten Punkte habe ich hier aufgef√ľhrt:

  1. Befehle sind in XHTML immer klein zu schreiben. Das heißt, das Tag <b> muss in XHTML immer klein geschrieben werden. Ein <B>, das in HTML zulässig wäre, ist in XHTML verboten.
  2. Jeder Befehl muss immer geschlossen werden. In HTML gibt es beispielsweise kein schlie√üendes Tag f√ľr den Befehl <br>, der einen Zeilenumbruch erzeugt. In XHTML muss aber jeder Befehl geschlossen werden, so auch das <br>. ¬†Das hei√üt, eigentlich m√ľsste man in XHTML <br></br> schreiben, was aber recht unsinnig w√§re, da ein Zeilenumbruch ja nicht irgendwo anf√§ngt und wieder beendet werden muss. Daher wird der schlie√üende Befehl mit einem Slash am Ende des √∂ffnenden Befehls symbolisiert, was dann ein <br /> ergibt. Diese Vorgehensweise ist ist allerdings immer nur dann zul√§ssig, wenn zwischen dem √∂ffnenden und dem schlie√üenden Befehl kein Text und keine anderen Befehle stehen.
  3. Jedes Attribut muss immer einen Wert haben, was in¬†(Standard-)HTML nicht immer der Fall ist. In HTML w√§re beispielsweise <option selected> zul√§ssig, was in XHTML nicht korrekt w√§re. In XHTML lautet die korrekte Schreibweise <option selected=“selected“>.
  4. Jeder Attributwert muss immer in Anf√ľhrungszeichen gesetzt werden. In HTML w√§re es bei bestimmten Werten zul√§ssig, dass diese¬†ohne Anf√ľhrungszeichen an das Gleichheitszeichen angeh√§ngt werden, was in XHTML allerdings verboten ist. Hier ist es zwingend vorgeschrieben, dass die Werte immer in einfache oder doppelte Anf√ľhrungszeichen eingeschlossen werden.

Zu ergänzen ist, dass diese Unterscheidung nur bis HTML 5 gilt. Bei HTML 5 kann konfiguriert werden ob es sich wie HTML oder XHTML verhalten soll.

¬†„Standard-HTML“

Im Text ist an einigen Stellen von Standard-HTML die Rede. Damit beziehe ich mich auf die Syntax von HTML bis einschlie√ülich der Version 4.01. „Standard-HTML“ ist nat√ľrlich kein feststehender oder gar akademisch korrekter Begriff. Viel mehr versuche ich damit auf das Verhalten von „altem“ HTML anzusprechen, wie es vielen Entwicklern noch vertraut ist. Wie schon erw√§hnt verh√§lt XHTML sich anders. HTML5, also die momentan aktuelle Version von HTML,¬†¬†unterst√ľtzt sowohl die HTML als auch XHTML-Schreibweise.

HTML-Versionen

  • HTML Urversion, 3. November 1992
  • HTML Urversion mit neuen Formatierungsm√∂glichkeiten und integration von Bildern, 30. April 1993
  • HTML 2.0 Erg√§nzung um Formulare u.a., November 1995
  • HTML 3.2 Einf√ľhrung von Tabellen u.a., 14. Januar 1997 (HTML 3.2 DTD)
  • HTML 4.0 Erg√§nzung um Stylesheets, Frames u.a., 18. Dezember 1997
  • HTML 4.01 Kleinere Korrekturen, 24. Dezember 1999
  • XHTML 1.0 Neuformulierung von HTML in XML (vorher war HTML in SQML deklariert), 26. Januar 2000)
  • XHTML 1.1¬†Moulbasierte Version von XHTML 1, 31. Mai 2001
  • HTML5 komplette √úberarbeitung, 28. Oktober 2014

Unterschied zu Programmiersprachen

Wie eingangs erwähnt, ist HTML keine Programmiersprache sondern eine Auszeichnungssprache. Das heißt, HTML gibt Ihnen zwar die Möglichkeit Texte zu formatieren, sieht aber keine Möglichkeit vor Logik zu implementieren. Anders gesagt, eine Programmiersprache ist in der Lage 1+1 auszurechnen, HTML kann 1+1 im Browser ausgeben und formatieren, aber nicht ausrechnen.

Ergänzende Technologien

Auch wenn man mit HTML eine ganze Menge machen kann, so ist es¬†eigentlich unm√∂glich eine funktionale Webseite ohne erg√§nzende¬†Technologien zu erstellen. In den meisten F√§llen werden¬†clientseitig, das hei√üt im Browser, noch CSS (Cascading Stylesheets) und JavaScript eingesetzt. HTML selbst bietet nur sehr¬†eingeschr√§nkte Formatierungsm√∂glichkeiten, die durch den Einsatz von CSS deutlich verbessert werden k√∂nnen. JavaScript ist eine Programmiersprache, die im¬†Browser ausgef√ľhrt werden kann. Mit ihrer Hilfe kann HTML um Logik erg√§nzt werden. Somit¬†k√∂nnen die Werte, die in ein Formular beispielsweise gepr√ľft werden, ob sie g√ľltig sein k√∂nnten.

Webseiten werden √ľblicherweise von einem Webserver an den Client ausgeliefert. Der Browser schickt also eine Anfrage an einen Server, welcher diese Anfrage dann mit einer Webseite beantwortet. Bevor diese Webseite zum Browser geschickt¬†wird, kann diese auch noch von serverseitigen Technologien verarbeitet werden. Hier kommen¬†Programmiersprachen wie PHP, Java oder Ruby zum Einsatz, die dann beispielsweise auch mit Datenbanken wie MySQL kommunizieren k√∂nnen.

Literaturempfehlungen

Hier noch ein paar Literaturempfehlungen zu den vorgenannten Themen

HTML / CSS

JavaScript

XML

Die Abk√ľrzung XML steht f√ľr „Extensible Markup Language“. Die¬†Sprache XML¬†wird vom W3C betreut und ist im eigentlichen Sinn keine¬†wirkliche Sprache, da sie keine Vokabeln, sprich Befehle kennt. Viel mehr gibt XML ein Regelwerk, also eine Grammatik vor, mit dessen Hilfe Sprachen definiert werden k√∂nnen. Die Idee dahinter ist, dass man ein Regelwerk schaffen wollte, mit dem Entwickler selbst eine Sprache definieren k√∂nnen. Selber eine Sprache zu definieren ist immer dann sinnvoll, wenn mehrere Computer- oder Softwaresysteme untereinander Daten austauschen sollen und alle beteiligten Systeme dieselbe Sprache sprechen sollen. Sollte Beispielsweise eine Namensliste zwischen zwei Computersystemen ausgetauscht werden, dann k√∂nnte man eine Sprache definieren, welche Sender und Empf√§nger verstehen.¬†Ein entsprechendes Dokument, dessen Befehle¬†wirklich komplett frei ausgedacht ist, k√∂nnte dann beispielsweise so aussehen:

<liste>
<name>
<vorname>Peter</vorname>
<nachname>Görgens</nachname>
</name>
<name>
<vorname>Franka</vorname>
<nachname>Gallone</nachname>
</name>
</liste>

Wie hier schon zu erkennen ist, ist die Syntax eng mit HTML verwandt. Das hat einen einfachen Grund. Das urspr√ľngliche HTML ist n√§mlich in SGML deklariert und XML ist aus SGML entstanden. Das hei√üt, es wurde ein Teil von SGML¬†ausgegliedert und als eigenst√§ndige Sprache, sprich als XML deklariert.

F√ľr den Aufbau der Befehle gilt, dass auch hier der Befehl in Kleiner-Als- und Gr√∂√üer-Als-Zeichen gefasst werden muss und zwischen der √∂ffnenden Klammer und dem Befehl kein Whitespace (also Leerzeichen, Tabulator etc.) stehen darf. Wie der Befehl hei√üt, d√ľrfen Sie sich selbst ausdenken, wobei er nicht mit jedem beliebigen Zeichen beginnen darf. XML ist „case sensitive“, das hei√üt, es wird zwischen Gro√ü- und Kleinschreibung unterschieden. Das Element¬†<name> muss also mit </name> abgeschlossen werden und darf nicht mit </Name> oder </NAME> beendet werden.

Des Weiteren sind auch hier Attribute zul√§ssig, deren Namen Sie sich auch ausdenken d√ľrfen. Auch hier gilt, dass ein Attribut immer einen Wert haben muss und dieser in einfache oder doppelte Anf√ľhrungszeichen gesetzt werden muss.

Ergänzende Technologien

XML selbst gibt einem Entwickler also die Möglichkeit eine Sprache zu entwickeln. Allerdings funktionieren Sprachen als Kommunikationsmittel nur dann, wenn sowohl Sender als auch Empfänger einer Nachricht dieselbe Sprache sprechen. Daher gibt es eine ganze Menge Technologien, die es Ihnen ermöglichen eine Grammatik festzuschreiben. Im einfachsten Fall nutzt man dazu eine Document Type Definition (DTD). Mit ihrer Hilfe können Sie beispielsweise  definieren, welcher Befehl nach einem anderen kommen darf (also, etwas wie <vorname> muss nach <name> kommen) oder ob ein Element mehrfach auftauchen darf (<name> wiederholt sich beispielsweise). Allerdings sind die Möglichkeiten einer DTD eingeschränkt. So ist es beispielsweise nicht so einfach wenn man festlegen möchte, dass ein  Element mindestens 10 Mal, maximal aber 20 Mal auftauchen darf. Eine DTD kennt auch keine Möglichkeit um zu definieren, dass das was zwischen einem öffnenden und schließenden Tag steht, nur aus Zahlen bestehen darf und ähnliches.

Ben√∂tigen Sie solche und andere komplexere Definitionen, dann ist XML-Schema (Auch XSD f√ľr XML-Schema Definition genannt) die L√∂sung. Auch wenn XSD deutlich komplexer und umfangreicher ist, so lohnt es sich doch oft damit zu arbeiten, weil die M√∂glichkeiten, die sich daraus ergeben einfach sehr lohnend sind.¬†Alternativ k√∂nnen auch RELAX NG, Schematron oder andere Technologien genutzt werden um ein Schema, also eine Grammatik, zu definieren.

Weitere, sehr zentrale Technologien sind XSLT und XSL-FO.¬†Die Abk√ľrzung XSL steht f√ľr Extensible Stylsheet Language. Bei XSLT k√ľrzt das T „Transformation“ ab. Mithilfe von XSLT k√∂nnen Sie also ein Dokument in ein anderes transformieren. Das hei√üt, wenn Sie ein XML-Dokument wie aus dem obigen Beispiel haben und daraus HTML-Dokument erstellen lassen wollen, dann kann XSLT das f√ľr Sie √ľbernehmen. Das macht nat√ľrlich meist nur dann Sinn, wenn ein¬†Dokument √∂fter konvertiert werden soll.

XSL-FO, hier steht das FO f√ľr Formatting Objects, ist eine Seitenbeschreibungssprache. ¬†Hiermit¬†sind Sie in der Lage das Layout eines Dokuments sehr exakt zu beschreiben. Somit ist es sehr einfach aus einem XSL-FO-Dokument beispielsweise ein PDF generieren zu lassen. Ein XSL-FO-Dokument wird meist mithilfe von XSLT aus XML generiert.

Die Kombination dieser Technologien wird beispielsweise oft f√ľr die Produktion von Katalogen mit einem einfachen Layout genutzt. Die Daten f√ľr den Katalog liegen dann in einer Datenbank vor. welceh sie als XML-Dokument zur Verf√ľgung stellt. Danach wird das Dokument mithilfe von XSLT zu XSL-FO transformiert und kann danach direkt gedruckt werden. Somit ist es m√∂glich Kleinstauflagen zeitnah und „on demand“ zu produzieren.

Literaturempfehlungen

Unterschied zwischen HTML und XML

HTML und XML sind also zwei komplett unterschiedliche Paar Schuhe. HTML ist eine komplett fertige Sprache, welche dazu genutzt werden kann um Webseiten zu erstellen. XML gibt Ihnen die Möglichkeit eine eigene Sprache zu deklarieren und zu nutzen, wie das ja auch im Fall von XHTML gemacht wurde.