Сопоставить следующий узел входного XML с предыдущим узлом схемы XML - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть схема источника и назначения, подобная следующей

Схема источника:

<Root>
    <STDS>
        <COD>
        <NAM>
        <AGE>
    </STDS>
</Root>

Схема назначения ::

<Root>
    <Students>
        <Code100>
            <Name>
            <Age>
            <Code50>
                <Name>
                <Age>
            </Code50>
        </Code100>
    </Students>
</Root>

На входе источника STDSнеограничена.Узел COD может иметь три значения 100, 200 и 50. Таким образом, любой узел STDS, имеющий значение COD = 50, должен быть добавлен в STDS со значением COD = 100 до текущего узла STDS.

У меня естьввод, например.

<Root>
    <STDS>
        <COD>200</COD>
        <NAM>ABC</NAM>
        <AGE>20</AGE>
    </STDS>
    <STDS>
        <COD>100</COD>
        <NAM>XYZ</NAM>
        <AGE>21</AGE>
    </STDS>
    <STDS>
        <COD>50</COD>
        <NAM>JJJ</NAM>
        <AGE>22</AGE>
    </STDS>
    <STDS>
        <COD>200</COD>
        <NAM>JKL</NAM>
        <AGE>23</AGE>
    </STDS>
    <STDS>
        <COD>100</COD>
        <NAM>MMM</NAM>
        <AGE>24</AGE>
    </STDS>
        <STDS>
        <COD>50</COD>
        <NAM>NNN</NAM>
        <AGE>25</AGE>
    </STDS>
    </STDS>
        <STDS>
        <COD>50</COD>
        <NAM>LLL</NAM>
        <AGE>26</AGE>
    </STDS>
</Root>

Мне нужен вывод, подобный следующему


<Root>
    <Students>
        <Code200>
            <Name>ABC</Name>
            <Age>20</Age>
        </Code200>
        <Code100>
            <Name>XYZ</Name>
            <Age>21</Age>
            <Code50>
                <Name>JJJ</Name>
                <Age>22</Age>
            </Code50>
        </Code100>
            <Name>XYZ</Name>
            <Age>21</Age>
        </Code100>
        <Code200>
            <Name>JKL</Name>
            <Age>23</Age>
        </Code200>
        </Code100>
            <Name>MMM</Name>
            <Age>24</Age>
            <Code50>
                <Name>NNN</Name>
                <Age>24</Age>
            </Code50>
            <Code50>
                <Name>LLL</Name>
                <Age>25</Age>
            </Code50>
        </Code100>
    </Students>
</Root>

Я хочу добиться этого в сопоставителе BizTalk без использования пользовательского XSLT.

1 Ответ

0 голосов
/ 15 апреля 2019

Все, что вам нужно сделать, это

Ссылка <COD> на <Code50>, <Code100> и т. Д. Через Equal Functoid , который проверяет на 50, 100 и т. Д.

В зависимости от состава схем вам также может понадобиться от <STDS> до <CodeXXX> до Looping Functoids .

Как и другие вопросы, которые вы задаетеТакже следует переключиться обратно на Functoids, это можно сделать только с Functoids, вам просто нужно попробовать несколько комбинаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...