Нормальный заказ имеет порядок. Предварительный заказ не имеет очереди, но говорит мне, сколько я могу ожидать получить. Приложение, получающее заказы, может обрабатывать заказы со строками заказов. Поскольку теперь мы также используем предварительные заказы, я хотел бы создать такое же количество пустых строк заказов, что и в предварительном заказе, чтобы приложение могло принять edi.
Я уже создал проверку, чтобы увидеть, является ли это заказом с линиями заказов или предварительным заказом.
Пример входящего кода, в данном случае «сумма 3» означает, что должно быть 3 строки заказа:
<WarehouseOutboundOrder>
<Amount>3</Amount>
<OrderDate>27-05-2019 13:22</OrderDate>
<CreationReason>E01_NEW_PREORDER</CreationReason>
</WarehouseOutboundOrder>
Ожидаемый исходящий код:
<WarehouseOutboundOrder>
<Amount>3</Amount>
<OrderDate>27-05-2019 13:22</OrderDate>
<CreationReason>E01_NEW_PREORDER</CreationReason>
<WarehouseOutboundOrderLine>
<Quantity></Quantity>
<Description></Description>
</WarehouseOutboundOrderLine>
<WarehouseOutboundOrderLine>
<Quantity></Quantity>
<Description></Description>
</WarehouseOutboundOrderLine>
<WarehouseOutboundOrderLine>
<Quantity></Quantity>
<Description></Description>
</WarehouseOutboundOrderLine>
</WarehouseOutboundOrder>
Как я могу добиться этого с помощью xslt?
Да, он поддерживает XSLT 2.0. Это уникальная ситуация, обычно я только изменяю или обновляю xslt, которые уже делают то, что я хочу (как только я нашел их здесь). Я никогда не делал ничего подобного и не могу найти ничего подобного.
Как насчет:
XSLT 2.0
<xsl:stylesheet version = "2.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:output method = "xml" version = "1.0" encoding = "UTF-8" indent = "yes"/>
<xsl:template match = "WarehouseOutboundOrder">
<xsl:copy>
<xsl:copy-of select = "*"/>
<xsl:for-each select = "1 to Amount">
<WarehouseOutboundOrderLine>
<Quantity/>
<Description/>
</WarehouseOutboundOrderLine>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Демо: https://xsltfiddle.liberty-development.net/gWvjQfM
Спасибо за помощь. Это именно то, что мне нужно. Я проголосовал за вашу публикацию (Спасибо за отзыв! Голоса, отданные теми, у кого репутация менее 15, записываются, но не изменяют общедоступную оценку публикации.). Я использую программу, которая генерирует xslt, это нестандартная работа, которую она не может генерировать. Я редактирую только небольшие фрагменты кода, чтобы создать то, что мне нужно.
Ваш процессор поддерживает XSLT 2.0? -- P.S. Пожалуйста, опубликуйте свою текущую попытку, чтобы мы могли ее исправить, вместо того, чтобы писать код для вас с нуля.