共用方式為


架構支援層級

本節涵蓋架構支援層級的詳細資料。

架構直接支援下列專案:

  • 元素序列。
  • 專案類型的衍生。
  • 元素的簡單選擇 (對應至標記聯集) 的專案。
  • 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。

表格顯示 XSD 類型與一個類型之間的對應。