restriction 元素绑定支持

本主题专门介绍一项旧有技术。现在应通过使用以下链接来创建 XML Web 服务和 XML Web 服务客户端: Windows Communication Foundation.

.NET Framework 为 <restriction> 元素提供部分绑定支持。

.NET Framework 明确为其提供完全绑定的唯一类型限制是基于字符串的简单类型的枚举。

说明

使用 XML 架构定义语言可以通过扩展和限制从基类型派生新类型。扩展始终用于派生复杂类型。限制既可以用来派生复杂类型,也可以用来派生简单类型,但它通常用于派生简单类型。

尽管 XML 架构类型扩展总是通过 .NET Framework 中的类定义完全表示,但唯一存在绑定的类型限制是通过 XPath simpleType/restriction/enumeration 定位的简单类型枚举。而且,<enumeration> 元素仅在应用于基于字符串的简单类型时才绑定。

对于 simpleType/restriction 元素的其他所有子级(或者当枚举应用于非基于字符串的类型时),下列叙述成立:

  • 当从 XML 架构文档生成源代码时,Xsd.exe 会忽略该限制;它只是生成与基简单类型相对应的 .NET Framework 类型。

  • 在将对象序列化为 XML 以及将 XML 反序列化为对象时,XmlSerializer 类不考虑该限制。

对于复杂类型,如果限制涉及复杂内容(通过判断 XPath complexType/complexContent/restriction),则 Xsd.exe 将生成一个从基类继承的空类。XmlSerializer 类不考虑该限制。Xsd.exe 不通过 XPath complexType/simpleContent/restriction 识别涉及简单内容的限制。

尽管限制只有有限的绑定支持,但它在架构对象模型中有充分的表示。其中,XmlSchemaSimpleTypeRestriction 类表示简单类型限制,XmlSchemaComplexContentRestrictionXmlSchemaSimpleContentRestriction 类则表示两种复杂类型限制。而且,XmlSchemaSimpleTypeRestrictionXmlSchemaSimpleContentRestriction 都有一个 Facets 属性,该属性可以容纳表示 simpleType/restrictionsimpleContent/restriction 的任意子级的对象。

这些类的对象可以用来以编程方式创建架构对象模型,该模型采用 XML 架构规范中提供的任意一种类型限制。此类模型可以序列化为 XML 架构文档,也可以从 XML 架构文档反序列化为此类模型。

另外,XmlValidatingReader 对象可以用来对照使用限制的 XML 架构验证 XML 实例文档。

可能的特性 绑定支持

base

<restriction> 元素需要 base 特性,该特性的值为基数据类型的限定名。

当通过限制定义简单类型时,base 特性的值确定了 Xsd.exe 是否识别该限制。如果 base 为绑定到字符串的 XML 架构数据类型,则 Xsd.exe 将生成 enum 类型。否则,Xsd.exe 将生成绑定到 base 值的 .NET Framework 类型的字段。

有关如何使用 base 特性通过限制定义复杂类型的说明,请参见前面的文本。

id

Xsd.exe 实用工具会忽略旨在提供唯一标识符的 id 特性。

可能的父元素:<complexContent><simpleContent><simpleType>

可能的子元素:<all><annotation><anyAttribute><attribute><attributeGroup><choice><enumeration><fractionDigits><group><length><maxExclusive><maxInclusive><maxLength><minExclusive><minInclusive><minLength><pattern><sequence><simpleType><totalDigits><whiteSpace>

另请参见

参考

XmlSchemaComplexContentRestriction
XmlSchemaSimpleContentRestriction
XmlSchemaSimpleTypeRestriction