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

# 使用條件編輯器

> 如何使用知行之橋中的條件編輯器向對映中的目標節點新增條件邏輯。

**條件對映編輯器**支援向目標節點新增條件，以便僅在條件為真時它們才包含在輸出文件中。該編輯器還允許根據源的值設定目標節點的值。可以透過新增單個規則和/或規則組來構建複雜的條件，然後指定滿足條件時對映應採取的操作。

要開啟編輯器，請將滑鼠懸停在目標文件中的節點上，然後單擊過濾器 ![filter](https://mintcdn.com/qiao/cAp6sdkg0SyWJqZM/26.4/images/xmlmap_condition_icon.png?fit=max\&auto=format\&n=cAp6sdkg0SyWJqZM\&q=85\&s=c7c40d432c0782b5b704db54321febd6) 圖示。

![](https://mintcdn.com/qiao/92y00drsn6lqgU2C/26.4/images/edi_condition_editor.png?fit=max\&auto=format\&n=92y00drsn6lqgU2C\&q=85\&s=8551bf65703260ea596e4e7106a7ce0f)

為條件命名，然後單擊**新增規則**或**新增組**。**值**欄位會預先填入來源元素的 XPath。如果需要選擇其他來源值，請按一下該欄位以開啟下拉式清單。

![](https://mintcdn.com/qiao/92y00drsn6lqgU2C/26.4/images/edi_condition_first_rule.png?fit=max\&auto=format\&n=92y00drsn6lqgU2C\&q=85\&s=174ed586d77162905818f0ce6ff884bd)

構建規則時，請使用下拉功能表進行選擇。可以從以下選項中進行選擇：

* 輸入 XML
  * 值：正在評估的 XPath 處的值
  * 值型別：值的資料型別（字串、數字、日期時間）
  * 出現次數：XPath 在文件中出現的次數
  * 索引：表示正在評估的 Foreach 迴圈當前迭代的索引
* 訊息頭
  * 值：正在評估的訊息頭的值
  * 值型別：值的資料型別（字串、數字、日期時間）
* 變數
  * 值：被評估變數的值
  * 值型別：值的資料型別（字串、數字、日期時間）

每條規則的右側（運算子之後）都有自己的來源下拉式清單。除了左側可用的來源之外，右側還包含僅在右側可用的**靜態值**：

* **靜態值**（預設）：用於輸入字面比較值的自由文字輸入方塊。僅在右側可用。
* **輸入 XML**
* **訊息頭**
* **變數**

右側下拉式清單有以下限制：

* 當運算子為**包含**、**開頭是**、**結尾是**、**符合 glob**、**符合規則運算式**、**在清單中**或**不在清單中**時，或者當左側類型為**索引**或**出現次數**時，來源下拉式清單會鎖定為**靜態值**
* 當運算子不需要值（**為空**、**不為空**、**為 null** 和**不為 null**）時，右側會完全隱藏
* 當左側類型為**值型別**時，右側下拉式清單會顯示一組固定選項：**字串**、**數字**或**日期時間**

為條件選擇 XPath 時，編輯器會顯示文件的樹形表示形式，以便可以輕鬆找到所需的 XPath，如下圖所示。

![](https://mintcdn.com/qiao/cAp6sdkg0SyWJqZM/26.4/images/xmlmap_condition_select.png?fit=max\&auto=format\&n=cAp6sdkg0SyWJqZM\&q=85\&s=64ab5de6d62e75c48edc21e94d211d58)

可以對規則和組重新排序。單擊手柄 ![handle](https://mintcdn.com/qiao/cAp6sdkg0SyWJqZM/26.4/images/xmlmap_condition_handle.png?fit=max\&auto=format\&n=cAp6sdkg0SyWJqZM\&q=85\&s=8557e0a3f070ada9298f149e9ab28cbc) 並將物件拖動到新位置。

完成條件定義後，使用右側窗格指定滿足條件時應發生的情況。

![](https://mintcdn.com/qiao/cAp6sdkg0SyWJqZM/26.4/images/xmlmap_condition_rightside.png?fit=max\&auto=format\&n=cAp6sdkg0SyWJqZM\&q=85\&s=406f3b1b1674767a414a6254ae83442d)

選擇以下狀態：

* 成功
* 警告
* 錯誤

選中**傳送通知**並填寫**傳送給**和**主題**欄位，以傳送有關條件狀態的電子郵件。

> [!NOTE]
>
> 單擊**配置警示**會在新的瀏覽器索引標籤中開啟[通知](https://docs.kasoftware.com/26.4/self-hosted/zh-Hant/getting-started/administration/settings/alerts.md)頁面，可以在其中設定電子郵件設定。如果這些設定不正確，電子郵件通知將失敗。

最後，使用右側窗格的 **Else** 部分來指定當條件不滿足時應該發生什麼。

使用 **否則，將操作設定為** 下拉式清單選擇是否：

* **排除元素**，從對映中完全排除元素
* **對映值**，無論如何都對映該值
* **分配不同的值**，分配不同的值（儲存條件後定義為運算式或自定義指令碼）

狀態和通知選項的工作方式與頂部部分相同。

儲存條件時，它會出現在對映編輯器中，並且其行為方式與對映中任何其他葉節點相同。可以從源端拖放元素，或為其編寫運算式或自定義指令碼。

![](https://mintcdn.com/qiao/cAp6sdkg0SyWJqZM/26.4/images/xmlmap_condition_else.png?fit=max\&auto=format\&n=cAp6sdkg0SyWJqZM\&q=85\&s=12ad3644f796b53faa895fb908b85960)

條件邏輯也可以使用前瞻語法來實現。父元素通常由子元素限定，子元素會為父元素中的值提供上下文。在這些情況下，使用前瞻語法可能比建立多個條件來排除不需要的值更容易。有關使用前瞻語法的更多詳細資訊，請參閱[前瞻](https://docs.kasoftware.com/26.4/self-hosted/zh-Hant/mapping/mapping-node-value-editor.md#前瞻)。

## 指令碼模式

可以使用 ArcScript 語法來指定自定義條件，只需開啟右上角的“指令碼模式”開關即可。

### 對映條件中的指令碼模式

開啟指令碼模式後，使用視窗編寫自定義條件，然後按照上述方法使用右側窗格：

* 設定訊息的狀態
* 傳送通知
* 將 *Else* 條件新增到對映中，包括在不滿足條件時從對映中排除元素

![](https://mintcdn.com/qiao/kYLwR1iZrGqYINH1/26.4/images/edi_mapping_condition_script_mode.png?fit=max\&auto=format\&n=kYLwR1iZrGqYINH1\&q=85\&s=2858ae1bdc8a0ac1a703045aa7e3f251)

> [!NOTE]
>
> * 編輯器會在輸入時驗證條件。如果看到**無效條件**訊息，則表示存在某種語法問題，需要解決。
> * 如果建立的 ArcScript 條件無法在設計器中呈現，則當切換回設計器模式時，系統會警告 知行之橋 無法在設計器模式下呈現此配置。如果切換到設計器模式，將丟失對現有配置的所有更改。

#### 範例

自定義條件編輯器的一種常見用途是比較源文件中的兩個動態值（而不是將單個動態值與靜態值進行比較）。例如，可以使用以下自定義條件來檢視源 XML 中的兩個值是否相等：

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

> [!NOTE]
>
> 上例中的單引號是必需的。

還可以使用 ArcScript 格式化器在自定義條件中執行布林邏輯，如下例所示：

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

請注意，此語法不需要單引號。

以下範例將 XPath 與對映中先前設定的 [`_map` 變數](../connectors/xml-map/xml-map-advanced#map-項)進行比較。`def(0)` 格式化器會在比較執行之前，為缺少的 XPath 值提供後援值。

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

> [!NOTE]
>
> 此範例使用指令碼模式，因為設計器右側的來源下拉式清單中無法使用 `_map` 變數。對於其他動態值之間的比較（例如 XPath 與 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.kasoftware.com/26.4/self-hosted/zh-Hant/scripting/value-formatters/formatters.md)。


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