0

私は問題で立ち往生しています。

2 つの入力フィールドがあります

1) 外部注記

2) 社内メモ

それらを宛先ノード「コメント」にマッピングしたい

もしも

外部メモが来る (マッピングを行う)

内部メモが来る (マッピングを行う)

両方のフィールドが来ています(マッピングを行います)

フィールドはありません (マップしないでください)

次のタスクを実行しました。

1) ノードが来ている場合、論理的な存在を確認します。

2) Equal fuctoid を使用して、値が true かどうかを確認しました。論理的存在 = true - > OR 演算子に true を渡す

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 Functoid を削除して、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 に答える