Beispiel: Hierarchische und sequenzielle Inhaltsverzeichnisse
Ein Beispiel SPS zur Verdeutlichung der Verwendung von Inhaltsverzeichnissen finden Sie unter dem Namen Chapters.sps im Ordner (Eigene) Dateien, C:\Documents and Settings\<username>\My Documents\Altova\StyleVision2025\StyleVisionExamples\Tutorial\TOC. Dieses SPS basiert auf einem Schema, das das Content Model eines großen in Kapitel gegliederten Dokuments definiert. Die Schemastruktur wird in der Abbildung unten dargestellt und kann im Fenster "Schema-Struktur" von StyleVision angezeigt werden, wenn Sie Chapters.sps öffnen.
Das Dokumentelement ist helpproject. Es enthält ein untergeordnetes topics Element. Das topics Element kann eine unbegrenzte Anzahl an topic Elementen enthalten, welche ihrerseits wiederum untergeordnete topic Elemente enthalten können. Die erste Ebene der topic Elemente bildet sozusagen die Kapitel des Dokuments, die untergeordneten topic Elemente stehen für Abschnitte, Unterabschnitte usw.
Das SPS enthält drei Inhaltsverzeichnisse, die sich auf der obersten Ebene des Dokuments befinden. Sie haben die folgende Reihenfolge:
1.Kapitelübersicht (Chapters at a Glance): Listet die Namen der einzelnen Kapitel auf (die Kapitel auf der obersten Ebene).
2.Kapitel und ihre Abschnitte (Chapters and Their Sections): Listet die einzelnen Kapitel mit ihren untergeordneten Abschnitten auf (Kapitel auf oberster Ebene plus die Hierarchie der einzelnen Unterkapitel des Kapitels bis hinunter zur untersten Ebene, welche im dazugehörigen XML-Dokument, chapters.xml, das Kapitel auf der dritten Ebene ist)
3.Liste der Bilder (List of Images): Eine flache Liste aller Bilder im Dokument (mit Ausnahme des ersten), aufgelistet nach Dateiname.
SPS Struktur
Bevor wir uns den Inhaltsverzeichnissen im Detail widmen, werfen Sie einen Blick auf die Struktur des Designs. Beachten Sie, dass die Hauptvorlage (mit den grünen $XML Tags) die Inhaltsverzeichnisse enthält. Der Rest der Hauptvorlage definiert über die Anweisung Restlicher Inhalt, dass globale und Standardvorlagen angewendet werden sollen.
Die Inhaltsverzeichnisdefinitionen befinden sich in den globalen Vorlagen für topic und image. In der globalen Vorlage für topic (Abbildung unten) wurde im Element topic eine Inhaltsverzeichnis-Ebene erstellt und innerhalb des Child-Elements header (aber außerhalb des Elements para) wurde eine Inhaltsverzeichnis-Markierung erstellt.
Da das Element topic rekursiv ist, sind die Inhaltsverzeichnis-Ebenen und -Markierungen ebenfalls rekursiv, d.h. es werden bei der ersten Rekursion eine neue hierarchisch untergeordnete Inhaltsverzeichnis-Ebene und eine neue Inhaltsverzeichnis-Markierung erstellt. Dies wird für jedes untergeordnete topic-Element fortgesetzt, wodurch eine hierarchische Struktur von verschachtelten Inhaltsverzeichnis-Ebenen entsteht, von denen jede eine entsprechende Inhaltsverzeichnis-Markierung enthält. Da die Formatierung der Überschrift (der Titel des Kapitels) für die einzelnen Inhaltsverzeichnis-Ebenen unterschiedlich sein soll, haben wir die einzelnen Ebenen in eine separate Verzweigung einer Bedingung mit drei Verzweigungen eingeschlossen. Jede Verzweigung überprüft, auf welcher Inhaltsverzeichnis-Ebene ein Kapitel vorkommt: der ersten, der zweiten oder der dritten.
Beachten Sie, dass innerhalb der Ebenen eine hierarchische Nummerierung (num-lvl) eingefügt wurde. Dies erfolgt durch Rechtsklick an die gewünschte Stelle und Auswahl des Befehls Inhaltsverzeichnis einfügen | Hierarchische Nummerierung. Dadurch wird vor dem Titel jedes einzelnen Kapitels im Textfluss des Dokuments die korrekte hierarchische Nummerierung eingefügt, z.B. 3.1 oder 4.2.3.
Inhaltsverzeichnisbeschreibungen
Im Folgenden finden Sie eine kurze Beschreibung der einzelnen Inhaltsverzeichnisse und die dabei zu beachtenden Punkte.
Kapitelübersicht: Wählen Sie die Inhaltsverzeichnis-Markierung in der globalen Vorlage für topic aus. Beachten Sie in der Seitenleiste "Eigenschaften" (Abbildung unten), dass der Eingabetext laut Definition mit Hilfe eines XPath-Ausdrucks erstellt wird. Wen Sie im Wertefeld der Eigenschaft Text aus auf die Schaltfläche "Bearbeiten" klicken, sehen Sie, dass der XPath-Ausdruck als para definiert wurde. Dies bedeutet, dass der Inhalt des Child-Elements para des Elements header als Text für den Inhaltsverzeichniseintrag verwendet wird (da die Inhaltsverzeichnis-Markierung innerhalb des Elements header eingefügt wurde).
Die Inhaltsverzeichnisvorlage selbst (Abbildung unten) enthält eine Ebenenreferenz und die Inhaltsverzeichnisreferenz innerhalb dieser Ebenenreferenz wurde so konfiguriert, dass sie Inhaltsverzeichnis-Markierungen mit dem Namen MyTOC nur innerhalb des Geltungsbereichs der aktuellen Ebene - also der ersten Ebene - auswählt. Folglich werden Inhaltsverzeichniseinträge nur für Kapitel der ersten Ebene erstellt.
Beachten Sie außerdem, dass die Nummerierung als hierarchische Nummerierung definiert wurde.
Kapitel und ihre Abschnitte: In diesem Inhaltsverzeichnis (Abbildung unten) wurden drei verschachtelte Ebenenreferenzen definiert, von denen jede eine Inhaltsverzeichnisreferenz enthält, für die der Geltungsbereich die aktuelle Ebene ist.
Da jeder Inhaltsverzeichniseintrag sich in einem div Block befindet, können Formatierungseigenschaften (einschließlich Einrückungen) für den Block gesetzt werden.
Liste der Bilder: Bei der Liste der Bilder handelt es sich um eine flache Liste. Überlegen Sie zuerst, innerhalb welcher Ebenen Bilder im instantiierten Dokument vorkommen werden. Das image Element ist ein Subelement des para Elements. Da in topic Elementen Ebenen erstellt wurden, werden image Elemente innerhalb der ersten, zweiten und/oder dritten Ebene des Dokuments vorkommen. Daher müssen keine Ebenen für das image Element erstellt werden.
Aufgrund der Bedingung in der globalen Vorlage für image (siehe Abbildung unten) können (i) das erste Bild (welches Sie in diesem Beispiel sehen) und (ii) die anderen Bilder (die in diesem Beispiel nicht dargestellt werden) separat verarbeitet werden.
Beachten Sie, dass die Inhaltsverzeichnis-Markierung nur innerhalb der zweiten Verzweigung der Bedingung platziert wird; daher werden Bilder, die in der ersten Verzweigung ausgewählt werden, nicht mit einer Markierung versehen. Auch die sequenzielle Nummerierung der Bilder (num-seq), die mit dem Befehl Inhaltsverzeichnis einfügen | Sequenzielle Nummerierung eingefügt wird, beginnt beim zweiten Bild (da das erste Bild in der ersten Verzweigung der Bedingung ausgewählt wird). Beachten Sie außerdem, dass die Nummerierung - wie hier in diesem Beispiel - formatiert werden kann. Um die Formatierung zu sehen, klicken Sie mit der rechten Maustaste auf (num-seq) und wählen Sie den Befehl Format bearbeiten. In dem Dialogfeld, das daraufhin angezeigt wird, sehen Sie, dass die Formatierung auf 01, gesetzt wurde, d.h. es wird eine 0 vor einstelligen Zahlen eingefügt.
In der Inhaltsverzeichnisvorlage für Bilder (Abbildung unten) gibt es eine einzige Inhaltsverzeichnisreferenz, die Markierungen mit dem Namen images, identifiziert. Diese Inhaltsverzeichnisreferenz befindet sich innerhalb einer einzigen Ebenenreferenz. Der Geltungsbereich der Inhaltsverzeichnisreferenz (kann im Fenster "Eigenschaften" bearbeitet werden, wenn die Inhaltsverzeichnisreferenz ausgewählt ist) wurde auf aktuelle Ebene und unterhalb gesetzt. Die aktuelle Ebene, die durch die Ebenenreferenz festgelegt wird, ist die erste Ebene. Die Ebenen unterhalb davon sind also die zweite, dritte usw. Auf diese Art werden alle Bilder von der ersten Ebene an abwärts als Einträge im Inhaltsverzeichnis ausgewählt.
Da als Nummerierung eine sequenzielle Nummerierung ausgewählt wurde, werden die Bilder in einer flachen Liste sequenziell nummeriert.