> ## 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.

# 使用條件編輯器

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

export const siteNameShort = "知行之橋";

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

要開啟編輯器，請將滑鼠懸停在目標文件中的節點上，然後單擊過濾器 <img src="https://mintcdn.com/qiao/BoZrJ8_ctEN6h_9z/public/images/xmlmap_condition_icon.png?fit=max&auto=format&n=BoZrJ8_ctEN6h_9z&q=85&s=2bc7f9b7370abde6d59964f864bd318c" alt="filter" noZoom style={{ display: "inline-block", verticalAlign: "middle", height: "0.9em", margin: 0 }} width="25" height="24" data-path="public/images/xmlmap_condition_icon.png" /> 圖示。

<img src="https://mintcdn.com/qiao/Pa-LScG1ebkabWPi/public/images/edi_condition_editor.png?fit=max&auto=format&n=Pa-LScG1ebkabWPi&q=85&s=b0008ff19484b4f4024a1fdefca5f959" width="800" data-path="public/images/edi_condition_editor.png" />

為條件命名，然後單擊**新增規則**或**新增組**。

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

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

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

<img src="https://mintcdn.com/qiao/BoZrJ8_ctEN6h_9z/public/images/xmlmap_condition_select.png?fit=max&auto=format&n=BoZrJ8_ctEN6h_9z&q=85&s=5930984f0d0b7d6ff002865a3ee71a5f" width="800" data-path="public/images/xmlmap_condition_select.png" />

可以對規則和組重新排序。單擊手柄 <img src="https://mintcdn.com/qiao/BoZrJ8_ctEN6h_9z/public/images/xmlmap_condition_handle.png?fit=max&auto=format&n=BoZrJ8_ctEN6h_9z&q=85&s=ab7c7a9c8df56171a20438f674bb6c25" alt="handle" noZoom style={{ display: "inline-block", verticalAlign: "middle", height: "0.9em", margin: 0 }} width="20" height="21" data-path="public/images/xmlmap_condition_handle.png" /> 並將物件拖動到新位置。

完成條件定義後，使用運算子右側的文字方塊指定滿足條件時應發生的情況。

選擇以下狀態：

* 成功
* 警告
* 錯誤

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

<Note>單擊**配置警示**開啟新的瀏覽器索引標籤，可以在**設定**頁面的**警示**索引標籤上設定**電子郵件設定**。如果這些配置不正確，電子郵件通知將失敗。</Note>

最後，使用文字方塊的 **Else** 部分來指定當條件不滿足時應該發生什麼。

<img src="https://mintcdn.com/qiao/BoZrJ8_ctEN6h_9z/public/images/xmlmap_condition_rightside.png?fit=max&auto=format&n=BoZrJ8_ctEN6h_9z&q=85&s=7dbaae79832ace86cf7c5e9d71b58651" width="400" data-path="public/images/xmlmap_condition_rightside.png" />

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

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

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

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

<img src="https://mintcdn.com/qiao/BoZrJ8_ctEN6h_9z/public/images/xmlmap_condition_else.png?fit=max&auto=format&n=BoZrJ8_ctEN6h_9z&q=85&s=4ca93028c9aa66a8d7806294c4ebb8d9" width="400" data-path="public/images/xmlmap_condition_else.png" />

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

## 指令碼模式

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

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

開啟指令碼模式後，使用視窗編寫自定義條件，然後使用頁面右側的選項，按照上述方法操作：

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

<img src="https://mintcdn.com/qiao/Pa-LScG1ebkabWPi/public/images/edi_mapping_condition_script_mode.png?fit=max&auto=format&n=Pa-LScG1ebkabWPi&q=85&s=1852ec09f9b44aa1c1e56bdee5504e47" width="800" data-path="public/images/edi_mapping_condition_script_mode.png" />

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

自定義條件編輯器的一種常見用途是比較源文件中的兩個動態值（而不是將單個動態值與靜態值進行比較）。

例如，可以使用以下自定義條件來檢視源 XML 中的兩個值是否相等：

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

<Note>上例中的單引號是必需的。</Note>

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

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

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

有關所有 ArcScript 格式化器的詳細資訊，請參閱[格式化器](../scripting/value-formatters/formatters)。
