Как получить значение поля предыдущей итерации? - PullRequest
0 голосов
/ 21 декабря 2011

Я пытаюсь получить значение поля из предыдущего узла. Мне это нужно, чтобы моя карта могла выводить нормализованный набор данных (т. Е. Левая сторона была денормализована).

<arrayOrdersItems>
    <OrderItem>
        <Order id1>
        <Item 1>
    </OrderItem>
    <OrderItem>
        <Order id1>
        <Item 2>
    </OrderItem>
    <OrderItem>
        <Order id2>
        <Item 1>
    </OrderItem>
    <OrderItem>
        <Order id3>
        <Item 1>
    </OrderItem>
</arrayOrderItems>

Должно привести к следующему:

<array>
    <Order>
        <Order id1>
        <Items>
            <Item 1>
            <Item 2>
        </Items>
    </Order>
    <Order>
        <Order id2>
        <Items>
            <Item 1>
        </Items>
    </Order>
    <Order>
        <Order id3>
        <Items>
            <Item 1>
        </Items>
    </Order>
</array>

Проблема, с которой я сталкиваюсь, заключается в том, что если я пытаюсь использовать xslt, кажется, что я могу указать, какой индекс я хочу для определенного столбца, но я не могу знать, в каком столбце я нахожусь. Или у меня есть мой текущий индекс, но я не могу использовать его, чтобы получить значение предыдущей итерации. Или я мог бы сделать отображение в двух частях (сначала заголовок / порядок, а затем детали / элементы), но даже тогда, как я могу предотвратить создание каждого тега для каждого возможного тега?

Как эта проблема обычно решается в Biztalk - я думаю, что я просто недостаточно силен в xslt, похоже, что он может делать почти все, и я просто не знаю правильный синтаксис.

1 Ответ

0 голосов
/ 22 декабря 2011

Вы можете использовать munecian grouping в xslt для достижения этой цели. Ниже ссылка дает точное решение, которое вы ищете.

http://blogs.msdn.com/b/chrisromp/archive/2008/07/31/muenchian-grouping-and-sorting-in-biztalk-maps.aspx

...