架构支持级别
本部分介绍架构支持级别的详细信息。
架构直接支持以下各项:
- 元素序列。
- 元素类型的派生。
- 元素的简单选择 (映射到标记联合) 的元素。
- 由 XSD/.NET 二进制格式定义的基本类型,包括最小/最大) 范围 (。
- 对任何元素的简单支持 (元素) 的类型没有限制。
- 具有默认值的可选元素和属性。
- 范围 (最小/最大) 的重复元素。
- 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 已忽略。 对于 final 的概念,没有 C 语言支持。
- id 已忽略。
- targetNamespace 支持并映射到服务命名空间。
- 版本已忽略。
<xs:schema> 内容
- 包括支持;wsutil 要求在编译期间以输入文件的形式提供所有必要的定义。
- 重新定义 Ignored。 wsutil 不支持此功能。
- 支持导入;wsutil 要求在编译期间以输入文件的形式提供所有必要的定义。
- 支持 simpleType - 请参阅下面的简单类型部分。
- 支持 complexType - 请参阅“complexType”部分
- 组已忽略。
- attributeGroup 已忽略。
- 元素支持;映射到全局元素定义。
- 属性支持;映射到全局属性定义。
- 已忽略表示法
复杂类型
由 <xs:complexType 表示的复杂类型>可以是简单类型或复杂类型的限制、简单类型、数组或结构的扩展。 请注意,在简单类型的扩展中,没有继承和 xsi:type 支持。
<xs:complexType> 属性
- abstract 生成有关不支持的功能的警告,对代码生成没有更改。
- block 生成有关不支持的功能的警告,对代码生成没有更改。
- final 生成有关不受支持的功能的警告,对代码生成没有更改。
- id 已忽略。
- 混合 生成有关不支持的功能的警告,如果为 true,则回退到具有 WS_XML_BUFFER 的结构。
- name 支持并映射到结构类型名称。
<xs:complexType> 内容
这是 结构的类型定义。 不支持 complexContent 限制。
- complexContent 支持复杂内容扩展。 映射到结构继承。
- 组 当前回退到具有WS_XML_BUFFER字段的结构。 可以根据下面的粒子支持。
- 选项支持为联合。 数据协定不支持此操作。
- 序列支持 - 映射到结构的字段
- 属性受支持,但“禁止”除外。 如果“禁止”,则回退到具有WS_XML_BUFFER的结构。
- 支持 attributeGroup - 映射到属性序列
- anyAttribute 已忽略
- AttributeGroupRef 支持 - 映射到属性序列。
- 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 支持;解析为对全局元素的引用。
- 名称 支持,映射到字段名称。
- 类型 支持,映射到字段类型。 有关详细信息,请参阅“类型映射”。 如果未 (指定,并且元素不包含匿名类型) ,则假定为 xs:anyType。
- 阻止 生成有关不支持的功能的警告,对代码生成没有更改。
- 默认 生成有关不受支持的功能的警告,对代码生成没有更改。
- 修复了生成有关不受支持的功能的警告,对代码生成没有更改。
- 窗体已忽略。 我们的序列化层支持限定和未限定形式。
- id 已忽略。
- maxOccurs 如果等于 1,则映射到单个数据字段。 如果 maxOccurs 大于 1,它将映射到重复元素 (数组字段) 。
- minOccurs 如果为 0,则字段选项设置为 FIELD_OPTIONAL,如果未设置 nillable。
- nillable 字段为 nillable。 有关更多详细信息 ,请参阅序列化 。
<xs:element> as global element: attributes
minOccurs 和 maxOccurs 属性作为全局元素说明无效。 应用程序可以直接在序列化层或通道层中使用生成的元素说明。
- abstract 生成有关不受支持的功能的警告,不会更改代码生成。
- 阻止 生成有关不支持的功能的警告,对代码生成没有更改。
- 默认 生成有关不受支持的功能的警告,对代码生成没有更改。
- 最终 生成有关不支持的功能的警告,对代码生成没有更改。
- 修复了生成有关不受支持的功能的警告,对代码生成没有更改。
- id 已忽略。
- name Supported - 映射到全局元素说明的名称,在指定时,它是匿名类型的基数。
- nillable Ignored-application 需要使用右标志调用。
- substitutionGroup 回退到结构(如果已设置WS_XML_BUFFER)。 wsutil 不支持替换组。
- 类型 支持并映射到 元素的类型。
<xs:element> as global element: contents
- simpleType 支持;映射到类型定义。
- 支持 complexType;映射到复杂类型。
- 唯一 生成有关不支持的功能的警告,不会更改代码生成。 wsutil 不支持元素约束。
- 键 生成有关不支持的功能的警告,对代码生成没有更改。 wsutil 不支持元素约束。
- keyref 生成有关不受支持的功能的警告,不会更改代码生成。 wsutil 不支持元素约束。
- 支持 (空白) ;没有类型规范的 元素被视为 xs:anyType。
简单类型
<xs:simpleType> 属性
- 最终生成有关不受支持的功能的警告,对代码生成没有更改。
- ID 已忽略
- 名称支持,映射到类型名称。
<xs:simpleType> 内容
- 支持限制,映射到枚举类型或范围。 请参阅“xs:simpleType 限制”部分。
- 列出 生成有关不支持的功能的警告,回退到XML_BUFFER。
- 联合 生成有关不受支持的功能的警告,回退到XML_BUFFER。
简单类型限制
整数类型和字符串类型中允许某些方面,以允许范围和枚举支持。
枚举支持
<xs:枚举> 字符串基类型的简单类型限制被视为枚举类型。 在这种情况下,Base 属性必须是字符串类型。 在枚举情况下,将忽略所有其他方面。
简单类型支持的范围
某些方面支持简单类型支持类型上允许的有效范围。 以下是整型类型和浮点数/双精度类型的限制。 具有其他方面的简单类型支持WS_STRING类型
- minExclusive Supported
- minInclusive 支持
- maxExclusive 支持
- maxInclusive 支持
- totalDigits 生成有关不受支持的功能的警告,不会更改代码生成。
- fractionDigits 生成有关不支持的功能的警告,不会更改代码生成。
- length 生成有关不受支持的功能的警告,不会更改代码生成。
- minLength 生成有关不受支持的功能的警告,不会更改代码生成。
- maxLength 生成有关不受支持的功能的警告,不会更改代码生成。
- 枚举 生成有关不受支持的功能的警告,对代码生成没有更改。
- whiteSpace 生成有关不受支持的功能的警告,不会更改代码生成。
- 模式 生成有关不受支持的功能的警告,对代码生成没有更改。
- (空白) 受支持。
字符串上的 minLength 和 maxLength 目前不受支持,但这是一项需要支持的功能。
继承
Wsutil 支持复杂类型的继承,即结构可以从另一个结构继承,类似于 C++ 中的接口继承。 这是通过 <xs:complexContentExtension> 完成的。 <xs:simpleContentExtension> 受支持,但生成为普通结构,基本类型作为第一个字段,而不是类型继承。
类型/基元映射
从 XML 中的 NCName 转换时,需要规范化标识符。 字符串为 nillable;指针类型为 nillable;整型类型和 float/double 为 nillable,defaultValue 设置为 0。