Group 要素のバインディング サポート
このトピックの対象は、レガシ テクノロジに特定されています。XML Web サービスと XML Web サービス クライアントは以下を使用して作成してください。 Windows Communication Foundation.
.NET Framework では、<group> 要素のバインディングを一部サポートしています。
XML スキーマ ドキュメントからソース コードを生成するとき、Xsd.exe は、各 <group> 参照を、その参照を含んでいる <complexType> 定義に対応するクラスに直接展開します。
説明
<group> 要素を使用すると、スキーマの設計で、要素のグループをグローバルに定義でき、任意の数の複合型で参照経由でそのグループを再利用できます。
.NET Framework には、コードで要素のグループを表現する形式がありません。XML スキーマ ドキュメントからソース コードを生成するとき、Xsd.exe は、代わりに、ref 属性によって、各 <group> 参照を、その参照を含んでいる <complexType> 定義に対応するクラスに直接展開します。各要素に対して、パブリック フィールドが 1 つ作成されます。
要素バインディングのフィールドまたはプロパティの同じグループを複数のクラスで直接定義しないようにするには、手動で基本クラスを作成し、その基本クラスから継承された XML スキーマ複合型を表すクラスを用意する方法があります。
XML スキーマ定義言語では、1
より大きい maxOccurs 属性と一緒に <group> 参照を使用できます。複数のグループが含まれるスキーマを正常にインポートするには、Xsd.exe で /order コマンド ライン オプションを使用します。このような XML スキーマからソース コードを生成する場合、既定では、Xsd.exe は、グループ内の各要素に対して正しく配列を生成できません。/order オプションを指定した場合は、グループのすべてのメンバーを格納する 1 つの配列が生成され、そのそれぞれのグループ メンバーに 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 |
XML スキーマ ドキュメントからソース コードを生成するときに MaxOccurs 属性のバインディング サポート 属性を参照してください。 |
minOccurs |
XML スキーマ ドキュメントからソース コードを生成する場合、<group> 要素に適用されているときは、Xsd.exe では、minOccurs 属性が無視されます。 MinOccurs 属性のバインディング サポート 属性を参照してください。 |
name |
Xsd.exe ユーティリティでは、<attributeGroup> 要素のコンテンツが匿名で展開されるため、属性のグループ名は無視されます。 Name 属性のバインディング サポート 属性を参照してください。 |
ref |
.NET Framework には、コードでグループを表現する形式がありません。XML スキーマ ドキュメントからソース コードを生成するとき、Xsd.exe は代わりに、各 ref 属性の、グローバル宣言されたグループへの <group> 参照を、その参照を含んでいる <complexType> 定義に対応するクラスに直接展開します。<group> の各要素に対して、パブリック フィールドが 1 つ作成されます。 |
使用可能な親要素 : <choice>、<complexType>、<extension>、<redefine>、<restriction>、<schema>、<sequence>
使用可能な子要素 : <all>、<annotation>、<choice>、<sequence>