程式碼清單管理
概觀
您可以使用 XSD 指定對項目或屬性有效的一組特定值。 此功能可使用 列舉專案 。 當您依限制衍生 Field 元素 或 欄位屬性 節點的資料類型時, [限制 ] 類別中可供您使用的屬性之一是 Enumeration 屬性。 使用這個屬性,您可以開啟 [ 列舉編輯器 ] 對話方塊,您可以在其中輸入應該對實例訊息中對應專案或屬性有效的值。
Microsoft BizTalk Server 提供一種替代且更有效率的方式,來管理您結構描述中的列舉,稱之為程式碼清單。 程式碼清單使用 Microsoft Access 資料庫儲存您各種列舉的選擇,可讓您以更集中的方式管理它們。 此外,如果您需要使用的列舉值是由非直覺式數值代碼所組成,則必須使用 Enumeration 屬性在該表單中輸入,您在 Access 資料庫中建立的資料表會與程式代碼清單功能搭配使用,包括這些數值的文字描述。 文字描述會在 [ CodeList ] 對話方塊中使用,而不是更模糊的數值對等專案。
使用程式代碼清單
若要使用程式碼清單功能,您必須執行數個不同的步驟,包括:
您必須建立含有適當具名資料表 (含有所需的資料行) 的 Access 資料庫,並且在其中填入值。
資料表的名稱是架構節點的Standard和Standard Version屬性的組合,並以底線 (_) 字元分隔。 例如,如果您已將架構節點的Standard屬性設定為 XML,而Standard Version屬性設定為 MyVersion1,CodeList Database屬性指定的 Access 資料庫必須具有名為 XML_MyVersion1 的資料表。
如需這些屬性的詳細資訊,請參閱 UI 指引和開發人員 API 命名空間參考。
此資料表必須有三個資料行,一般命名為 [Code]、[Value] 及 [Desc]。 第一個資料行會識別彼此相關的資料列,其中每個這類資料列都會提供其中一個列舉選項,這些選項可能會允許對應至所選 Field 元素 或 Field Attribute 節點的資料。 第一個資料行中值相同的所有資料列會構成一個群組。 這些值通常是整數,但也可以是不含空格的任意字串。
資料表中每個資料列的第二和第三個資料行,必須分別設為包含每個可能之列舉值的對應值和文字表示法。
例如,下列要和 [程式碼清單] 功能搭配使用的 Access 資料庫資料表表示法,包含兩組三個相關的列舉值。 第一個資料行中的特定值是任意值,並用來和相關資料列建立關聯。
程式碼 值 Desc 1 13 紅色 1 16 綠色 1 19 藍色 2 1 小型 2 2 中 2 3 大型
您必須正確設定 架構 節點的三個屬性:
CodeList Database屬性必須設定為您建立的 Access 資料庫名稱。
必須設定 Standard 和 Standard Version 屬性,使其與分隔底線 (_) 字元結合時,它們會形成指定 Access 資料庫內適當資料表的名稱。
若要實際針對特定選取的 Field Element 或 Field Attribute 節點使用 Access 資料庫中的值,您必須設定其兩個屬性:
您必須將其 Derived By 屬性設定為 Restriction。 在您執行此步驟之前,將不會啟用您需要設定的其他屬性 CodeList。
您必須在 CodeList 屬性中輸入值,這個屬性對應至第一個資料行中的值, (指定 Access 資料庫中一個或多個資料列的 Code 資料行) 。 此動作會識別您想要對應至選取的 Field Element 或 Field Attribute 節點的列舉值集。
然後,您必須按一下 [CodeList屬性值] 欄位右邊的省略號 (...) 按鈕,才能開啟[CodeList] 對話方塊。 使用此對話方塊中的核取方塊,選取您想要允許做為對應至所選 Field Element 或 Field Attribute 節點之實例訊息資料合法值的值。 您只能選取可用值的子集。 例如,使用上表範例,如果您在 CodeList 屬性中輸入值 1,CodeList 對話方塊將包含 [紅色]、[綠色] 和 [藍色] 選項。 如果您選取 [紅色] 和 [綠色] 核取方塊,且未選取 [藍色] 的核取方塊,則只有先前的色彩會顯示在 XSD 中作為所選 Field Element 或 Field Attribute 節點的有效值。
注意
CodeList和CodeList 資料庫屬性只會在設計階段使用,並且會保存于 XSD 中做為Enumeration屬性的對應設定。 在執行時間,所有值只會針對 Enumeration 屬性進行驗證。
警告
對於指定的 Field 元素 或 Field 屬性 節點,請勿同時使用 Enumeration 屬性和 CodeList 屬性。 使用後一種屬性可能導致以前一種屬性輸入的值遭到覆寫。