将相关重复节点映射到BizTalk映射器上的重复节点

将相关重复节点映射到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。我已经尝试了很多东西,但还没能做到 我找不到任何关于此的示例。此模式是否有特定的名称 如

我正在尝试在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
。我已经尝试了很多东西,但还没能做到

我找不到任何关于此的示例。此模式是否有特定的名称


如果任何人有任何想法可以共享,我将不胜感激。

我能想到的唯一方法是使用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来实现。以下是一些解释: