我正在使用XSLT转换生成XML文档,该文档在创建后会被拆分以生成多个文件。最后文件的一般结构如下所示:XSLT 1.0 - 每个文件的记录数有限
<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>
的DOC
和<NEWFILE/>
标签是终端产品的界限,但是这不是问题的问题。
在输出到上述结构之前,我的输入数据需要通过发件人和发票进行分组,并且我已经设法做到了这一点,但是我还想限制每个文件的发票数量并且无法找到一种方法来做到这一点。
我的输入数据被细分为订单项级别,像这样:
<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>
如果我把它限制在每个文件2张发票,我希望这样的输出:
<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>
这里我到目前为止。这使我可以按发件人和发票分组,但我无法弄清楚如何处理发票数量限制。
您无法对尚不存在的内容进行分组。您需要两次完成此操作:首先将项目分组为发票,然后将发票分组为文件。 –
XSLT是图灵完整的。如果您可以使用编程语言生成输出,则可以使用XSLT生成输出。试图成为一个不同的问题是否是理智的。 – kumesana