【发布时间】:2010-10-26 10:40:06
【问题描述】:
我在 BizTalk 地图中有一个要求,在哪里
我会将一些元素从源架构映射到目标架构,其中将根据某些条件将值分配给目标架构元素。
如果没有分配这些值,我需要发送一些默认值(N/A)。
我的地图不是一对一的,因此我可以使用脚本函数并发送默认值,除此之外,目标架构是平面文件,在源架构中我必须循环很多.
所以任何人都可以使用 BizTalk Map/架构中的某些设置给我一些关于“如果没有映射任何内容,如何为目标架构中的元素设置默认值”的建议。
我已经尝试过的是,我打开了所有元素的目标架构,我已将值“N/A”设置为属性 ->“DefaultValue”,它位于属性选项卡中,但当没有任何映射时默认值不会到来。相反,节点本身并未在输出文件中创建。
请参阅下面的地图以获得更好的理解
源架构是一个 XML 架构。
目标架构是平面文件架构。
现在在上面的地图中,在我的源模式中,我有一个名为 F4706 的节点,它将循环。
当 F4706 中的元素“TypeAddressNumber”为“1”时,我将该 F4706 实例的其余字段映射到目标架构中的“运送至”详细信息
当 F4706 中的元素“TypeAddressNumber”为“2”时,我将该 F4706 实例的其余字段映射到目标架构中的“经销商”详细信息
当 F4706 中的元素“TypeAddressNumber”为“3”时,我将该 F4706 实例的剩余字段映射到目标架构中的“EndUser”详细信息
现在,如果我将逻辑 NOT functoid 连接到 Logical Equal functoid 并分配一些默认值,那么我的目标节点会出现三次,一次“=”函数返回 true 一次,另外两次返回 false。但我想要的是,如果有什么要映射的,那么从“F4706”实例映射或分配默认值。
在下面找到输入文件
我期望得到的输出是:
现在如果输入文件如下所示:
也就是说,当我没有 TypeAddressNumber=2 的“F4706”节点时,我需要在目标架构中的经销商相关节点中填写“N/A”,如下所示:
如果你去检查正在生成的 XLST,它正在编写一个 xsl:foreach,所以如果你使用 xsl:choose/otherwise 条件会被检查多次并且我的输出节点会被重复。
我还尝试在第一个循环和第二个循环的 XLST 中使用一些全局变量来访问它并写入默认值,不幸的是它也不起作用。因为 XLST 中的 VARIABLE 不是 TRUE 变量。我认为它是一个常数。
非常感谢如何完成此任何帮助。
【问题讨论】:
标签: biztalk