このサイトをビューするために JavaScript を有効化してください。

Altova MapForce 2020 Basic Edition

この例では、 true/false 条件を基にして、コンポーネントから単純型の値を返す方法を説明しています。「If-Else 条件」 ( mff_ic_if_else ) がこの目的を達成するために使用されています。 If-Else 条件 とフィルターコンポーネントを混同しないように注意してください。 「If-Else 条件」 は、 (文字列、整数などの)単純な値を条件付きで処理する場合のみに適しています。ノードなどの複合値をフィルターする場合、代わりにフィルターを使用してください (以下を参照してください: 例: ノードのフィルター)。

 

この例で説明されるマッピングは以下のパスで検索することができます: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\ClassifyTemperatures.mfd

 

mff_map_ClassifyTemperatures

 

このマッピングは、気温データを含むソース XML ("Temperatures")からデータを読み取り、データを同じスキーマに準ずるターゲット XML に書き込みます。ターゲットとソースの間には複数の他のコンポーネントが存在します。そのうちの1つが、このトピックの主題である(赤でハイライトされている) if-else 条件です。

 

このマッピングのゴールは、ターゲット内の各気温の記録に短い説明を追加することです。 具体的には、 摂氏20度以上の気温の説明は、 "high" と表示され、摂氏5度以下の気温は、 "low" と表示されるように設定します。上記以外の場合は、説明が表示されません。

 

この目的を達成するために、 条件付き処理が必要とされます。ですから、If-Else 条件 がマッピングに追加されました。 (If-Else 条件を追加するには、 「挿入」 メニュー をクリックして、If-Else 条件をクリックします)。 このマッピングでは、 以下の2つの条件を受け入れるために ( gui_add_function_parameter ボタンを使用して) If-Else 条件が展開されています: bool1bool2

 

条件自身は、MapForce core ライブラリから追加された greaterless 関数により追加されます (詳細に関しては、 以下を参照してください: 関数と作業する)。  関数は、 "upper" と "lower" と呼ばれる2つの入力コンポーネントより与えられた値を評価します(入力コンポーネントを追加するには、 「挿入」 メニュー をクリックして、「入力の挿入」をクリックします。入力コンポーネントに関する詳細については、 マッピングにパラメーターを提供するを参照してください

 

greaterless 関数は、 true または false のどちらかを返します。関数の結果は、ターゲットインスタンスに何が書き込まれるかを決定します。具体的には、ソース内の "temp" 属性の値が、20 よりも大きい場合、定数値 "high" が if-else 条件にパスされます。ソース内の "temp" 属性の値が 5 よりも小さい場合、定数値 "low" は、 if-else 条件にパスされます。otherwise 入力が接続されていませんので、上記の条件が満たされない場合は、result 出力コネクターにパスされる値はありません。

 

最後に、result 出力コネクタは、(各気温の記録に1度ずつ与えられる) この値をターゲット内の "desc" 属性に与えます。

マッピングの結果をプレビューする準備が整うと、「出力」 タブをクリックします。気温が20度より高い、または5度より低い場合、結果 XML 出力は、 "desc" 属性を含むことに注意してください。

 

...  
  <data temp="-3.6" month="2006-01" desc="low"/>
  <data temp="-0.7" month="2006-02" desc="low"/>
  <data temp="7.5" month="2006-03"/>
  <data temp="12.4" month="2006-04"/>
  <data temp="16.2" month="2006-05"/>
  <data temp="19" month="2006-06"/>
  <data temp="22.7" month="2006-07" desc="high"/>
  <data temp="23.2" month="2006-08" desc="high"/>
...

マッピングの実行後の XML 出力

(C) 2019 Altova GmbH