我有一个源和目标架构,如下所示
源架构:
<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。
你需要做的就是
将<COD>
链接到<Code50>
,<Code100>
等等。通过测试50,100等的Equal Functoid。
根据Schemas的组成,你可能还需要通过循环Functoids来<STDS>
到<CodeXXX>
。
就像其他问题一样,你也应该切换回Functoids,这只能用Functoids完成,你只需要尝试一些组合。