我有一个源模式和目标模式,如下所示
源模式:
<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。
答案 0 :(得分:0)
您需要做的就是
通过测试强度为50、100等的相等仿函数,将<COD>
链接到<Code50>
,<Code100>
等。
根据架构的组成,您可能还需要通过环状函数将<STDS>
赞为<CodeXXX>
。
就像其他问题一样,您也应该切换回Functoids,这只能通过Functoids完成,您只需尝试一些组合即可。