|
Inhalt:
|
Schnittstelle
zwischen SGML und DTP
Seit über 10 Jahren geistert nun schon das Schlagwort SGML durch die Druckindustrie und das Verlagswesen. Trotzdem oder gerade deswegen sind sich auch heute noch viele unsicher, was darunter zu verstehen ist bzw. wofür man SGML überhaupt braucht. Gleichzeitig wird aber immer häufiger von außen die Anforderung an die Dienstleister herangetragen, sich mit SGML auseinanderzusetzen. An dieser Stelle kommt nun das Programm Adobe FrameMaker + SGML ins Spiel. Es verbindet unter einer Standardoberfläche DTP-Funktionalitäten mit SGML-Fähigkeiten. Vorneweg aber noch einmal ganz kurz ein paar grundsätzliche Punkte zum Thema SGML. Die reine Übersetzung des Begriffs SGML, Standard Generalized Markup Language, bringt auf den ersten Blick keine neuen Erkenntnisse. SGML ist ein Standard (ISO-Standard 8879 seit 1986, DIN EN 28 879 seit 1991), der mit Hilfe einer allgemeinen Sprache eine Auszeichnung von Dokumentenstrukturen und -inhalten vornimmt. Hierbei definiert man mittels SGML aber nur die Beschreibung des formalen Aufbaues eines bestimmten Dokumententyps, z.B. eines Briefes, einer Gesetzesammlung oder einer Bedienungsanleitung. Die einzelnen Bausteine dieser Struktur werden Elemente genannt. Ein solcher Baustein kann z.B. das Element Überschrift oder das Element Tabelle sein. Diese Elemente wiederum werden nun immer weiter differenziert. D.h. das Element Überschrift besteht aus einem Element Kapitelüberschrift und einem Element Zwischenüberschrift. Das Element Tabelle besteht aus einem Tabellenkopf und einem Tabellenrumpf, die wiederum jeweils in einzelne Reihen und Zellen unterteilt werden. Man kann sich das ganze auch als Baumstruktur vorstellen, deren Äste
sich immer weiter verzweigen.
|
![]() |
| Strukturansicht
einer DTD in einem grafisch-unterstützen DTD-Werkzeug (in diesem Fall
Near & Far, Microstar Software LTD) ...
|
![]() |
| ...
und als ASCII-File
Neben der Differenzierung der Elemente werden gleichzeitig auch die Abhängigkeiten der einzelnen Elemente zueinander definiert. So kann man z.B. festlegen, daß in einem Absatz nur eine Grafik erscheinen darf. Es sind aber gleichzeitig mehrere Tabellen oder Listen möglich. Zusätzlich kann man zu einzelnen Elementen auch Attribute definieren, die das jeweilige Element genauer beschreiben. Ein Element Listeneintrag könnte z.B. die Attribute Numeriert oder Punktiert haben, die dann die Darstellung des Listeneintrages steuern. Diese ganzen Informationen, d.h. die Elemente, ihre Beziehungen zueinander und ihre jeweiligen Attribute, werden in einer Document Type Definition (DTD) abgelegt. Was die ganze Sache so schwer nachvollziehbar macht, ist die Tatsache, daß in dieser DTD noch kein einziges Wort des eigentlichen Inhaltes eines SGML-Dokumentes erfaßt wurde. Außerdem gibt es noch keinerlei Layout-Informationen. Vielmehr bildet die DTD die Grundlage für alle weiteren Bearbeitungsschritte wie der Eingabe und der Formatierung von Inhalten, um ein SGML-strukturiertes Dokument zu erhalten. Außerdem wird sie als Referenzmodell für die Prüfung der im SGML-Dokument verwendeten Elemente herangezogen. Der Unterschied zwischen einer DTD und einem SGML-Dokument bzw. einem
strukturiertem Dokument besteht, wie bereits angedeutet, in dem Inhalt,
der im SGML-Dokument enthalten ist. Über entsprechende Werkzeuge,
z.B. FrameMaker + SGML, greift man nun auf die in der DTD vordefinierten
Strukturen zu und fügt die entsprechenden Inhalte ein.
|
![]() |
| SGML-Dokument
in einem WYSIWYG-Editor mit eingeblendeten Elementgrenzen ...
Sichert man ein solches Dokument anschließend als SGML-Dokument,
erhält man ein ASCII-basierte Datei, die, sind die entsprechenden
Strukturregeln bzw. die DTD bekannt, jederzeit wieder interpretiert werden
kann.
|
![]() |
| ...und
als originäres SGML-Dokument
Bleibt immer noch die Frage, wozu dieser ganze Aufwand betrieben wird? SGML-Dokumente sind völlig plattform- und applikationsneutral, da die Informationen in einer dokumentierten Syntax im ASCII-Format (s. oben) abgelegt werden. Dies bedeutet, daß z.B. eine als SGML-Dokument abgelegte Bedienungsanleitung theoretisch auch in 10 oder 20 Jahren noch verwendet werden kann, was man von vielen proprietären bzw. herstellerspezifischen Programmformaten leider nicht behaupten kann. Dies ist nicht zuletzt einer der Gründe für den massiven Einsatz von SGML in der Luft- und Raumfahrtindustrie bzw. dem Automobilbau. Darüber hinaus wird durch die SGML-Strukturierung sichergestellt, daß alle Dokumente formal gleich aufgebaut werden. Die strukturelle Integrität solcher Dokumente kann über sogenannte Parser (Syntaxanalysierer) sichergestellt werden, Volltextrecherchen sind möglich, außerdem wird die in der Branche so oft zitierte Medienneutralität gewährleistet. Diese Punkte sind mitentscheidend dafür, daß z.B. Normen für DIN und ISO, aber auch Sitzungsprotokolle des Europäischen Parlaments oder das bekannte ,Oxford English Dictonary" bereits als SGML-strukturierte Dokumente erstellt und verwaltet werden. An dieser Stelle kommt nun FrameMaker + SGML zum Einsatz, der auf diese Struktur bzw. DTD aufsetzt und das Einfügen von Inhalten in solche vordefinierte Strukturen erlaubt. Das ansprechende an dieser Lösung ist die nahtlose Integration der SGML-Funktionalitäten in das Frontend des ,normalen" FrameMakers. Man sieht, von dem Startbildschirm und drei Buttons am Dokumentenrand abgesehen, erst einmal gar nicht, daß man es mit einem eigenen Programm zu tun hat. Es ist natürlich auch möglich, mit FrameMaker + SGML normale, unstrukturierte FrameMaker-Dokumente zu erstellen bzw. zu bearbeiten und auszugeben, da der volle FrameMaker-Funktionsumfang wie Buchfunktion, Listen- und Verzeichnisgenerierung, Tabellenfunktion, Gleichungseditor, HTML- und PDF-Ausgabe, etc. enthalten ist. Vor das strukturierte Arbeiten mit FrameMaker + SGML haben die Entwickler von Adobe allerdings einen gewissen Aufwand gestellt. Die DTD reicht nämlich als reine Arbeitsgrundlage nicht aus. Das Problem hierbei ist, daß die DTD neben den Strukturdefinitionen ja keinerlei Informationen über die Formatierung und Darstellung der einzelnen in ihr enthaltenen Elemente enthält. Genau hierin liegt aber die Aufgabe von FrameMaker + SGML, die Verbindung von Struktur und Layout. Daraus resultiert, daß eine spezielle Umsetzung der Strukturinformation in ein FrameMaker-spezifisches Format erfolgen muß. Dieses neue Dokument nennt man Element Definition Document (EDD). Hierbei kann die EDD durch Konvertierung mittels sogenannter Read-/Write-Rules, die den SGML-Import und Export steuern, aus einer bestehenden DTD erzeugt werden. Alternativ ist auch die komplette, durch entsprechende Hilfsmittel geführte Neuerstellung einer EDD möglich. Diese Tatsache ist sehr wichtig, denn sie bedeutet, daß ein strukturiertes Arbeiten mit FrameMaker + SGML auch möglich ist, ohne daß eine DTD vorhanden sein muß. Es bedeutet auch, daß man theoretisch ohne die Berücksichtigung jeglicher SGML-Regeln arbeiten kann. Der Aufbau des EDD entspricht, wie schon beschrieben, im wesentlichen
dem der DTD. D.h. es werden Elemente definiert und in den allgemeinen Regeln
werden die zugehörigen bzw. untergeordneten Elemente festgelegt. Sofern
vorhanden, werde außerdem die Attribute mit ihren möglichen
Werten aufgelistet. Hinzu kommen nun die Kontext-Regeln, die bestimmte
Abhängigkeiten definieren, z.B. ob es eine Überschrift der ersten,
zweiten oder dritten Ebene ist. Dementsprechend wird dann z.B. die Schriftart
jeweils um zwei Punkte verkleinert oder der Einzug erhöht. Möglich
ist aber auch der Aufruf eines bestimmten Zeichen- oder Absatzformates
für die entsprechende Auszeichnung.
|
![]() |
| Ein
Element in der EDD mit Kontextregeln
Die Einbindung der Strukturinformationen in ein FrameMaker-Dokument erfolgt über den Import der EDD. Hierfür muß ein FrameMaker-Dokument vorliegen bzw. angelegt werden, in dem die in der EDD aufgerufenen Absatz- und Zeichenformate vorhanden sind. Der Import selber geschieht, wie bei einem Text oder einer Grafik, über den normalen Import-Befehl. Soll dieser EDD-Import SGML-konform sein, so muß vorher noch eine entsprechende SGML-Applikation zugewiesen werden. Sie enthält Verweise auf die zu verwendende Read-/Write-Rule, die Template-Datei, die DTD und sonstige benötigte Steuerdateien wie SGML-Deklarationen. Über den Elementkatalog werden nun die an der jeweiligen Dokumentenstelle gültigen Elemente angezeigt.
Über die Symbolik des Elementkataloges kann man bereits bei der Erstellung eines strukturierten Dokumentes sicherstellen, daß korrekt, d.h. strukturkonform gearbeitet wird. Um ein Element einzufügen, braucht man es im Elementkatalog nur noch anzuklicken und den Vorgang mit dem Button Einfügen abzuschließen. Ist das Element an dieser Stelle eindeutig, reicht sogar ein Doppelklick auf den Elementeintrag. Danach fügt man den entsprechenden Inhalt, z.B. Text oder Grafik, in das Element ein. Es ist auch möglich, bestehenden Text in ein Element einzugliedern und somit z.B. ein spezielles, in der EDD hinterlegtes Format aufzurufen. Dies wird u.a. für Auszeichnungen benötigt, die in einem übergeordneten Element stehen sollen. Eine häufige Problemstellung ist auch, daß man bereits fertig erfaßte aber unstrukturierte Dokumente hat. Hier bietet FrameMaker + SGML die Möglichkeit, basierend auf den im Dokument verwendeten Absatz- und Zeichenformaten, eine Strukturierung vorzunehmen. Über eine Konvertierungstabelle wird dabei festgelegt, welches Absatz- oder Zeichenformat zu welcher Elementzuweisung werden soll. Voraussetzung hierfür ist natürlich ein konsequenter Einsatz dieser Formate im Ursprungsdokument. Abschließend muß dann noch die entsprechende EDD importiert werden und, in Abhängigkeit von der Qualität des Ursprungsdokumentes, die restlichen Strukturierungen manuell eingepflegt werden. Eines der mächtigsten Werkzeuge beim Arbeiten mit FrameMaker +
SGML ist die Strukturansicht. Diese baumartige Darstellung visualisiert
sehr übersichtlich die im Dokument vorhandenen Strukturelemente und
ihrer Inhalte. Außerdem bietet sie die Möglichkeit der visuellen
Strukturkontrolle. Gleichzeitig erlaubt sie das schnelle Verschieben, Kopieren
und Löschen von ganzen Strukturzweigen.
|
![]() |
| Neben
Inhalten und Attributen von Elementen werden auch Fehler in der Strukturansicht
angezeigt (hier rot markiert)
Das Plus- bzw. Minus-Symbol vor oder nach dem Elementnamen signalisieren weitere Unterelemente oder Attribute, die ein- oder ausgeblendet werden können. Klickt man einen Eintrag im FrameMaker-Dokument an, so wird automatisch die entsprechende Stelle in der Strukturansicht markiert und umgekehrt. Dadurch kann man sehr einfach auch durch umfangreiche Dokumente navigieren. Verschiebt man in der Strukturansicht ein Element, so prüft FrameMaker + SGML ständig, ob das Element gemäß der EDD an der Stelle gültig ist, an der es gerade eingefügt werden soll und signalisiert die korrekte Position durch ein Häkchen. Wird eine Stelle als Ziel ausgewählt, die völlig regelwidrig ist, läßt das Programm diese Verschiebung erst gar nicht zu. Ein weiteres wichtiges Hilfsmittel bei der Arbeit mit strukturierten
Dokumenten ist die Anzeige der Elementgrenzen. Auf Grund der Verschachtelung
von Elementen kann es nämlich vorkommen, daß man sich z.B. noch
in einem übergeordneten Element befindet und deswegen ein bestimmtes
Element nicht einfügen kann, das an dieser Stelle eigentlich gültig
sein sollte. Oftmals ist es nur die Frage von Millimetern, ob man noch
das eine oder schon das andere Element markiert hat. Blendet man aber die
Elementgrenzen ein, sieht man sehr schnell, auf welcher Elementebene man
sich befindet. FrameMaker + SGML bietet zwei Formen der Anzeige. Bei der
einen werden nur die eigentlichen Grenzen des jeweiligen Elementes mit
Klammern angezeigt.
|
![]() |
| Anzeige
der Elementgrenzen als Klammern...
Die andere Möglichkeit ist die Darstellung als sogenannter Tag
oder Marke. Hierbei wird nicht nur die eigentliche Grenze des Elements
dargestellt (Pfeil nach rechts Beginn, Pfeil nach links Ende des Elements),
sondern auch der Name des jeweiligen Elementes angezeigt.
|
![]() |
| ...und
als Tags mit Elementnamen
Zu beachten ist bei beiden Darstellungsarten, daß sie den Umbruch des Dokumentes beeinflussen. Außerdem werden sie ausgedruckt, wobei allerdings eine Warnung erscheint, wenn man mit eingeschalteten Elementgrenzen drucken will. Auch das Zuweisen von Attributen wird natürlich in FrameMaker +
SGML unterstützt. Der entsprechende Dialog erlaubt hierbei sowohl
die Zuordnung des Attributes selbst als auch die Festlegung seines Attributwertes
als freie Texteingabe oder per Pull-Down-Menü. So kann z.B. das Element
Liste ein Attribut namens Typ haben. Die zugehörigen Attributwerte
könnten dann Numeriert oder Punktiert heißen.
|
![]() |