Циклическое отображение Biztalk
У меня есть входное сообщение с тремя сегментами, как это
<DDT>
<NumeroDDT>PS-1713445</NumeroDDT>
<Date>2017-10-19</Date>
<NumeroLinea>2</NumeroLinea>
</DDT>
Но я хочу отобразить линии (NumeroLinea) на основе значения в нем.
Таким образом, со значением 2, как здесь это должно стать
<DDT>
<NumeroDDT>PS-1713445</NumeroDDT>
<Date>2017-10-19</Date>
<NumeroLinea>1</NumeroLinea>
<NumeroLinea>2</NumeroLinea>
</DDT>
Этакий счетчик строк.
Я сделал это с помощью встроенного xslt функтоида и жестко, как...
если 1 сделать одну строку
если 2 сделать две строки
и т.п.
Этого было бы достаточно с несколькими строками, но проблема в том, что это может быть много строк, более 300 и более, поэтому это плохое решение и не работает.
Есть ли у вас какие-либо идеи, как создать <NumeroLinea>
Строки здесь на основе значения из входного сообщения? Я также попытался зациклить functoiods, но безуспешно.
Входная схема и выходная схема одинаковы.
2 ответа
Я думаю, что вам лучше использовать технику рекурсии, представленную в принятом Ответе здесь: XSLT Как сделать классическую петлю от x до y?
Делая это, вам не нужно изменять или дополнять свой ввод.
Нашел очень хорошее решение в блоге Seroter. Разделение значений с разделителями в BizTalk Maps
Я попробовал это, и это сработало хорошо. Все, что мне нужно сделать, это отделить мой входной узел с помощью канала, и это решение отлично работает.