例: ノードのフィルター

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  マッピングのデザイン > フィルターと条件 >

例: ノードのフィルター

この例は、 true/false 条件を基にしてノードをフィルターする方法について説明しています。Filter: Nodes/Rows ( mff_ic_insert_filter ) コンポーネント がこの目的を達成するために使用されています。

 

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

mff_map_MarketingExpenses

 

上に示されるように、 このマッピングは、経費の方向k ("ExpReport")のデータを含むソース XML からデータを読み取り、ターゲット XML ("MarketingExpenses")に書き込みます。ターゲットとソースの間には複数の他のコンポーネントが存在します。最も関連性の高いコンポーネントは、このトピックの主題を表す expense-item フィルター ( ic-component_filter ) です。

 

このマッピングのゴールは、マーケティング部署に属する経費アイテムのみをフィルターすることです。  この目的を達成するために、フィルター コンポーネント がマッピングに追加されました。 (フィルターを追加するには、「挿入」 メニュー をクリックして、「Filter: Nodes/Rows」をクリックします)。

 

各経費がマーケティング部署に属するかを識別するために、このマッピングは、ソース内の "expto" 属性の値を確認します。この属性が経費がマーケティングの経費である場合、値 "Marketing" を有します。例えば、 下にリストされるコードでは、最初と3番目のアイテムは、マーケティングに属し、2番目のアイテムは開発部署に、4番目は販売部署に属することが示されています:

 

...  

  <expense-item type="Meal" expto="Marketing">
    <Date>2003-01-01</Date>
    <expense>122.11</expense>
  </expense-item>
  <expense-item type="Lodging" expto="Development">
    <Date>2003-01-02</Date>
    <expense>122.12</expense>
  </expense-item>
  <expense-item type="Lodging" expto="Marketing">
    <Date>2003-01-02</Date>
    <expense>299.45</expense>
  </expense-item>
  <expense-item type="Entertainment" expto="Sales">
    <Date>2003-01-02</Date>
    <expense>13.22</expense>
  </expense-item>

...

マッピングが実行される前の XML 入力

マッピングエリアで、フィルターの node/row 入力が、ソースコンポーネント内の expense-item ノードに接続されています。これにより、フィルターコンポーネントが処理されなければならないノードのリストを取得することを保証します。

 

フィルタリングが発生する条件を追加するには、MapForce core ライブラリから equal 関数 を追加しました (詳細に関しては、 以下を参照してください: 関数と作業する)。 equal 関数は、 "type" 属性を値 "Marketing" を持つ定数と比較します(定数を追加するには、 「挿入」 メニュー をクリックして、定数をクリックします)。

 

条件を満たすアイテムのみをフィルターする必要があるため、フィルターの on-true 出力のみをターゲットコンポーネントに接続します。

 

マッピングの結果をプレビューする準備が整うと、「出力」 タブをクリックします。MapForce は、フィルターの bool 入力に接続されている条件である、それぞれの経費アイテムノードを評価します。条件が true の場合、経費アイテムノードはターゲットにパスされます。それ以外の場合は、無視されます。結果、 条件を満たす経費アイテムのみが出力内に表示されます:

 

...  

  <expense-item>
    <type>Meal</type>
    <Date>2003-01-01</Date>
    <expense>122.11</expense>
  </expense-item>
  <expense-item>
    <type>Lodging</type>
    <Date>2003-01-02</Date>
    <expense>299.45</expense>
  </expense-item>

...

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


(C) 2019 Altova GmbH