未使用BizTalk映射逻辑或运算符映射记录

未使用BizTalk映射逻辑或运算符映射记录,biztalk,biztalk-2009,biztalk-mapper,Biztalk,Biztalk 2009,Biztalk Mapper,我陷入了这个问题 我有两个输入字段 1) 外部注释 2) 内部注释 我想将它们映射到目标节点“Comments” 如果 外部注释即将到来(进行映射) 内部注释即将到来(进行映射) 两个字段都将到来(进行映射) 没有字段(不映射) 我完成了以下任务: 1) 如果节点即将到来,请检查逻辑存在性 2) 使用Equal fuctoid确认该值是否为真。逻辑存在=真->将真传递给或运算符 3) 对两个字段执行逻辑或的逻辑或 4) 值映射以设置值 此逻辑在以下情况下运行良好: a) 内部便笺(已成功映射)

我陷入了这个问题

我有两个输入字段

1) 外部注释

2) 内部注释

我想将它们映射到目标节点“Comments”

如果

外部注释即将到来(进行映射)

内部注释即将到来(进行映射)

两个字段都将到来(进行映射)

没有字段(不映射)

我完成了以下任务:

1) 如果节点即将到来,请检查逻辑存在性

2) 使用Equal fuctoid确认该值是否为真。逻辑存在=真->将真传递给或运算符

3) 对两个字段执行逻辑或的逻辑或

4) 值映射以设置值

此逻辑在以下情况下运行良好:

a) 内部便笺(已成功映射)

b) 两个值(内部和外部)都出现(成功映射)

c) 外部注释(未映射)

我已经尝试了很多,但没有得到任何东西为什么这个外部值没有被映射

请帮帮我

谢谢


以下应为以下输入消息的输出:

投入1:

<InternalNotes>
<Value>Internal notes value</Value>
</InternalNotes>

内部票据价值
产出1:

<Comments>
<Name>Comments</Name>
<Operation>Append</Operation>
<Value>Internal notes value</Value>
</Comments>

评论
追加
内部票据价值

投入2:

<ExternalNotes>
<Value>External notes value</Value>
</ExternalNotes>

外部票据价值
产出2:

<Comments>
<Name>Comments</Name>
<Operation>Append</Operation>
<Value>External notes value</Value>
</Comments>

评论
追加
外部票据价值

投入3:

  <ExternalNotes>
    <Value>External notes value</Value>
    </ExternalNotes>
  <InternalNotes>
    <Value>Internal notes value</Value>
    </InternalNotes>

外部票据价值
内部票据价值
产出3:

 <Comments>
    <Name>Comments</Name>
    <Operation>Append</Operation>
    <Value>External notes value .
           Internal Notes value
    </Value>
   </Comments>

评论
追加
外部注释值。
内部票据价值

看起来您的映射是有效的,请尝试删除相等functoid,只需将Existance映射到LogicalOr即可


另外,如果我没有得到你的想法,请提供你的输入示例和预期输出

如果您使用
xslt
-将映射转换为
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:template match="/xml">
      <xsl:if test="InternalNotes or ExternalNotes">
         <!-- . and newline delimiter if both elements present, else none -->
         <xsl:variable name="delimiter">
            <xsl:if test="InternalNotes and ExternalNotes">.&#10;</xsl:if>
         </xsl:variable>
         <Comments>
            <Name>Comments</Name>
            <Operation>Append</Operation>
            <Value>
               <xsl:value-of select="concat(InternalNotes/Value/text(), 
                    $delimiter, ExternalNotes/Value/text())"/>
            </Value>
         </Comments>
      </xsl:if>
   </xsl:template>
</xsl:stylesheet>

.

评论
追加
这将转换以下内容:

<xml>
   <ExternalNotes>
      <Value>External notes value</Value>
   </ExternalNotes>
   <InternalNotes>
      <Value>Internal notes value</Value>
   </InternalNotes>
</xml>

外部票据价值
内部票据价值
为此:

<?xml version="1.0" encoding="utf-8"?>
<Comments>
  <Name>Comments</Name>
  <Operation>Append</Operation>
  <Value>Internal notes value.
External notes value</Value>
</Comments>

评论
追加
内部注释值。
外部票据价值

您没有提到在没有匹配项的情况下输出应该是什么样子,但是您显然至少需要一个根元素。我敢肯定,更优雅的xslt解决方案是可能的,但您会想到:)

hi@FCR,我添加了输入和输出结构,还更新了图像。请调查一下,并提供一些解决方案。非常感谢你的帮助。