Beispiel: Group-By (Persons.sps)

www.altova.com Alle erweitern/reduzieren Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  SPS-Datei: Komplexe Funktionen > Gruppieren >

Beispiel: Group-By (Persons.sps)

Im Beispiel Persons.sps, das auf dem Schema Persons.xsd basiert, wird als XML-Arbeitsdatei Persons.xml verwendet. Es befindet sich im Ordner (Eigene) Dateien, C:\Documents and Settings\<username>\My Documents\Altova\StyleVision2019\StyleVisionExamples\Tutorials\Grouping\Persons\. Die XML-Dokumentstruktur ist die folgende: Ein employees Dokumentelement kann unbeschränkt viele Angestellte person  enthalten. Jeder Angestellte person ist nach dem folgenden Muster strukturiert:

 

<person first="Vernon" last="Callaby" department="Administration" grade="C"/>

 

Im Design werden die Angestellten nach Abteilung gruppiert. Für jede Abteilung gibt es eine separate Tabelle und die Abteilungen werden aufsteigend in alphabetischer Reihenfolge sortiert. Innerhalb der einzelnen Abteilungstabellen werden die Angestellten (person) nach Stufen (grade) (in aufsteigender Reihenfolge sortiert) gruppiert und innerhalb jeder Stufe werden die Angestellten in alphabetischer Reihenfolge nach Nachnamen aufgelistet.

 

 


 

Strategie

Die Strategie zum Erstellen von Gruppen ist die folgende. Die Gruppierung wird am Element "person" vorgenommen, wobei als Gruppierungsschlüssel das Attribut "department" verwendet wird. Dadurch werden die person-Elemente anhand des Werts im Attribut "department" in Gruppen eingeteilt. (Wird eine Sortierung definiert, können die Department-Gruppen in alphabetischer Reihenfolge aufgelistet werden, z.B. beginnend mit "Administration", usw.). Da für die Abteilungen separate Tabellen angelegt werden sollen, wird die aktuelle Gruppierung (current-grouping) (welche, auf dem Gruppierungsschlüssel "department" basiert) als Tabelle erstellt. Innerhalb dieser gruppierten Person-Elemente definieren wir nun, dass jede Gruppe noch weiter geordnet werden soll, und zwar mit dem Attribut "grade" als Gruppierungsschlüssel.

 

Erstellen des SPS

Das Design wurde folgendermaßen erstellt:

 

1.Ziehen Sie das Element person aus der Schemastruktur und erstellen Sie es als Inhalt.
2.Klicken Sie mit der rechten Maustaste auf den Element-Tag person und wählen Sie im Kontextmenü den Befehl "Gruppieren nach".
3.Aktivieren Sie im Dialogfeld "Gruppierung der Ausgabe definieren" die Option group-by, geben Sie als XPath-Ausdruck im Textfeld "XPath" @department ein und klicken Sie auf OK.
4.Es wird ein Dialogfeld angezeigt, in dem Sie gefragt werden, ob die Gruppen sortiert werden sollen. Da die Gruppen nach der Standardsortierung alphabetisch in aufsteigender Reihenfolge sortiert werden sollen, klicken Sie auf Ja. (Die Sortierung kann später jederzeit definiert, geändert oder aufgehoben werden.)
5.Da jede Gruppe (in diesem Fall die Abteilungen) in Form einer separaten Tabelle angelegt werden soll, erstellen Sie die aktuelle Gruppe als Tabelle. Klicken Sie dazu mit der rechten Maustaste auf den Tag current-group() (siehe Abbildung unten) und wählen Sie den Befehl Ändern in | Tabelle, wobei Sie die Child-Attribute @last und @grade als Spalten der Tabelle auswählen.

 

GroupingEx1a

 

6.Strukturieren Sie den Inhalt der Spalten und Zellen der Tabelle so um, dass die erste Spalte @grade und die zweite Spalte die Nodes @first und @last enthält (siehe Abbildung unten).
7.Um innerhalb der aktuellen Gruppen, die nach "department" gruppiert ist, eine Gruppierung nach "grade" vorzunehmen, erstellen Sie in der current-group()-Vorlage eine Gruppierung für das Attribut grade. Bestätigen Sie die Standardsortierung. Daraufhin wird eine neue Vorlage current-group() erstellt (siehe Abbildung oben).
8.Sortieren Sie die aktuelle Gruppe (also die Untergruppe von Angestellten, die nach Stufe sortiert ist) nach dem Attribut last.

 

GroupingEx1b

 

9.Definieren Sie die Formatierung für die Tabelle.
10.Definieren Sie oberhalb der Tabelle eine Überschrift für die Tabelle. Da die Tabellen einzelne Abteilungen repräsentieren, kann der Name der Abteilung durch eine automatische Berechnung mittels eines XPath-Ausdrucks, der die XPath 2.0/3.0-Funktion current-grouping-key() aufruft, dynamisch aus dem aktuellen Kontext ermittelt werden.
11.Wiederholen Sie den gesamten Prozess, um eine ähnliche Ausgabe zu erstellen, dieses Mal durch Gruppierung von Angestellten nach Stufe (grade) und erst dann nach Abteilung (department).

 

Um die Gruppierung oder Sortierung einer Vorlage anzuzeigen oder zu ändern, klicken Sie mit der rechten Maustaste auf die Vorlage und wählen Sie im Kontextmenü den Befehl Gruppieren nach oder Sortieren nach. Daraufhin wird das entsprechende Dialogfeld angezeigt, in dem die Einstellungen angezeigt oder geändert werden können.

 

 

 


© 2019 Altova GmbH