0

我被困在这个问题上。

我有两个输入字段

1) 外部注释

2) 内部注释

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

如果

外部笔记来了(做映射)

内部笔记来了(做映射)

两个领域都来了(做映射)

没有字段来(不要映射)

我执行了以下任务:

1)如果节点来了,检查逻辑存在。

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

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

4) 值映射来设置值。

在此处输入图像描述

此逻辑适用于以下场景:

a) InternalNotes 来了(映射成功)

b)两个值(inter & exter)都来了(映射成功)

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>
4

2 回答 2

0

看起来你的地图是有效的,尝试删除 Equality functoids,直接将 Existance 映射到 LogicalOr 。

Ps 如果我不明白您的想法,请提供您的输入示例和预期输出。

于 2013-09-09T11:34:20.547 回答
0

这是一个简单的映射,如果您使用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 解决方案是可能的,但你明白了 :)

于 2013-09-10T05:50:48.850 回答