ein generischer Ansatz zur Layout-Spezifikation - Lehr- und ...

ein generischer Ansatz zur Layout-Spezifikation - Lehr- und ... ein generischer Ansatz zur Layout-Spezifikation - Lehr- und ...

13.07.2015 Aufrufe

3. Präsentations-Erzeugungsprozeß3.4. StyleStyle ist der dritte Abschnitt des Präsentations-Erzeugungsprozesses. Die Daten wurden im vorangegangenenAbschnitt in einen Layoutbaum transformiert, dieser wurde weiter aufbereitet und mit Informationenüber räumlichen Beziehungen seiner Elemente angereichert. Eventuell wurden spezielleLayout-Objekte markiert.Über einen Templatemechanismus können nun einzelne Inhalte der Präsentation, die mit dem Layoutbaumbeschrieben wurden, in Templates eingefügt werden. Die Templates sind bereits in der Zielspracheformuliert, mittels Platzhaltern werden die einzufügenden Inhalte selektiert.In weiteren Transformationen können Style-Informationen hinzugefügt werden.Zuletzt werden generische Ausdrücke aufgelöst und der Layoutbaum serialisiert. Woraus die endgültigePräsentation entsteht.3.4.1. TemplatemechanismusDie Idee, die hinter dem Templatemechanismus steckt, ist folgende: Komplexe Dokumentdefinitionensollen direkt in der jeweiligen Zielsprache implementiert, getestet und vor allem nachträglich leichtangepaßt werden können.Templates sind Präsentationen in den jeweiligen Zielsprachen, die jedoch anstatt von Daten Platzhalterenthalten, die die Schnittstelle zu den Inhalten des Layoutbaums bilden.Warum besteht überhaupt die Notwendigkeit, zur Erstellung von Präsentationen zusätzlich noch einenTemplatemechanismus einzuführen? Zur Erzeugung von Präsentationen wurde ja bereits die KombinationLayout-Klassen, Layoutbeschreibungsbaum und Trenntexte vorgestellt, die prinzipiell schonausreichen würde.Zur Motivation sei folgendes Beispiel gegeben: Möchte man einen aufwendigen tabellarischen Stundenplanausgeben, so reicht es nicht, die entsprechenden Werte aus den Daten einfach in ein entsprechendesTabellenkonstrukt einzufügen und durch passende Trenntexte voneinander abzutrennen.Vielleicht sollen einzelne Spalten eine bestimmte Breite bekommen, die Tabelle gestaucht werden(damit der Stundenplan gerade noch auf eine Seite paßt) oder einmalig ein bestimmter Hinweistexteingeblendet werden. Desweiteren sind in einigen Zielsprachen die Einstellungen für manche Layoutkonstrukterecht komplex, wie z.B. Tabellen in LATEX, so daß die Layoutobjekte nur umständlich alsgenerische Ausdrücke formuliert werden können.Kurz: Es besteht ein Bedarf, Präsentationen vorab – also ohne Daten – testen zu können und vor allemkomplizierte Einstellungen (wie Datei-Header, Tabellendefinitionen usw.) an ihrem Ort der Verwendungdefinieren zu können und nicht in den viel allgemeiner gehaltenen Konstruktionsregeln für dasLayout, wo sich eine kleine Änderung der Einstellungen auf sämtliche Präsentationen auswirkt undnicht nur auf die, in der z.B. eine Tabelle gerade mal etwas kleiner dargestellt werden soll.Der Templatemechanismus ist eine pragmatische Lösung für diesen Bedarf.3.4.1.1. FunktionsweiseDie Vorverarbeitung eines Templates läuft folgendermaßen ab: Das Template wird geparst und in einenTemplate-Baum transformiert. Der Template-Baum entspricht im Grunde einem Layoutbeschrei-36

article¢documentclass[10pt]¡document¢begin¡tabular¢end¡document¢end¡3.4. Stylebungsbaum, nur daß er keine Strukturierungsknoten besitzt, also von der Tiefe 1 ist, und daß er anstattvon Selektoren für die Daten nun Seletoren für Inhalte besitzt.In einem weiteren Schritt werden der Template-Baum und der bisherige Layoutbaum in einen weiterenLayoutbaum transformiert. Die Selektoren für die Inhalte werden dabei durch die entsprechendenInhalte ersetzt. Das Beispiel in Abbildung 3.13 veranschaulicht diese Vorgehensweise.Template (L A TEX)LayoutbaumPräsentation@[OBJECT(Überschrift)]¢section¡tabular¢£¡ |l@¡ hspace¡ 2em¢¤¢ l|¢begin¡hline@[OBJECT(Veranstaltungen)]Überschrift(TEXT)"Veranstaltungen"Veranstaltungen”” ”” ””Veranstaltung”@[NEWROW]” ”@[NEWCOL]” ”@[ENDROW]”. . .Beschreibung”” ”@[NEWLINE]” ””Template-BaumTemplateBenennung”” ” ” ””Titel(TEXT)"Informatik I"Rumpf”” ”, ” ””Block1(TEXT)” docum...begin¡ ...section¡ ”Object1(OBJECT)ÜberschriftBlock2(TEXT)”¢...begin¡hline”Object2(OBJECT)VeranstaltungenBlock3(TEXT)” end¡ t......ument¢ ”Dauer(TEXT)”” ”” ”-stündig”"4"Sitzungen”” ”, ” ””. . . . . .LayoutbaumPräsentationBlock1(TEXT)” docum...begin¡ ...section¡ ”Überschrift(TEXT)"Veranstaltungen"Block2(TEXT)”¢...begin¡hline”Veranstaltungen”” ”” ””Veranstaltung”@[NEWROW]” ”@[NEWCOL]” ”@[ENDROW]”Beschreibung”” ”@[NEWLINE]” ””. . .Block3(TEXT)” end¡ t......ument¢ ”Benennung”” ” ” ””Titel(TEXT)"Informatik I"Dauer(TEXT)”” ”” ”-stündig”"4"Rumpf”” ”, ” ””Sitzungen”” ”, ” ””. . . . . .ABBILDUNG 3.13.: Templatemechanismus3.4.1.2. Auflösung von Objekt-ReferenzenIm vorangegangenen Abschnitt wurde bereits angesprochen, daß die Templates Funktionen enthalten,die die Schnittstelle zu den Inhalten des Layoutbaums bilden. Wie werden diese Inhalte nun referenziert?Dies geschieht über eine eindeutige ID, die jeder Inhalt besitzen kann (diese ID entspricht inder vorliegenden Arbeit dem XML-Attribut ID, das bereits für die Verweise in den Daten verwendetwurde).Diese ID wurde dem Inhalt entweder bereits bei der Datenerfassung hinzugefügt (z.B. eine bestimm-37

3. Präsentations-Erzeugungsprozeß3.4. StyleStyle ist der dritte Abschnitt des Präsentations-Erzeugungsprozesses. Die Daten wurden im vorangegangenenAbschnitt in <strong>ein</strong>en <strong>Layout</strong>baum transformiert, dieser wurde weiter aufbereitet <strong>und</strong> mit Informationenüber räumlichen Beziehungen s<strong>ein</strong>er Elemente angereichert. Eventuell wurden spezielle<strong>Layout</strong>-Objekte markiert.Über <strong>ein</strong>en Templatemechanismus können nun <strong>ein</strong>zelne Inhalte der Präsentation, die mit dem <strong>Layout</strong>baumbeschrieben wurden, in Templates <strong>ein</strong>gefügt werden. Die Templates sind bereits in der Zielspracheformuliert, mittels Platzhaltern werden die <strong>ein</strong>zufügenden Inhalte selektiert.In weiteren Transformationen können Style-Informationen hinzugefügt werden.Zuletzt werden generische Ausdrücke aufgelöst <strong>und</strong> der <strong>Layout</strong>baum serialisiert. Woraus die endgültigePräsentation entsteht.3.4.1. TemplatemechanismusDie Idee, die hinter dem Templatemechanismus steckt, ist folgende: Komplexe Dokumentdefinitionensollen direkt in der jeweiligen Zielsprache implementiert, getestet <strong>und</strong> vor allem nachträglich leichtangepaßt werden können.Templates sind Präsentationen in den jeweiligen Zielsprachen, die jedoch anstatt von Daten Platzhalterenthalten, die die Schnittstelle zu den Inhalten des <strong>Layout</strong>baums bilden.Warum besteht überhaupt die Notwendigkeit, <strong>zur</strong> Erstellung von Präsentationen zusätzlich noch <strong>ein</strong>enTemplatemechanismus <strong>ein</strong>zuführen? Zur Erzeugung von Präsentationen wurde ja bereits die Kombination<strong>Layout</strong>-Klassen, <strong>Layout</strong>beschreibungsbaum <strong>und</strong> Trenntexte vorgestellt, die prinzipiell schonausreichen würde.Zur Motivation sei folgendes Beispiel gegeben: Möchte man <strong>ein</strong>en aufwendigen tabellarischen St<strong>und</strong>enplanausgeben, so reicht es nicht, die entsprechenden Werte aus den Daten <strong>ein</strong>fach in <strong>ein</strong> entsprechendesTabellenkonstrukt <strong>ein</strong>zufügen <strong>und</strong> durch passende Trenntexte von<strong>ein</strong>ander abzutrennen.Vielleicht sollen <strong>ein</strong>zelne Spalten <strong>ein</strong>e bestimmte Breite bekommen, die Tabelle gestaucht werden(damit der St<strong>und</strong>enplan gerade noch auf <strong>ein</strong>e Seite paßt) oder <strong>ein</strong>malig <strong>ein</strong> bestimmter Hinweistext<strong>ein</strong>geblendet werden. Desweiteren sind in <strong>ein</strong>igen Zielsprachen die Einstellungen für manche <strong>Layout</strong>konstrukterecht komplex, wie z.B. Tabellen in LATEX, so daß die <strong>Layout</strong>objekte nur umständlich alsgenerische Ausdrücke formuliert werden können.Kurz: Es besteht <strong>ein</strong> Bedarf, Präsentationen vorab – also ohne Daten – testen zu können <strong>und</strong> vor allemkomplizierte Einstellungen (wie Datei-Header, Tabellendefinitionen usw.) an ihrem Ort der Verwendungdefinieren zu können <strong>und</strong> nicht in den viel allgem<strong>ein</strong>er gehaltenen Konstruktionsregeln für das<strong>Layout</strong>, wo sich <strong>ein</strong>e kl<strong>ein</strong>e Änderung der Einstellungen auf sämtliche Präsentationen auswirkt <strong>und</strong>nicht nur auf die, in der z.B. <strong>ein</strong>e Tabelle gerade mal etwas kl<strong>ein</strong>er dargestellt werden soll.Der Templatemechanismus ist <strong>ein</strong>e pragmatische Lösung für diesen Bedarf.3.4.1.1. FunktionsweiseDie Vorverarbeitung <strong>ein</strong>es Templates läuft folgendermaßen ab: Das Template wird geparst <strong>und</strong> in <strong>ein</strong>enTemplate-Baum transformiert. Der Template-Baum entspricht im Gr<strong>und</strong>e <strong>ein</strong>em <strong>Layout</strong>beschrei-36

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!