Клиент может предоставить консолидированный XML со следующей структурой:
<invoices>
<invoice>
<order_id>
<ordernumber>1000</ordernumber>
</order_id>
<general_info/>
<address/>
<product>
<id>A</id>
<item/>
<item/>
</product>
<product>
<id>B</id>
<item/>
<item/>
</product>
<product>
<id>C</id>
<item/>
<item/>
</product>
</invoice>
<invoice>
<order_id>
<ordernumber>2000</ordernumber>
</order_id>
<general_info/>
<address/>
<product>
<id>D</id>
<item/>
<item/>
</product>
</invoice>
</invoices>
Корневой элемент "счета-фактуры" может содержать несколько экземпляров "счета-фактуры" (сам заказ, в данном случае 2 заказа). Однако«invoice» также может содержать несколько экземпляров «product» (строки заказа, 3 строки заказа для order_id 1000 и 1 для order_id 2000)
Нам нужен XML для каждой строки заказа, содержащей один «product» и «Счет-фактура "с указанием идентификатора заказа, общей информации и адреса всегда.
<invoices>
<invoice>
<order_id>
<ordernumber>1000</ordernumber>
</order_id>
<product>
<general_info/>
<address/>
<id>A</id>
<item/>
<item/>
</product>
</invoice>
<invoice>
<order_id>
<ordernumber>1000</ordernumber>
</order_id>
<product>
<general_info/>
<address/>
<id>B</id>
<item/>
<item/>
</product>
</invoice>
<invoice>
<order_id>
<ordernumber>1000</ordernumber>
</order_id>
<product>
<general_info/>
<address/>
<id>C</id>
<item/>
<item/>
</product>
</invoice>
<invoice>
<order_id>
<ordernumber>2000</ordernumber>
</order_id>
<general_info/>
<address/>
<product>
<id>D</id>
<item/>
<item/>
</product>
</invoice>
</invoices>
Мы рассматривали сценарий множественного разделения, подобный следующему: 1. Разделить накладную, чтобы получить отдельные заказы. 2. Разделить отдельные заказы на строки заказов и преобразовать (XSL) отдельные XML, чтобы включитьorder_id, общая информация и адрес.
Разделение 1 (по «счету») выполняется без проблем (хотя и с помощью внешней программы).
К чему мы не можем полностью добратьсяработа не может работать, это разделение и сохранение общей информации.Софар, мы пытались трансформировать XML, используя совпадения шаблонов и операторы for-each, но не можем заставить его работать должным образом.
Если у кого-то есть идея, как это сделать?