Ich verwende eine XSLT-Transformation, um ein XML-Dokument zu erzeugen, das nach der Erstellung geteilt wird, um mehrere Dateien zu erzeugen. Die allgemeine Struktur des endgültigen Dokuments ist etwa so:XSLT 1.0 - Anzahl der Datensätze pro Datei begrenzen
<DOC>
<NEWFILE/>
<REALROOT>
<SENDER></SENDER>
<INVOICE>
<IVC_ID></IVS_ID>
<LINEITEM></LINEITEM>
<LINEITEM></LINEITEM>
...
</INVOICE>
<INVOICE>
<IVC_ID></IVS_ID>
<LINEITEM></LINEITEM>
<LINEITEM></LINEITEM>
...
</INVOICE>
...
</REALROOT>
<NEWFILE/>
<REALROOT>
<SENDER></SENDER>
<INVOICE>
<IVC_ID></IVS_ID>
<LINEITEM></LINEITEM>
<LINEITEM></LINEITEM>
...
</INVOICE>
<INVOICE>
<IVC_ID></IVS_ID>
<LINEITEM></LINEITEM>
<LINEITEM></LINEITEM>
...
</INVOICE>
...
</REALROOT>
<NEWFILE/>
</DOC>
Die DOC
und <NEWFILE/>
Tags die Grenzen des Endproduktes sind, aber das ist nicht das Thema der Frage.
Meine Eingabedaten müssen nach Absender und Rechnung gruppiert werden, bevor sie an die obige Struktur ausgegeben werden, und ich habe es geschafft, aber ich möchte auch die Anzahl der Rechnungen pro Datei begrenzen und nicht in der Lage sein finde einen Weg, das zu tun.
ist Meine Eingangsdaten in die Positionsebene wie so aufgeschlüsselt:
<ROOT>
<DATA>
<SNDR>1</SNDR>
<INVOICE>1</INVOICE>
<LINEITEM>1</LINEITEM>
</DATA>
<DATA>
<SNDR>1</SNDR>
<INVOICE>1</INVOICE>
<LINEITEM>2</LINEITEM>
</DATA>
<DATA>
<SNDR>1</SNDR>
<INVOICE>2</INVOICE>
<LINEITEM>1</LINEITEM>
</DATA>
<DATA>
<SNDR>1</SNDR>
<INVOICE>3</INVOICE>
<LINEITEM>1</LINEITEM>
</DATA>
<DATA>
<SNDR>1</SNDR>
<INVOICE>3</INVOICE>
<LINEITEM>2</LINEITEM>
</DATA>
<DATA>
<SNDR>2</SNDR>
<INVOICE>1</INVOICE>
<LINEITEM>1</LINEITEM>
</DATA>
<DATA>
<SNDR>2</SNDR>
<INVOICE>2</INVOICE>
<LINEITEM>1</LINEITEM>
</DATA>
</ROOT>
Wenn ich es begrenzen pro Datei zu 2 Rechnungen, würde ich diese Ausgabe erwarten:
<DOC>
<REALROOT>
<SENDER>1</SENDER>
<INVOICE>
<IVC_ID>1</IVS_ID>
<LINEITEM>1</LINEITEM>
<LINEITEM>2</LINEITEM>
</INVOICE>
<INVOICE>
<IVC_ID>2</IVS_ID>
<LINEITEM>1</LINEITEM>
</INVOICE>
</REALROOT>
<NEWFILE/>
<REALROOT>
<SENDER>1</SENDER>
<INVOICE>
<IVC_ID>3</IVS_ID>
<LINEITEM>1</LINEITEM>
<LINEITEM>2</LINEITEM>
</INVOICE>
</REALROOT>
<NEWFILE/>
<REALROOT>
<SENDER>2</SENDER>
<INVOICE>
<IVC_ID>1</IVS_ID>
<LINEITEM>1</LINEITEM>
</INVOICE>
<INVOICE>
<IVC_ID>2</IVS_ID>
<LINEITEM>1</LINEITEM>
</INVOICE>
</REALROOT>
</DOC>
Hier was ich zu weit habe. Dies erlaubt mir, die Zeilen nach Absender und Rechnung zu gruppieren, aber ich kann nicht herausfinden, wie ich in der Anzahl der Rechnungen arbeiten soll.
Sie können nicht etwas gruppieren, das noch nicht existiert. Sie müssen dies in zwei Schritten tun: Zuerst gruppieren Sie die Artikel in Rechnungen, dann gruppieren Sie Rechnungen in Dateien. –
XSLT ist Turing-vollständig. Wenn Sie eine Ausgabe mit einer Programmiersprache erstellen können, können Sie sie mit XSLT erzeugen. Ob es vernünftig ist zu versuchen, ist eine andere Frage. – kumesana