将输入XML的下一个节点映射到XML模式的上一个节点

时间:2019-04-15 08:37:48

标签: biztalk

我有一个源模式和目标模式,如下所示

源模式:

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

目标模式::

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

在源输入中,STDS是无界的。节点COD可以具有三个值100、200和50。因此,任何COD值= 50的STDS节点都应在当前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 :(得分:0)

您需要做的就是

通过测试强度为50、100等的相等仿函数,将<COD>链接到<Code50><Code100>等。

根据架构的组成,您可能还需要通过环状函数<STDS>赞为<CodeXXX>

就像其他问题一样,您也应该切换回Functoids,这只能通过Functoids完成,您只需尝试一些组合即可。