将相关重复节点映射到BizTalk映射器上的重复节点
我正在尝试在BizTalk 2013上进行映射,但我遇到了此映射问题(使用映射器): 输入消息:将相关重复节点映射到BizTalk映射器上的重复节点,biztalk,biztalk-mapper,Biztalk,Biztalk Mapper,我正在尝试在BizTalk 2013上进行映射,但我遇到了此映射问题(使用映射器): 输入消息: 322 322 1. 40 随机描述1 322 2. 41 随机描述2 322 1. 2 322 2. 3 预期输出消息: 1. 2. 40 随机描述1 2. 3. 41 随机描述2 我想通过基于ItemNumber的“合并”数据,将ItemsDetails和ScheduleDetails映射到Item。我已经尝试了很多东西,但还没能做到 我找不到任何关于此的示例。此模式是否有特定的名称 如
322
322
1.
40
随机描述1
322
2.
41
随机描述2
322
1.
2
322
2.
3
预期输出消息:
1.
2.
40
随机描述1
2.
3.
41
随机描述2
我想通过基于ItemNumber
的“合并”数据,将ItemsDetails
和ScheduleDetails
映射到Item
。我已经尝试了很多东西,但还没能做到
我找不到任何关于此的示例。此模式是否有特定的名称
如果任何人有任何想法可以共享,我将不胜感激。我能想到的唯一方法是使用Functoid将ItemDetails和ScheduleDetails与一个或多个循环Functoid链接,并使用相等的Functoid根据当前ItemDetail ItemNumber过滤ScheduleDetails 如果这不起作用,您唯一的其他选择就是定制Xslt。调用模板将非常简单。如果您愿意,那么映射将变得简单:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:key name="itemSchedules"
match="/DetailsResponse/ScheduleDetails/item"
use="concat(DocumentNumber,'-',ItemNumber)" />
<xsl:template match="/DetailsResponse">
<Response>
<Data>
<Items>
<xsl:apply-templates select="ItemDetails/item" />
</Items>
</Data>
</Response>
</xsl:template>
<xsl:template match="item">
<Item>
<LineNumber>
<Internal>
<xsl:value-of select="ItemNumber"/>
</Internal>
</LineNumber>
<ConfirmedQuantity>
<Value>
<xsl:value-of select="format-number(key('itemSchedules',
concat(DocumentNumber,'-',ItemNumber))/ConfirmedQuantity,0)" />
</Value>
</ConfirmedQuantity>
<Article>
<Number>
<xsl:value-of select="MaterialNumber"/>
</Number>
<Description>
<xsl:value-of select="Description"/>
</Description>
</Article>
</Item>
</xsl:template>
</xsl:stylesheet>
xsl:key
保留了对计划细节“部分”的引用索引,我们创建了DocumentNumber
和ItemNumber
的链接键,这只能通过调用Xslt模板functoid来实现。以下是一些解释: