架构支持级别

本部分介绍架构支持级别的详细信息。

架构直接支持以下各项:

  • 元素序列。
  • 元素类型的派生。
  • 元素的简单选择 (映射到标记联合) 的元素。
  • 由 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。

显示 XSD 类型和蓝宝石数据类型之间的映射的表。