group-into-blocks

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

Startseite >  Funktionen > Referenz Funktionsbibliothek > core | sequence functions (Sequenzfunktionen) >

group-into-blocks

Mit der Funktion group-into-blocks werden gleiche Gruppen erstellt, die genau N Elemente enthalten, wobei N der an das Argument block-size (Blockgröße) gelieferte Wert ist. Beachten Sie, dass die letzte Gruppe, je nach Anzahl der Elemente in der Quellkomponente, N oder weniger Elemente enthalten kann. Im Beispiel unten ist block-size gleich 2. Da es insgesamt fünf Elemente gibt, enthält jede Gruppe mit Ausnahme der letzten genau zwei Elemente.

mf_group-into-blocks

 

Argumente

Name

Typ

Beschreibung

nodes/rows

Eine Sequenz von Datenelementen

Eine Sequenz von Nodes oder Zeilen (Die Verbindung kann z.B. aus einem XML-Quell-Node mit Child-Datenelementen, einem CSV-Datensatz, usw. stammen).

block-size

xs:integer

Definiert die Größe der einzelnen Gruppen.

 

Beispiel

Angenommen, bei Ihren Quelldaten handelt es sich um eine XML-Datei folgenden Inhalts (Beachten Sie, dass der Namespace und die XML-Deklarationen im Codefragment unten aus Gründen der Einfachheit entfernt wurden).

 

<company>
  <person department="Administration" name="Vernon Callaby"/>
  <person department="Marketing" name="Susi Sanna"/>
  <person department="Engineering" name="Michelle Butler"/>
  <person department="Engineering" name="Fred Landis"/>
  <person department="Administration" name="Frank Further"/>  
</company>

 

Die Personendatensätze sollen in Blöcke zu jeweils zwei Datenelementen gruppiert werden. Zu diesem Zweck wird im folgenden Mapping die Funktion group-into-blocks aufgerufen und es wird der Ganzzahlwert "2" als block-size bereitgestellt.

mf_group-into-blocks_map

Das Ergebnis des Mappings sieht folgendermaßen aus:

 

<groups>
  <group>
    <record key="Administration" value="Vernon Callaby"/>
    <record key="Marketing" value="Susi Sanna"/>
  </group>
  <group>
    <record key="Engineering" value="Michelle Butler"/>
    <record key="Engineering" value="Fred Landis"/>
  </group>
  <group>
    <record key="Administration" value="Frank Further"/>
  </group>
</groups>

 

Beachten Sie, dass die letzte Gruppe nur ein Datenelement enthält, da die Summe aller Datenelemente (5) nicht gleichmäßig durch 2 dividiert werden kann.

 

Sie finden dieses Beispiel sowie einige weitere Gruppierungsbeispiele in der folgenden Mapping-Datei: <Dokumente>\Altova\MapForce2019\MapForceExamples\GroupingFunctions.mfd. Klicken Sie auf die Schaltfläche Vorschau mf_ic_preview für die jeweilige Funktion, bevor Sie auf das Register Ausgabe klicken.


© 2019 Altova GmbH