【发布时间】:2012-11-16 09:20:03
【问题描述】:
我们的订单以 XML 格式输入,我们的一位客户现在发送大量圣诞节订单(25mb xml 文件),这几乎使我们的系统陷入瘫痪!我需要找到一种体面的方法来将此文件拆分为多个 x 大小或 y 个订单的文件。我可以用一个简单的控制台应用程序来做到这一点,但我想知道我是否可以用 XSLT 来做到这一点?
我想在这个例子中一次选择 2 个元素。有没有一种skip and take风格的方法?
订单文件示例:
<order>
<customerName>Customer 1</customerName>
<orderID>001</orderID>
<orderItem>
<itemID>001</itemID>
<quantity>12</quantity>
</orderItem>
<orderItem>
<itemID>002</itemID>
<quantity>15</quantity>
</orderItem>
<orderItem>
<itemID>003</itemID>
<quantity>120</quantity>
</orderItem>
<orderItem>
<itemID>004</itemID>
<quantity>1223</quantity>
</orderItem>
<orderItem>
<itemID>005</itemID>
<quantity>22</quantity>
</orderItem>
<orderItem>
<itemID>006</itemID>
<quantity>78</quantity>
</orderItem>
</order>
我想将它拆分为每个包含 2 个 orderItems 的 XML 文档:
文件 1:
<order>
<customerName>Customer 1</customerName>
<orderID>001</orderID>
<orderItem>
<itemID>001</itemID>
<quantity>12</quantity>
</orderItem>
<orderItem>
<itemID>002</itemID>
<quantity>15</quantity>
</orderItem>
</order>
文件 2:
<order>
<customerName>Customer 1</customerName>
<orderID>001</orderID>
<orderItem>
<itemID>003</itemID>
<quantity>120</quantity>
</orderItem>
<orderItem>
<itemID>004</itemID>
<quantity>1223</quantity>
</orderItem>
</order>
文件 3:
<order>
<customerName>Customer 1</customerName>
<orderID>001</orderID>
<orderItem>
<itemID>005</itemID>
<quantity>22</quantity>
</orderItem>
<orderItem>
<itemID>006</itemID>
<quantity>78</quantity>
</orderItem>
</order>
【问题讨论】:
-
您是否使用像 Saxon 9 或 AltovaXML 或 XmlPrime 这样的 XSLT 2.0 处理器?使用 XSLT 2.0,您可以使用
xsl:result-document使用一个样式表创建多个结果文件。