Transklusion

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
B ist in Dokument A transkludiert worden.

Eine Transklusion (engl. transclusion) ist die Fähigkeit in meist Hypertext-Systemen, andere Dokumente oder Abschnitte daraus in sich einzuschließen (auch „einzubinden“). So können Textbausteine an unterschiedlichen Stellen mehrfach genutzt werden. Wird der transkludierte Text aktualisiert, aktualisiert sich automatisch auch die Transklusion in allen Seiten, in die diese eingebunden ist.

Im Gegensatz zu einem Hyperlink wird auf ein anderes Dokument nicht nur verwiesen. Vielmehr wird – und mehr als bei einem Zitat („Ausschnitt“) – das ganze Dokument eingefügt.

Transklusionen werden in vielen Wikis und dem Textsatzsystem TeX eingesetzt. Ist etwa der Inhalt der TeX-Quelldatei Werk.tex eine Zeichenkette der Gestalt

Anfang\input LiteraturSchluss

und die Zeichenkette ‹Literatur› der Inhalt von Literatur.tex, so wird Werk.tex mit demselben Ergebnis verarbeitet wie eine Datei, deren Inhalt die Zeichenkette

Anfang›‹Literatur› ‹Schluss

ist. LaTeX-Varianten von \input werden unten beschrieben.

Die Funktion ist sehr ähnlich zu einem Include in serverseitigen Skriptsprachen wie ASP, JSP, PHP (mehr dazu unten) oder Server Side Includes und ähnlich zu einem HTML-Frameset.

Eine Transklusion ist zu unterscheiden von einer Immersion, bei der die Grenzen zwischen zwei Dokumenten aufgelöst werden.

Durch eine Transklusion könnte beispielsweise ein Artikel über ein Land eine Tabelle oder einen Absatz einschließen, der die landwirtschaftlichen Exporte dieses Landes aus einem anderen Artikel über Landwirtschaft beschreibt. Statt die eingeschlossenen Daten zu duplizieren und an zwei Stellen zu speichern, erlaubt eine Transklusion, sie an einer Stelle zentral zu speichern und zu verwalten; eine korrigierte oder aktualisierte Fassung erscheint dann in allen Dokumenten, die die Daten transkludieren. Der Mechanismus ähnelt funktional also auch dem Normalisieren bei der Modellierung von relationalen Datenbanken.

Entwicklung[Bearbeiten]

Ted Nelsons Xanadu-Projekt enthält Transklusionen. Ted Nelson ging in seinem ursprünglichen Entwurf für Hypertext, den er in seinem Buch Literary Machines vorstellte, davon aus, dass Leser eines Dokuments den oder die Autor(en) automatisch über Micropayment vergüten würden, unabhängig davon, aus wie vielen Fragmenten es zusammengesetzt wäre. Da dieses Vergütungsmodell in heutigen Hypertextsystemen wie dem World Wide Web nicht vorgesehen ist, stellt die Transklusion ein grundlegendes urheberrechtliches Problem dar.

Atomisierung[Bearbeiten]

Die Idee der Transklusion impliziert, dass die Teile eines Textes atomisiert geschrieben werden können, damit der Inhalt eines Teils nicht dem Inhalt eines anderen Teiles widerspricht. Beispielsweise sind die folgenden Formulierungen, die oft in linearen Texten gefunden werden können, in einem atomisierten Text nicht möglich:

  • Eine Erklärung folgt weiter unten.
  • Eine Erklärung finden sie im vorausgehenden Abschnitt.
  • Wie früher erwähnt wurde …
  • Wie wir schon erwähnt haben …
  • Wir werden uns später mit dieser Frage im Detail beschäftigen.

Da man nicht weiß, wo das atomisierte Textfragment erscheinen wird, kann man nicht auf Teile außerhalb des Fragments verweisen.

Beispielbefehle in LaTeX und PHP [Bearbeiten]

Mit dem TeX-Format LaTeX verwendet man statt „\input Literatur “ im TeX-Beispiel oben eher

  1. \input{Literatur}“ für zusätzliche Protokollfunktionalität (Listeneintrag) und veränderte Fehlerbehandlung;
  2. \include{Literatur}“, um in der Bearbeitungsphase den Inhalt von Literatur.tex nur einzufügen, wenn der Nutzer das in der LaTeX-Präambel eingestellt hat.
  3. \InputIfFileExists{Literatur}{vor-einlesen}{andernfalls}“ ermöglicht Variationen von „\input{Literatur}“;
  4. der interne (Autoren nicht zugängliche) Befehl \@input protokolliert lediglich Fehlen der Zieldatei, ohne wie \input eine Fehlermeldung zu werfen.
  5. LaTeX bietet weitere Transklusionsbefehle wie \documentclass und \usepackage/\RequirePackage, um den Inhalt reiner Wertzuweisungsdateien (Formatierungseinstellungen – „Paketdateien“) wie article.cls oder doc.sty mit Zugang zu internen Befehlen, einer Versionskontrolle, Fehlerbehandlung, Protokollfunktion und selektiver Einbindung (Paketoptionen wählen nur Teile der Zieldatei zur Einbindung aus) sowie nicht mehrfach einzufügen.

Der PHP-Befehl „include“ entspricht recht genau dem internen LaTeX-Befehl „\@input“, der PHP-Befehl „require“ könnte dann wegen der zusätzlichen Fehlermeldung sowohl mit dem LaTeX-Befehl „\input“ als auch mit dem Befehl „\input“ des TeX-Formats plain TeX verglichen werden, und der PHP-Befehl „require_once“ ähnelt LaTeXs Paketladebefehlen („\RequirePackage“ etc.) hinsichtlich des Vermeidens mehrfacher Einbindung.