架構支援層級
本節涵蓋架構支援層級的詳細資料。
架構直接支援下列專案:
- 元素序列。
- 專案類型的衍生。
- 元素的簡單選擇 (對應至標記聯集) 的專案。
- XSD / .NET 二進位格式定義的基本類型,包括範圍 (min/max) 。
- 任何元素的簡單支援 (對專案類型) 沒有任何限制。
- 具有預設值的選擇性元素和屬性。
- 使用範圍 (最小值/最大值) 重複專案。
- Nillable 元素。
架構不支援下列直接 (,這表示「後援」行為) :
- 使用者定義的基本類型。
- 更複雜的選擇。
- 拒絕未知的屬性。
- 來回行程未知的屬性。
- 任何元素的更複雜的支援。
- all 建構。
- Key/keyref。
以下是不同架構元件支援的詳細明細。 它與 WCF 中的資料合約比較,因為功能相似度。 將會說明差異。
一般而言,針對後援行為:
- 屬性會遞補為WS_STRING;
- 元素內容會回復為WS_XML_BUFFER。
- complexType 會支援結構,其中包含WS_XML_BUFFER欄位。
- 簡單類型會受到WS_STRING的支援。
wsutil 會針對目前未完全支援的架構元件產生警告。 應用程式可能需要對這些元件執行其他驗證。 加班 wsutil 可以改善,以處理目前在執行時間支援的某些功能,例如預設值支援。 wsutil 也可以與序列化一起改善,以支援其他功能,例如抽象。 不支援的架構元件數目可以隨著時間減少。
整體架構檔
可能會影響架構中內嵌定義的全域定義。 這些是適用于架構中所有定義的全域屬性。
<xs:schema > 屬性
- attributeFromDefault 忽略。
- blockDefault 忽略。
- elementFormDefault 忽略。 這與 dataContract 不同,因為執行時間支援不合格的元素。
- finalDefault 忽略。 沒有最終概念的 C 語言支援。
- id 忽略。
- targetNamespace 支援並對應至服務命名空間。
- 忽略版本。
<xs:schema > contents
- 包含支援;wsutil 需要所有必要的定義,才能在編譯期間作為輸入檔使用。
- 重新定義忽略。 wsutil 不支援此功能。
- 匯入支援;wsutil 需要所有必要的定義,才能在編譯期間作為輸入檔使用。
- simpleType Supported - 請參閱下方的簡單類型一節。
- complexType 支援 - 請參閱 'complexType' 一節
- group Ignored。
- attributeGroup 已忽略。
- 支援的專案;對應至全域元素定義。
- 屬性支援;對應至全域屬性定義。
- 忽略標記法
複雜類型
以 xs:complexType > 表示 < 的複雜類型可以是簡單類型或複雜類型的限制、簡單類型、陣列或結構的延伸。 請注意,在簡單型別的延伸中,沒有任何繼承和 xsi:type 支援。
<xs:complexType > 屬性
- abstract 產生不支援功能的相關警告,不會變更程式碼產生。
- 封鎖 產生不支援功能的相關警告,不會變更程式碼產生。
- final 產生不支援功能的相關警告,不會變更程式碼產生。
- id 忽略。
- 混合 產生有關不支援功能的警告,如果為 true,則後援至結構,WS_XML_BUFFER。
- name 支援並對應至結構類型名稱。
<xs:complexType > 內容
這是 結構的型別定義。 不支援 complexContent 限制。
- complexContent 支援複雜內容延伸模組。 對應至結構繼承。
- group 目前使用 WS_XML_BUFFER 欄位後援至 結構。 可以根據下層的物件來支援。
- 支援為等位的選項。 資料合約不支援此功能。
- 序列支援 - 對應至結構的欄位
- 屬性支援,但有一個例外狀況為 「禁止」。 如果「禁止」,請回溯至具有WS_XML_BUFFER結構。
- attributeGroup 支援 - 對應至屬性序列
- anyAttribute 忽略
- AttributeGroupRef Supported - 對應至屬性序列。
- GroupRef 目前使用 WS_XML_BUFFER 欄位回溯結構。 您可以根據下列群組支援。
- 任何支援的 對應至 XML_BUFFER
- (空白) 支援的對應至未產生結構之空結構描述。
複雜型別中的 <xs:sequence>:內容
wsutil 僅完全支援 minOccurs = 1 和 maxOccurs = 1 序列;否則,複雜類型目前會支援WS_XML_BUFFER。 它可支援為結構的陣列。
- 支援的專案;每個實例都會對應至 結構中的欄位。
- 群組後援;complexType 會回復為 WS_XML_BUFFER。
- 所有後援;complexType 會回復為 WS_XML_BUFFER。
- 支援的選項;對應至等位欄位。
- 時序後援;complexType 會回復為 WS_XML_BUFFER。
- 任何支援的;對應至XML_BUFFER。
- (支援的空白) ;如果沒有任何屬性,complexType 可以是空的結構。
元素
<xs:element > 可能會在三個內容中發生。
- 它可能發生在 < xs:sequence > 內,描述一般結構的欄位。 在此情況下,maxOccurs 屬性必須是 1。 如果 minOccurs 為 0,則欄位為選擇性。
- 它可能發生在 < xs:sequence > 中,描述陣列的欄位。 在此情況下,maxOccurs 屬性必須大於 1 或「未系結」。
- 它可能會在 xs:schema > 中 < 以全域元素描述的形式發生。
<xs:sequence > 或 < xs:choice > 內的 < xs:element > 作為結構中的欄位
- ref Supported;已解析為全域專案的參考。
- 名稱 支援,對應至功能變數名稱。
- 類型 支援,對應至欄位類型。 如需詳細資訊,請參閱。 如果未指定 (,而且元素不包含匿名型別) ,則會假設 xs:anyType。
- 封鎖 產生不支援功能的警告,不變更程式碼產生。
- 預設 產生有關不支援功能的警告,不會變更程式碼產生。
- 已修正針對不支援的功能產生警告,不會變更程式碼產生。
- 表單已忽略。 我們的序列化層同時支援限定和不合格的形式。
- id 忽略。
- maxOccurs 會對應至等於 1 的單一資料欄位。 如果 maxOccurs 大於 1,它會對應至陣列欄位 (重複專案) 。
- minOccurs if 0, the field options is set to FIELD_OPTIONAL, if nillable is not set.
- nillable 欄位為 nillable。 如需詳細資訊 ,請參閱序列化 。
<xs:element > 作為全域元素:屬性
minOccurs 和 maxOccurs 屬性無效,因為全域元素描述無效。 應用程式可以直接在序列化層或通道層中使用產生的專案描述。
- abstract 產生不支援功能的相關警告,不變更程式碼產生。
- 封鎖 產生不支援功能的警告,不變更程式碼產生。
- 預設 產生有關不支援功能的警告,不會變更程式碼產生。
- final 產生有關不支援功能的警告,不會變更程式碼產生。
- 已修正針對不支援的功能產生警告,不會變更程式碼產生。
- id 忽略。
- name Supported- 對應至全域專案描述的名稱,而且它是指定時匿名型別的基底。
- nillable Ignored-application 需要以右旗標呼叫。
- 如果已設定,則 substitutionGroup 會後援為結構,WS_XML_BUFFER。 wsutil 不支援替代群組。
- 類型 支援,並對應至專案的類型。
<xs:element > 作為全域元素:內容
- 支援 simpleType;會對應至類型定義。
- 支援 complexType;會對應至複雜類型。
- unique 產生不支援功能的警告,不會變更程式碼產生。 wsutil 不支援元素條件約束。
- key 產生有關不支援功能的警告,不變更程式碼產生。 wsutil 不支援元素條件約束。
- keyref 產生有關不支援功能的警告,不會變更程式碼產生。 wsutil 不支援元素條件約束。
- (支援空白) ;沒有類型規格的 元素會被視為 xs:anyType。
簡單型別
<xs:simpleType > 屬性
- 最後產生有關不支援功能的警告,不會變更程式碼產生。
- 忽略識別碼
- 支援的名稱,對應至類型名稱。
<xs:simpleType > 內容
- 支援的限制,對應至列舉類型或範圍。 See "xs:simpleType restrictions" section.
- 列出 產生不支援功能的警告,後援至XML_BUFFER。
- 聯集 產生不支援功能的警告,後援至XML_BUFFER。
簡單類型限制
整數型別和字串類型允許特定 Facet 允許範圍和列舉支援。
列舉支援
<字串基底類型的 xs:enumeration > 簡單類型限制會被視為列舉類型。 在此情況下,Base 屬性必須是字串類型。 在列舉案例中,會忽略所有其他 Facet。
簡單類型支援的範圍
某些 Facet 在簡單類型中受到支援,可有效支援類型上允許的範圍。 以下是整數型別和浮點數/雙精度浮點數類型的限制。 具有其他 Facet 的簡單類型會支援WS_STRING類型
- minExclusive 支援
- minInclusive 支援
- maxExclusive 支援
- maxInclusive 支援
- totalDigits 產生有關不支援功能的警告,不會變更程式碼產生。
- fractionDigits 產生有關不支援功能的警告,不會變更程式碼產生。
- length 產生不支援功能的相關警告,不變更程式碼產生。
- minLength 針對不支援的功能產生警告,不會變更程式碼產生。
- maxLength 針對不支援的功能產生警告,不會變更程式碼產生。
- 列舉 產生不支援功能的相關警告,不變更程式碼產生。
- whiteSpace 產生不支援功能的相關警告,不變更程式碼產生。
- 模式 產生有關不支援功能的警告,不變更程式碼產生。
- (支援的空白) 。
目前不支援 string 上的 minLength 和 maxLength,但這是支援所需的功能。
繼承
Wsutil 支援複雜類型的繼承,也就是結構可以繼承自另一個結構,類似于 C++ 中的介面繼承。 這會透過 < xs:complexContentExtension > 來完成。 <支援 xs:simpleContentExtension > ,但會以基底類型作為第一個欄位而非類型繼承的一般結構產生。
型別/基本對應
從 XML 中的 NCName 進行轉譯時,必須正規化識別碼。 字串為 nillable;指標類型為 nillable;整數類型和 float/double 是 nillable,且 defaultValue 設定為 0。