> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 条件エディタの使用

> CData Arc で条件エディタを使用して、マッピングの宛先ノードに条件付きロジックを追加する方法。

**条件マッピングエディタ**では、宛先ノードに条件を追加して、その条件がtrue の場合にのみ出力ドキュメントに要素を含めることができます。条件エディタを使用すると、ソースの値に基づいて宛先ノードの値を設定することもできます。個々のルールやルールのグループを追加し、条件が満たされた場合にマッピングが実行するアクションを指定することで、複雑な条件を構築できます。

エディタを開くには、宛先ドキュメント内のノードにマウスを移動し、フィルタ ![フィルタ](https://mintcdn.com/cdata-arc/d_uxoDpYg8BiVilE/26.4/images/xmlmap_condition_icon.png?fit=max\&auto=format\&n=d_uxoDpYg8BiVilE\&q=85\&s=94cee88be3a9e2fdb0b194e5a02342f3) アイコンをクリックします。

![](https://mintcdn.com/cdata-arc/mPTGrzt-QAW42BUU/26.4/images/edi_condition_editor.png?fit=max\&auto=format\&n=mPTGrzt-QAW42BUU\&q=85\&s=03aa98d325c55b06e574193cef63f43c)

条件に名前を付け、**ルールを追加**または**グループを追加**をクリックします。**値** フィールドにはソース要素のXPath があらかじめ入力されています。別のソース値を選択する必要がある場合は、フィールドをクリックしてドロップダウンを開いてください。

![](https://mintcdn.com/cdata-arc/mPTGrzt-QAW42BUU/26.4/images/edi_condition_first_rule.png?fit=max\&auto=format\&n=mPTGrzt-QAW42BUU\&q=85\&s=b2227c85807a406bbcc1be077ac1b8a3)

ルールを作成するときは、ドロップダウンを使用して選択します。以下から選択できます：

* 入力XML
  * 値：評価対象のXPath にある値
  * データ型：値のデータ型（文字列、数値、日時）
  * 出現回数：ドキュメント内でXPath が出現する回数
  * インデックス：評価中のForeach ループの現在の反復回数を表すインデックス
* メッセージヘッダー
  * 値：評価対象のメッセージヘッダーの値
  * データ型：値のデータ型（文字列、数値、日時）
* 変数
  * 値：評価対象の変数の値
  * データ型：値のデータ型（文字列、数値、日時）

各ルールの右側（演算子の後）には、独自のソースドロップダウンがあります。左側で使用できるソースに加えて、右側でのみ使用できる**静的な値**が含まれます：

* **静的な値**（デフォルト）：比較値をリテラルで指定するための自由入力欄です。右側でのみ使用できます。
* **入力XML**
* **メッセージヘッダー**
* **変数**

右側のドロップダウンにはいくつかの制限があります：

* 演算子が**contains**、**starts with**、**ends with**、**matches glob**、**matches regex**、**is in**、または**is not in** の場合、あるいは左側の種類が**インデックス**または**出現回数**の場合、ソースドロップダウンは**静的な値**に固定されます
* 演算子が値を取らない場合（**is empty**、**is not empty**、**is null**、**is not null**）、右側は完全に非表示になります
* 左側の種類が**データ型**の場合、右側のドロップダウンには**String**、**Number**、**DateTime** の固定の選択肢が表示されます

条件にXPath を選択すると、エディタにドキュメントのツリー表示が現れるので、次の画像のように必要なXPath を簡単に見つけることができます。

![](https://mintcdn.com/cdata-arc/d_uxoDpYg8BiVilE/26.4/images/xmlmap_condition_select.png?fit=max\&auto=format\&n=d_uxoDpYg8BiVilE\&q=85\&s=8d3f1292c895cb634a034f596e8066bc)

ルールやグループは並べ替えが可能です。ハンドル ![ハンドル](https://mintcdn.com/cdata-arc/d_uxoDpYg8BiVilE/26.4/images/xmlmap_condition_handle.png?fit=max\&auto=format\&n=d_uxoDpYg8BiVilE\&q=85\&s=29b06331be6308858fbb8a3d38a42f2c) をクリックし、オブジェクトを新しい位置にドラッグします。

条件の定義が完了したら、右側のペインを使用して、条件が満たされた場合に実行される動作を指定します。

![](https://mintcdn.com/cdata-arc/d_uxoDpYg8BiVilE/26.4/images/xmlmap_condition_rightside.png?fit=max\&auto=format\&n=d_uxoDpYg8BiVilE\&q=85\&s=c4d0b12d4da40f23c741da75f47ac635)

以下からステータスを選択します：

* Success
* Warning
* Error

**通知を送信**にチェックを入れ、**宛先**と**件名**フィールドを入力して、条件のステータスに関するE メールを送信します。

> [!NOTE]
>
> **アラートを設定**をクリックすると、新しいブラウザタブで[アラート](https://docs.arc.cdata.com/26.4/self-hosted/ja/getting-started/administration/settings/alerts.md)ページが開き、E メール設定を行うことができます。これらの設定が正しく行われていない場合、E メール通知は送信されません。

最後に、右側のペインの**Else** セクションを使用して、条件が満たされない場合に実行する動作を指定します。

**Else, Set Action to** ドロップダウンから、以下のいずれかを選択します：

* マッピングから完全に**要素を除外**する
* **値をマップ**で値をマッピングする
* **異なる値を割り当てる**で別の値を割り当てる（条件保存後に式またはカスタムスクリプトとして定義されます）

ステータスおよび通知オプションは、上部のセクションと同様に機能します。

条件を保存すると、マッピングエディタに表示され、マッピング内の他のリーフノードと同じように動作します。ソース側から要素をドラッグ＆ドロップしたり、式やカスタムスクリプトを記述したりすることも可能です。

![](https://mintcdn.com/cdata-arc/d_uxoDpYg8BiVilE/26.4/images/xmlmap_condition_else.png?fit=max\&auto=format\&n=d_uxoDpYg8BiVilE\&q=85\&s=0a62730269fffba228d2532dadf7a119)

条件付きロジックは、先読み構文を使用して実現することもできます。親要素は、親要素内の値にコンテキストを提供する子要素によって修飾されることがよくあります。このような場合、不要な値を除外するために複数の条件を作成するよりも、先読み構文を使用する方が簡単な場合があります。先読み構文の使い方について、詳しくは[Lookahead](https://docs.arc.cdata.com/26.4/self-hosted/ja/mapping/mapping-node-value-editor.md#lookahead) を参照してください。

## スクリプトモード

右上隅のスクリプトモードトグルをオンにすることで、ArcScript 構文を使用してカスタム条件を指定できます。

### マッピング条件のスクリプトモード

スクリプトモードをON にしたら、ウィンドウにカスタム条件を記述し、上記と同じように右側のペインで以下の操作を行います：

* メッセージのステータスを設定する
* 通知を送信する
* マッピングに *Else* 条件を追加し、条件が満たされない場合にマッピングから要素を除外する

![](https://mintcdn.com/cdata-arc/yfA3o6U6SThtnLN0/26.4/images/edi_mapping_condition_script_mode.png?fit=max\&auto=format\&n=yfA3o6U6SThtnLN0\&q=85\&s=753dee1d52f4e775c2f3768033b7a207)

> [!NOTE]
>
> * エディタは、入力中に条件を検証します。**無効な条件**というメッセージが表示された場合は、構文に何らかの問題があるため解決が必要です。
> * デザイナでレンダリングできないArcScript 条件を作成した場合、デザイナモードに戻ると、Arc はデザイナモードでこの設定をレンダリングできないという警告が表示されます。デザイナモードに切り替えると、既存の設定の変更はすべて失われます。

#### 例

カスタム条件エディタの一般的な使用法の1つは、ソースドキュメントの2つの動的な値を比較することです（1つの動的な値を静的な値と比較するのではなく）。例えば、次のカスタム条件を使用すると、ソースXML 内の2つの値が等しいかどうかを確認できます：

`'[xpath(element1)]' == '[xpath(data/element2)]'`

> [!NOTE]
>
> 上の例にある一重引用符は必須です。

次の例のように、ArcScript フォーマッタを使用して、カスタム条件でブール論理を実行することもできます：

`[xpath(element1) | equals([xpath(data/element2])])]`

この構文では、一重引用符は必要ないことにご注意ください。

次の例は、マッピングの前の段階で設定された[`_map` アイテム](../connectors/xml-map/xml-map-advanced#map-item)とXPath を比較します。`def(0)` フォーマッタは、比較が実行される前にXPath の値が存在しない場合のフォールバックを提供します。

`[xpath(FST/FST01) | def(0) | greaterthan([_map.OverUnderShipQty])]`

> [!NOTE]
>
> この例では、`_map` アイテムはデザイナの右側のソースドロップダウンで使用できないため、スクリプトモードを使用しています。その他の動的な値同士の比較（XPath 同士の比較、またはXPath とメッセージヘッダーや変数との比較など）では、スクリプトモードの代わりに条件エディタデザイナの右側のソースドロップダウンを使用できます。

次の例は、今日の日付を基準にフィルタリングします。日付フィールドが現在の日付を基準とした期間内に収まっているかどうかを確認する必要がある場合に、このパターンを使用します。例えば、`Datetime` が2026-10-05 で今日が2026-09-28 の場合、`datediff('day')` は7 を返すため、条件は満たされます。

`[xpath(Datetime) | datediff('day') | isbetween(0, 15)]`

`datediff('day')` は、日付フィールドと今日の日付との差を日数で返します。未来の日付では正の値、過去の日付では負の値になります。`isbetween(0, 15)` は両端の値を含むため、この条件は今日から15日後までに一致し、過去の日付の負の値は範囲外となります。

ArcScript のすべてのフォーマッタの詳細については、[フォーマッタ](https://docs.arc.cdata.com/26.4/self-hosted/ja/scripting/value-formatters/formatters.md)を参照してください。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.