Eine Markup Language – kurz ML – ist eine Auszeichnungssprache. Die Markup wird zur Beschreibung von Inhalten von Dokumentenformaten genutzt. Teilweise wird durch die Markup auch das Verfahren beschrieben, das benötigt wird, um diese Daten zu bearbeiten. Ursprünglich benötigten die Setzer, um einen Drucksatz setzen zu können, die Markups als Anweisungen. Jedoch kam es zu einer Weiterentwicklung der Typografie, insbesondere im Bezug auf die digitalen Texte. Daher wurden aus den kurzen Auszeichnungen komplexe Sprachen.
Die Geschichte der Markups
Hervorhebungen in Texten können sowohl Fettschreibungen als auch die Kursivschriften sein. Zudem zählen Literaturhinweise, Überschriften, Fußnoten oder Absätze als Hervorhebungen, die ebenfalls durch eine Schriftauszeichnung gestaltet werden. Solche Strukturmerkmale von Texten wurden früher durch ein Markup, also eine Textauszeichnung, eingetragen. Ursprünglich handelte es sich bei einem Markup um eine handschriftliche Textauszeichnung, die auf einem Manuskript vorgenommen wurde, um den Schriftsetzern Formatierungsanweisungen zu geben.
Die Funktionsweise von einem Markup
Auszeichnungssprachen nutzen Tags, um die Eigenschaften von Texten ebenso wie deren Verfahren oder die Zugehörigkeiten zu markieren. Markiert werden hierbei entweder Wörter oder Sätze, aber auch ganze Abschnitte. Hierbei handelt es sich um Auszeichnungselemente. Diese befinden sich in einem Text oder auch in einer Datenmenge. Sie werden durch die Tags, also die verschiedenen Elemente zur Auszeichnung, sowohl beschrieben als auch zugeteilt.
In den meisten Fällen werden Quelltexte mit UTF-8 oder aber auch mit Unicode oder ASCII verfasst. Die Sprache bietet den Verfassern zudem die Möglichkeit der Beschreibung von Sonderzeichen. Das geschieht zumeist durch Zuhilfenahme von einem Unicode. Bei einem Unicode handelt es sich um eine numerische Zuweisung. Sonderzeichen können zudem aber auch benannt werden. So wird anstelle von µ in Latex \mu verwendet, in HTML bleibt es bei µ.
Die Unterscheidungsmerkmale und die Abgrenzungsmöglichkeiten
Bei einer Markup wird unterschieden, ob es sich um eine Markup handelt, welches lediglich zur Beschreibung genutzt wird, oder ob eine Markup verwendet wird, das zu den prozeduralen Auszeichnungssprachen gehört. Bei den reinen Auszeichnungssprachen zur Beschreibung handelt es sich um DMLs, die Descriptive Markup Languages. Bei den prozeduralen Auszeichnungssprachen wird von PMLs gesprochen, also den Procedural markup Languages.
Handelt es sich um reine Beschreibungssprachen, werden diese genutzt, um Informationen zu beschreiben. Hiermit werden die physischen und auch die logischen Strukturen von Dokumenten, also den Layouts, beschrieben. Bei den prozeduralen Auszeichnungssprachen werden die Darstellungsweisen der vorhandenen Dokumente, die sich entweder auf Bildschirmen oder in Webbrowsern befinden, beschrieben.
Die DML: Descriptive Markup Languages
Die Descriptive Markup Languages sind reine Beschreibungssprachen. Zu ihnen gehören beispielsweise HTML, WML oder XAML. Hierbei handelt es sich um Beschreibungssprachen, die entweder in SGML oder auch in XML definiert werden.
Die LML: Lightweight Markup Languages
Die Lightweight Markup Languages werden verwendet, damit Dokumente beispielsweise für Wikis, Foren oder Blogs manuell erstellt und gelesen werden können. Daher werden zur Erstellung und zum Lesen dieser Dokumente die vereinfachten Auszeichnungssprachen genutzt. Hier konzentriert sich die Syntax auf die einfacher zu merkenden Elemente in der LML. Zur endgültigen Darstellung der Dokumente werden diese serverseitig in gewöhnliche Auszeichnungssprachen umgewandelt. Als gewöhnliche Auszeichnungssprachen werden hierzu meist XHTML oder HTML genutzt.
Bei den klassischen Auszeichnungssprachen hingegen handelt es sich um Skriptsprachen, deren Ziel es ist, möglichst detaillierte Darstellungen zu erzielen. Diese Skriptsprachen werden jedoch zumeist maschinell erzeugt. Sie müssen nicht zwangsläufig durch Menschen lesbar sein oder durch diese verwendet werden. Anders verhält es sich jedoch, wenn die Inhalte durch Menschen manuell eingegeben werden müssen oder wenn sie im Anschluss sogar durch Menschen lesbar sein müssen. In solchen Fällen können die Inhalte durch WYSIWYG für Menschen grafisch aufbereitet werden.
Eine andere Möglichkeit ist die direkte Darstellung in einer einfachen Auszeichnungssprache. Wird der Inhalt direkt in einer einfachen Auszeichnungssprache erstellt, hat das den Vorteil, dass die Texte, um gelesen oder geschrieben zu werden, nicht mehr bearbeitet werden müssen. Das wäre bei WYSIWYG hingegen der Fall. Im Gegensatz zu den klassischen Auszeichnungssprachen nutzt ein vereinfachtes Markup keine Tags, die ausführlich sind. Hier werden lediglich wenige und ansonsten nicht genutzte Zeichenfolgen eingesetzt. So kann die Lesbarkeit erhöht werden.
Bei einer einfachen Markup wird nach Möglichkeit kein zwingender Abschluss erzeugt. Das ist beispielsweise bei den SGML-Elementen der Fall. Hier werden schließende Tags verwendet. Bei einer einfachen Markup werden jedoch als Trennzeichen Zeilenumbrüche oder auch Leerzeichen genutzt. Wird ein Sternchen * an den Anfang von einer Zeile gesetzt, so ist dies in der einfachen Markup ein Listenpunkt. Dieser Listenpunkt wird in ein typografisches Aufzählungszeichen umgewandelt, wenn die Markup kompiliert wird.
Im Vergleich zu den nativen HTML-Texten ist die Markup-Schreibweise kürzer. Jedoch ist die Darstellung durch diese Methode uneindeutig. Das Sternchen wird unter anderem zur Kennzeichnung von Fußnoten genutzt. Das kann dazu führen, dass die beiden Funktionen miteinander kollidieren. Durch die anderen Funktionen in der vereinfachten Markup werden Fehler verursacht. So wird in mancher vereinfachten Markup das Sternchen genutzt, um fett geschriebene Texte zu kennzeichnen. Wird das Sternchen zur Fettschreibung am Zeilenanfang genutzt, kollidiert das mit der Darstellungsweise für Listeneinträge.
Eine vereinfachte Markup kann jedoch nicht nur zur rein logischen Auszeichnung genutzt werden. Neben den Überschriften und den Schriftauszeichnungen wie den Fettsetzungen können durch die Markup weitere Funktionen übernommen werden. Dazu gehören die Hyperlinks aber auch die Tags, die als zusätzliche Auszeichnungsmöglichkeiten von Datenbeständen genutzt werden. Die Datenbestände werden durch die Tags mit zusätzlichen Informationen versehen oder einfach kategorisiert. Es können aber auch Teile von anderen Dokumenten durch Transklusionen eingeschlossen werden. Das geschieht durch einen Verweis.
In Systemen, die rein textbasiert waren, wie es bei Readme oder bei E-Mails der Fall ist, wurden die vereinfachten Markups schon immer genutzt, um Hervorhebungen darzustellen. In der Regel wurden diese Hervorhebungen für Fett- und Kursivsetzungen eingesetzt. Meist kam es zur Entwicklung einer Markup durch die Anwendung von unterschiedlichen Programmen. Daher gibt es wenig einheitliche oder standardisierte Lösungen. Jedoch ähneln sich die Funktionen häufig. Daher gibt es den Wikitext, damit in den verschiedenen Wikis zusammengearbeitet werden kann. Hier gibt es aber auch Versuche der Standardisierung durch Creole.
In den meisten Foren kam es zu einer Etablierung der BBCodes. Der Org-mode hat sich in Emacs durchgesetzt. Strukturierte Dokumentationen werden in Computerprogrammen durch POD, Plain Old Documentation oder Javadoc eingebettet. Bei Textile, reStructuredText oder Markdown wird sich auf andere Vorgehensweisen konzentriert.
Die PML: Procedural Markup Language
Bei den PMLs handelt es sich um darstellende Seitenbeschreibungssprachen. Hierzu zählt TeX als Textsatzsystem, aber auch die Makropakete von TeX, LaTeX und ConTeXt. Auch hierbei handelt es sich um Markups. Bei den Procedural Markup Languages werden die Eigenschaften von den Beschreibungssprachen aber auch die von den prozeduralen Auszeichnungssprachen genutzt. Dieses Vorgehen ist auch bei PDF oder PostScript, den Seitenbeschreibungssprachen der Fall.
Die Abgrenzung zu den Programmiersprachen
Eine Markup ist nur sehr schwierig von einer Programmiersprache abgrenzbar. Häufig werden auch die Eigenschaften der Programmiersprachen genutzt. Das ist beispielsweise bei PostScript der Fall. Soll beispielsweise durch PostScript eine Lissajous-Figur dargestellt werden, müssen nicht sämtliche Kanten von der Grafik in Segmentlisten stehen. Diese werden auch durch einen programmierten Algorithmus während der Laufzeit erzeugt. Hier ist jedoch die Auszeichnung der Daten das Ziel. Dieses wird jedoch möglicherweise erst während der Laufzeit dynamisch erzeugt.
Daher ist die Abgrenzung zu den Programmiersprachen hier fließend, da alle Auszeichnungssprachen über eine Syntax, eine Semantik und auch über eine Grammatik verfügen. Das stellt jedoch noch keine hinreichende Bedingung für die Definition von Programmiersprachen dar. Der Unterschied zwischen einer Programmiersprache und einer Markup stellt sich durch die Einbindung von Elementen in die Programmiersprache wie die Auswahl, die Iteration oder die Sequenz dar.