本主题专门介绍一项旧有技术。现在应通过使用以下链接来创建 XML Web 服务和 XML Web 服务客户端: Windows Communication Foundation.
.NET Framework 为 <group> 元素提供部分绑定支持。
当从 XML 架构文档生成源代码时,Xsd.exe 会直接将每个 <group> 引用扩展为与包含该引用的 <complexType> 定义相对应的类。
说明
<group> 元素使架构设计师可以全局定义一个元素组,然后通过引用在任意数目的复杂类型中重用该组。
.NET Framework 没有用于在代码中表示元素组的术语。当从 XML 架构文档生成源代码时,Xsd.exe 会通过 ref 特性将每个 <group> 引用直接扩展为与包含该引用的 <complexType> 定义相对应的类。对于每个元素,都生成一个公共字段。
如果开发人员希望避免直接在多个类中定义同一组与元素绑定的字段或属性,则可以手动创建一个基类,并让那些表示 XML 架构复杂类型的类从这个基类继承。
XML 架构定义语言允许 <group> 引用与值大于 1
的 maxOccurs 特性一起出现。若要正确导入含有出现多次的组的架构,请对 Xsd.exe 使用 /order 命令行选项。(当从这类 XML 架构生成源代码时,默认情况下,Xsd.exe 会错误地为组中的每个元素生成一个数组。启用 /order 选项后,将为组中的所有成员生成一个数组,同时应用多个 XmlElementAttribute 特性,每个特性分别应用于组中的一个成员。)
Example
输入 XML 架构文档:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="qualified">
<xsd:group name="version">
<xsd:sequence>
<xsd:element name="changeNumber" type="xsd:int"/>
<xsd:element name="instanceId" type="xsd:string"/>
</xsd:sequence>
</xsd:group>
<xsd:complexType name="keyInfo">
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:group ref="version" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="key" type="keyInfo"/>
</xsd:schema>
基于前面的 XML 架构文档生成的 C# 类:
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute("key", Namespace="http://example.org/", IsNullable=false)]
public class keyInfo {
public string key;
public int changeNumber;
public string instanceId;
}
基于通过前面的 C# 源代码编译得到的程序集生成的 XML 架构复杂类型:
<xs:complexType name="keyInfo">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="key" type="xs:string" />
<xs:element minOccurs="1" maxOccurs="1" name="changeNumber" type="xs:int" />
<xs:element minOccurs="0" maxOccurs="1" name="instanceId" type="xs:string" />
</xs:sequence>
</xs:complexType>
可能的特性 | 绑定支持 |
---|---|
id |
Xsd.exe 实用工具会忽略旨在提供唯一标识符的 id 特性。 |
maxOccurs |
对于所含的许多 maxOccurs 都大于 请参见 maxOccurs 特性绑定支持 特性。 |
minOccurs |
当从 XML 架构文档生成源代码时,Xsd.exe 会忽略应用于 <group> 元素的 minOccurs 特性。 请参见 minOccurs 特性绑定支持 特性。 |
name |
由于 Xsd.exe 实用工具以匿名方式扩展 <attributeGroup> 元素的内容,因此该特性组的名称会被忽略。 请参见 name 特性绑定支持 特性。 |
ref |
.NET Framework 没有用来在代码中表示组的用语。当从 XML 架构文档生成源代码时,Xsd.exe 会将每个 ref 特性对全局声明的组的 <group> 引用直接扩展为与包含该引用的 <complexType> 定义相对应的类。对于 <group> 中的每个元素,都生成一个公共字段。 |
可能的父元素:<choice>、<complexType>、<extension>、<redefine>、<restriction>、<schema>、<sequence>
可能的子元素: <all>、<annotation>、<choice>、<sequence>