早上好,
我正在尝试学习BizTalk,并且正在做一些我不理解的事情。
我正在为员工地址输出XML。循环functoid创建两个“通信”元素。我希望看到“CountrySubDivisionCode”作为子元素,但它们只出现一次:
<ns0:Communication sequence="1">
<ns0:ChannelCode>Telephone</ns0:ChannelCode>
<ns0:UseCode>Personal</ns0:UseCode>
<ns0:DialNumber>1234567890</ns0:DialNumber>
<ns0:Address>
<ns0:AddressLine sequence="1">1234 My St</ns0:AddressLine>
<ns0:CityName>Some City</ns0:CityName>
<ns0:CountrySubDivisionCode name="County">Jackson</ns0:CountrySubDivisionCode>
<ns0:CountrySubDivisionCode name="State">MO</ns0:CountrySubDivisionCode>
<ns0:CountryCode>US</ns0:CountryCode>
<ns0:PostalCode>14099</ns0:PostalCode>
</ns0:Address>
</ns0:Communication>
<ns0:Communication sequence="2">
<ns0:ChannelCode>Telephone</ns0:ChannelCode>
<ns0:UseCode>Business</ns0:UseCode>
<ns0:DialNumber>0987654321</ns0:DialNumber>
<ns0:Address>
<ns0:AddressLine sequence="1">1234 My St</ns0:AddressLine>
<ns0:CityName>Some City</ns0:CityName>
<ns0:CountryCode>US</ns0:CountryCode>
<ns0:PostalCode>14099</ns0:PostalCode>
</ns0:Address>
</ns0:Communication>
输入是一个平面架构。
通信元素的电话号码有一个循环功能。它的输出是输出模式中的Communication元素。
还有另一个循环的functoid与州和县的输入,它的输出是 输出模式中的CountrySubDivisionCode元素。
映射如何决定输出什么是什么?它不输出 第二集因为它们会重复吗?我找到的所有教程 似乎是相同源材料的复制和粘贴版本,而且很轻。
由于
答案 0 :(得分:1)
验证地图(在解决方案资源管理器中右键单击),然后单击visual studio输出窗口中的XSL链接。这是了解mapper正在做什么的最佳方法,因为您将看到生成的XSLT。
答案 1 :(得分:0)
我能够通过实验解决这个问题。我相信循环functoid是如何工作的:
我有“嵌套”循环functoids。外部functoid有三个输入,内部functoid有两个输入。在第一个外部functoid输出上,它使用了内部functoid的两个输入(由于位置和丢失而被抑制)。在所有后续的外部functoid输出中,内部functoid没有其他值可供使用,因此它不输出任何内容。
对于我的解决方案,我不得不重新安排外部functoid的输入,因此地址部分首先出现。内部functoid正确输出两个国家的分区。对于随后的电话行,没有剩余的输出,也没有想要的。
Michael和Mousio感谢您的帮助!