Wikipedia · einfach zusammengefasst · Stand
Auszeichnungssprache
Eine Auszeichnungssprache (englisch markup language, abgekürzt ML) ist eine maschinenlesbare Sprache für die Gliederung und Formatierung von Texten und …
Inhalt6 Abschnitte
Kernidee und Aufbau
Eine Auszeichnungssprache, englisch markup language (ML), ist eine maschinenlesbare Sprache, mit der Texte und andere Daten gegliedert, beschrieben und formatiert werden. Der bekannteste Vertreter ist HTML, die Kernsprache des World Wide Webs. Auszeichnungssprachen markieren Eigenschaften, Zugehörigkeiten und Darstellungen von Zeichen, Wörtern, Absätzen, Abschnitten oder anderen Daten meist durch Tags. Ein Element besteht aus dem ausgezeichneten Inhalt, den umschließenden Tags und gegebenenfalls zusätzlichen Attributen.
Typische Quelltexte solcher Sprachen werden in einem computerlesbaren Zeichensatz wie ASCII oder UTF-8 geschrieben. Viele Sprachen können auch Sonderzeichen darstellen, etwa über numerische Unicode-Angaben oder benannte Zeichenentitäten; Beispiele sind \mu in LaTeX und µ in HTML für µ. Auszeichnungssprachen dienen nicht nur der sichtbaren Gestaltung, sondern können auch angeben, welche logische Rolle ein Textteil hat, etwa Überschrift, Blockzitat, Hyperlink oder Betonung.
Darstellende und beschreibende Auszeichnung
Eine zentrale Unterscheidung ist die zwischen darstellender und beschreibender Auszeichnung. Darstellende Auszeichnung legt direkt fest, wie etwas aussehen soll, zum Beispiel fett, kursiv, in einer bestimmten Schriftfarbe oder mit bestimmter Ausrichtung. Beschreibende oder deskriptive Auszeichnung beschreibt dagegen die Bedeutung oder Funktion eines Textteils, etwa „Überschrift“, „Titel“, „Abschnittsüberschrift“, „Blockzitat“ oder „Betonung“.
Der Unterschied zeigt sich etwa bei HTML: <b>fett</b> legt eine fette Darstellung nahe, während <strong>wichtig!</strong> semantisch „Wichtigkeit“ ausdrücken soll und in Browsern normalerweise ebenfalls fett dargestellt wird. Ähnlich steht <i> für Kursivdarstellung, während <em> Betonung bedeutet und standardmäßig kursiv erscheint. In LaTeX entspricht \textit einer Darstellungsauszeichnung, während \emph eine semantische Variante ist.
Charles Goldfarb unterschied 1981 zwischen prozeduraler und deskriptiver Auszeichnung. Später wurde „präsentational“ häufig als Synonym oder Oberbegriff für darstellende Auszeichnung verwendet. Für beschreibende Auszeichnung werden auch Begriffe wie strukturell, deklarativ, generisch, logisch, konzeptuell oder semantisch benutzt. Ziel der deskriptiven Auszeichnung ist, den Inhalt und seine Struktur von der konkreten Darstellung zu trennen.
Trennung von Inhalt und Darstellung
Die Trennung von Inhalt und Darstellung bedeutet, dass der eigentliche Dokumenttext mit generischer oder logischer Auszeichnung getrennt von den Regeln gespeichert wird, die seine Darstellung festlegen. Bei HTML kann der Text im body-Element stehen, während Formatierungsregeln im head-Element oder in eingebundenen CSS-Dateien liegen. Bei LaTeX steht der Dokumenttext in der document-Umgebung, während die Dokumentpräambel oder eingebundene .sty- und .cls-Dateien viele Darstellungsregeln festlegen.
Dadurch kann das Aussehen eines Dokuments geändert werden, ohne den Inhalt selbst zu verändern. Ein HTML-Dokument kann etwa durch andere CSS-Regeln statt kursiver Betonung eine Unterstreichung anzeigen. In LaTeX kann ein Paket wie ulem die Darstellung von \emph so verändern, dass Betonung unterstrichen statt kursiv gesetzt wird. Bei XML-Dokumenten kann die Darstellung durch eine andere XSL-Transformation geändert werden.
Diese Trennung hat mehrere Vorteile: Der gleiche Inhalt kann für verschiedene Ausgabeformen genutzt werden, zum Beispiel HTML, PDF oder Screenreader. Darstellungsstile lassen sich mit geringem Aufwand ändern, und bei der Suche oder automatischen Informationsgewinnung kann die Struktur eines Dokuments berücksichtigt werden, etwa indem Treffer in Überschriften stärker gewichtet werden. Außerdem wird vermieden, dass Dateien durch wiederholte präsentationale Angaben aufgebläht werden.
Verarbeitung und Darstellungsstufen
Ein ausgezeichnetes Dokument kann verschiedene Darstellungsstufen durchlaufen. Furuta beschrieb drei Erscheinungsformen: eine abstrakte Darstellung, die mit einem Editor verändert wird; eine physische Darstellung, die durch Formatierung entsteht; und eine Seitendarstellung, die für ein bestimmtes Ausgabegerät erforderlich ist. In der Praxis schreiben Verfasser meist Quelltext mit deskriptiver oder teilweise physischer Auszeichnung. Zeilen- und Seitenumbrüche werden dann oft automatisch durch ein Satzprogramm, einen Browser oder einen Renderer erzeugt.
Seitenbeschreibungssprachen legen die genaue Position von Text und Grafiken auf Ausgabeseiten fest. Beispiele sind PostScript und PDF von Adobe, das ursprüngliche TeX-Ausgabeformat DVI sowie XML Paper Specification von Microsoft. PDF und DVI werden normalerweise nicht direkt in einem Texteditor verfasst, während PostScript prinzipiell als Text geschrieben werden kann. Oft entstehen solche Formate automatisch aus anderen Quellformaten, etwa aus LaTeX über DVI und dvips zu PostScript.
Bei generischer Auszeichnung werden Formatierungsregeln durch Stylesheets oder ähnliche Regeldateien umgesetzt. In HTML bestimmt CSS die Darstellung einzelner Elemente, zum Beispiel body { color: blue; background-color: yellow; } für blauen Text auf gelbem Grund oder em { color: red; } für roten Text in em-Elementen. Im XML-Umfeld können XSL und XSLT generische XML-Sprachen in andere Formate übersetzen, etwa in XSL-FO, das für den Druck weiter in PDF umgewandelt werden kann. In LaTeX übernehmen Makros intern die Übersetzung generischer Befehle in präsentationale oder prozedurale Verarbeitungsschritte.
Vereinfachte Auszeichnungssprachen
Vereinfachte Auszeichnungssprachen werden häufig in Wikis, Blogs und Internetforen verwendet. Sie sollen beim Schreiben in Webformularen den Lesefluss möglichst wenig stören und werden für die Darstellung meist serverseitig in HTML oder XHTML umgewandelt, zum Beispiel durch Pandoc oder in der Wikipedia durch die MediaWiki-Software. Beispiele sind Wikitext, Markdown, Textile, AsciiDoc und reStructuredText.
Typisch ist, dass solche Sprachen mit wenigen Zeichen auskommen: In MediaWiki steht == Abschnitt == für eine Überschrift, * Punkt für einen Listeneintrag und '''fett''' für fetten Text. In Markdown kann ## Abschnitt eine Überschrift, W3C ein Hyperlink und fett oder fett fetter Text sein. Solche Kurzformen sind leichter zu tippen als vollständige HTML-Tags.
Ein Nachteil ist, dass Zeichen mehrere Funktionen haben können. In Markdown kann ein Sternchen zum Beispiel kursiven Text markieren, aber am Zeilenanfang auch einen Listeneintrag beginnen. Neben Überschriften, Listen und Schriftauszeichnungen können vereinfachte Sprachen auch Tags zur Kategorisierung oder Transklusionen unterstützen, also das Einbinden von Teilen anderer Dokumente. Historisch wurden ähnliche Schreibweisen schon in rein textbasierten Systemen wie Readme-Dateien oder E-Mails verwendet. Ward Cunningham entwickelte 1994 eine frühe vereinfachte Auszeichnungssprache mit Umwandlung, die 1995 zusammen mit WikiWikiWeb veröffentlicht wurde. YAML und seine Untermenge JSON werden im Artikel als vereinfachte Auszeichnungssprachen für Datenserialisierung genannt.
Einordnung und Beispiele
Ob eine Auszeichnungssprache als Programmiersprache oder Datenformat gilt, wird unterschiedlich beurteilt. Das W3C erklärte 2001 zu XML, es sei keine Programmiersprache, sondern biete Regeln zum Festlegen von Textformaten zur Strukturierung von Daten, also zum Festlegen von Datenformaten. XML wird deshalb auch für Zwecke eingesetzt, bei denen kein Dokument gesetzt werden soll, etwa für Konfigurationsdateien.
Dateiendungen und MIME-Typen kennzeichnen viele Auszeichnungssprachen als Daten- oder Dokumentformate. Beispiele sind HTML mit .htm oder .html und text/html, PostScript mit .ps und application/postscript, Rich Text Format mit .rtf und text/rtf, TeX/LaTeX mit .tex und text/x-tex sowie XML mit .xml und text/xml. Binäre Dokumentenformate wie .doc, .pdf oder DVI sind keine Auszeichnungssprachen.
Einige Auszeichnungssprachen besitzen Eigenschaften von Programmiersprachen. PostScript, TeX und troff gelten als Turing-vollständig; sie können also beliebig komplexe Algorithmen darstellen und erfüllen damit ein wesentliches Merkmal von Programmiersprachen. Auch XSLT ist Turing-vollständig, obwohl es selbst in einem XML-Datenformat notiert ist und vor allem zur Darstellung oder Umwandlung von XML-Dokumenten dient. XQuery, eine in XML notierte Sprache für XML-Datenbanken, ist ebenfalls Turing-vollständig.