При получении заказов обратно, если строка заказа разделена на две коробки, компания возвращает XML с некоторым количеством в одной коробке, а некоторые - в другом для той же обуви.Это вызывает у нас проблемы, потому что когда мы отправляем его обратно в ERP, он отправляет, например, 4 строки, когда в заказе только 3 строки.
Я посмотрел эту статью о группировке, но получаютак потерян!По сути, все, что я хочу сделать, это сгруппировать его по статьям, чтобы я мог суммировать количество и сохранить его в одной строке.
Я пытался использовать этот учебник - https://www.codeproject.com/Articles/1849/Grouping-XML-using-XSLT-2
Все, что я хочунужно воспроизвести этот вывод, но с появлением статьи 261087750000 только один раз, с количеством 66, а не дважды с 48 и 18.
Я пробовал это в for-each, но ничего не возвращается -
<xsl:for-each select="//dispatch[generate-id(.) = generate-
id(key('keyArticle', Carton/CartonDetails/ArticleNumber)[1])]">
<xsl:variable name="lngArticle"><xsl:value-of
select="Carton/CartonDetails/ArticleNumber" />
</xsl:variable>
<xsl:variable name="lstCarton"
select="//Carton[Carton/CartonDetails/ArticleNumber=$lngArticle]" />
Фактический XML здесь -
<?xml version="1.0" encoding="UTF-8"?>
<Dispatches>
<dispatch>
<orderNo>4703368395</orderNo>
<CartonQty>84</CartonQty>
<Carton>
<DispDate>20190613</DispDate>
<CartonDetails>
<LineNumber>1</LineNumber>
<ArticleNumber>261087750000</ArticleNumber>
<Quantity>48</Quantity>
</CartonDetails>
<CartonDetails>
<LineNumber>2</LineNumber>
<ArticleNumber>261135720000</ArticleNumber>
<Quantity>12</Quantity>
</CartonDetails>
</Carton>
<Carton>
<BoxNo>0920000075</BoxNo>
<DispDate>20190613</DispDate>
<CartonDetails>
<LineNumber>1</LineNumber>
<ArticleNumber>261087750000</ArticleNumber>
<Quantity>18</Quantity>
</CartonDetails>
<CartonDetails>
<LineNumber>2</LineNumber>
<ArticleNumber>261087840000</ArticleNumber>
<Quantity>6</Quantity>
</CartonDetails>
</Carton>
</dispatch>
Ожидаемый результат будет -
<CartonDetails>
<LineNumber>1</LineNumber>
<ArticleNumber>261087750000</ArticleNumber>
<Quantity>66</Quantity>
</CartonDetails>